From f35787bfd9621e90fe3276f70ad5045cbd7e659d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 26 Aug 2025 19:53:06 +0800 Subject: [PATCH 001/462] add automation idl --- .../loop/apis/observability_trace_service.go | 130 + .../router/coze/loop/apis/coze.loop.apis.go | 12 + .../api/router/coze/loop/apis/middleware.go | 50 + .../apis/observabilitytraceservice/client.go | 48 + .../observabilitytraceservice.go | 288 + .../observability/domain/filter/filter.go | 867 + .../domain/filter/filter_validator.go | 11 + .../observability/domain/filter/k-filter.go | 617 + .../loop/observability/domain/task/k-task.go | 3104 ++++ .../loop/observability/domain/task/task.go | 4345 +++++ .../domain/task/task_validator.go | 106 + .../observabilitytraceservice/client.go | 48 + .../observabilitytraceservice.go | 288 + .../trace/coze.loop.observability.trace.go | 13140 ++++++++++++++-- ...coze.loop.observability.trace_validator.go | 238 + .../trace/k-coze.loop.observability.trace.go | 7948 +++++++++- .../trace/traceservice/client.go | 48 + .../trace/traceservice/traceservice.go | 288 + .../lotrace/local_traceservice.go | 168 + .../coze.loop.observability.trace.thrift | 164 + .../loop/observability/domain/filter.thrift | 22 + .../loop/observability/domain/task.thrift | 100 + 22 files changed, 30422 insertions(+), 1608 deletions(-) create mode 100644 backend/kitex_gen/coze/loop/observability/domain/task/k-task.go create mode 100644 backend/kitex_gen/coze/loop/observability/domain/task/task.go create mode 100644 backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go create mode 100644 idl/thrift/coze/loop/observability/domain/task.thrift diff --git a/backend/api/handler/coze/loop/apis/observability_trace_service.go b/backend/api/handler/coze/loop/apis/observability_trace_service.go index 3faa4a10a..71c674e67 100644 --- a/backend/api/handler/coze/loop/apis/observability_trace_service.go +++ b/backend/api/handler/coze/loop/apis/observability_trace_service.go @@ -9,7 +9,9 @@ import ( "context" "github.com/cloudwego/hertz/pkg/app" + "github.com/cloudwego/hertz/pkg/protocol/consts" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/apis/observabilitytraceservice" + trace "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" ) var observabilityClient observabilitytraceservice.Client @@ -85,3 +87,131 @@ func DeleteManualAnnotation(ctx context.Context, c *app.RequestContext) { func ListAnnotations(ctx context.Context, c *app.RequestContext) { invokeAndRender(ctx, c, observabilityClient.ListAnnotations) } + +// ChangeEvaluatorScore . +// @router /api/observability/v1/annotations/change_eEvaluator_sScore [POST] +func ChangeEvaluatorScore(ctx context.Context, c *app.RequestContext) { + var err error + var req trace.ChangeEvaluatorScoreRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(trace.ChangeEvaluatorScoreResponse) + + c.JSON(consts.StatusOK, resp) +} + +// ListAnnotationEvaluators . +// @router /api/observability/v1/annotations/lis_annotation_evaluators [POST] +func ListAnnotationEvaluators(ctx context.Context, c *app.RequestContext) { + var err error + var req trace.ListAnnotationEvaluatorsRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(trace.ListAnnotationEvaluatorsResponse) + + c.JSON(consts.StatusOK, resp) +} + +// ExtractSpanInfo . +// @router /api/observability/v1/traces/extract_span_info [POST] +func ExtractSpanInfo(ctx context.Context, c *app.RequestContext) { + var err error + var req trace.ExtractSpanInfoRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(trace.ExtractSpanInfoResponse) + + c.JSON(consts.StatusOK, resp) +} + +// CheckTaskName . +// @router /api/observability/v1/tasks/check_name [GET] +func CheckTaskName(ctx context.Context, c *app.RequestContext) { + var err error + var req trace.CheckTaskNameRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(trace.CheckTaskNameResponse) + + c.JSON(consts.StatusOK, resp) +} + +// CreateTask . +// @router /api/observability/v1/tasks [POST] +func CreateTask(ctx context.Context, c *app.RequestContext) { + var err error + var req trace.CreateTaskRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(trace.CreateTaskResponse) + + c.JSON(consts.StatusOK, resp) +} + +// UpdateTask . +// @router /api/observability/v1/tasks/:task_id [PUT] +func UpdateTask(ctx context.Context, c *app.RequestContext) { + var err error + var req trace.UpdateTaskRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(trace.UpdateTaskResponse) + + c.JSON(consts.StatusOK, resp) +} + +// ListTasks . +// @router /api/observability/v1/tasks/list [POST] +func ListTasks(ctx context.Context, c *app.RequestContext) { + var err error + var req trace.ListTasksRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(trace.ListTasksResponse) + + c.JSON(consts.StatusOK, resp) +} + +// GetTask . +// @router /api/observability/v1/tasks/:task_id [GET] +func GetTask(ctx context.Context, c *app.RequestContext) { + var err error + var req trace.GetTaskRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(trace.GetTaskResponse) + + c.JSON(consts.StatusOK, resp) +} diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index 2c77acdfa..52965b5f6 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -246,7 +246,14 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _annotations := _v14.Group("/annotations", _annotationsMw(handler)...) _annotations.DELETE("/:annotation_id", append(_deletemanualannotationMw(handler), apis.DeleteManualAnnotation)...) _annotations.PUT("/:annotation_id", append(_updatemanualannotationMw(handler), apis.UpdateManualAnnotation)...) + _annotations.POST("/change_eEvaluator_sScore", append(_changeevaluatorscoreMw(handler), apis.ChangeEvaluatorScore)...) + _annotations.POST("/lis_annotation_evaluators", append(_listannotationevaluatorsMw(handler), apis.ListAnnotationEvaluators)...) _annotations.POST("/list", append(_listannotationsMw(handler), apis.ListAnnotations)...) + _v14.POST("/tasks", append(_tasksMw(handler), apis.CreateTask)...) + _tasks := _v14.Group("/tasks", _tasksMw(handler)...) + _tasks.POST("/list", append(_listtasksMw(handler), apis.ListTasks)...) + _tasks.GET("/:task_id", append(_gettaskMw(handler), apis.GetTask)...) + _tasks.PUT("/:task_id", append(_updatetaskMw(handler), apis.UpdateTask)...) _v14.POST("/views", append(_viewsMw(handler), apis.CreateView)...) _views := _v14.Group("/views", _viewsMw(handler)...) _views.POST("/list", append(_listviewsMw(handler), apis.ListViews)...) @@ -256,9 +263,14 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _spans := _v14.Group("/spans", _spansMw(handler)...) _spans.POST("/list", append(_listspansMw(handler), apis.ListSpans)...) } + { + _tasks0 := _v14.Group("/tasks", _tasks0Mw(handler)...) + _tasks0.GET("/check_name", append(_checktasknameMw(handler), apis.CheckTaskName)...) + } { _traces := _v14.Group("/traces", _tracesMw(handler)...) _traces.POST("/batch_get_advance_info", append(_batchgettracesadvanceinfoMw(handler), apis.BatchGetTracesAdvanceInfo)...) + _traces.POST("/extract_span_info", append(_extractspaninfoMw(handler), apis.ExtractSpanInfo)...) _traces.GET("/meta_info", append(_gettracesmetainfoMw(handler), apis.GetTracesMetaInfo)...) _traces.GET("/:trace_id", append(_gettraceMw(handler), apis.GetTrace)...) } diff --git a/backend/api/router/coze/loop/apis/middleware.go b/backend/api/router/coze/loop/apis/middleware.go index e8415b3dd..7ea153bee 100644 --- a/backend/api/router/coze/loop/apis/middleware.go +++ b/backend/api/router/coze/loop/apis/middleware.go @@ -1112,3 +1112,53 @@ func _upsertexptturnresultfilterMw(handler *apis.APIHandler) []app.HandlerFunc { // your code... return nil } + +func _changeevaluatorscoreMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _listannotationevaluatorsMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _tasksMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _createtaskMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _listtasksMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _gettaskMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _updatetaskMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _tasks0Mw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _checktasknameMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _extractspaninfoMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} diff --git a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go index 963429900..5d440462a 100644 --- a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go +++ b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go @@ -24,6 +24,14 @@ type Client interface { UpdateManualAnnotation(ctx context.Context, req *trace.UpdateManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.UpdateManualAnnotationResponse, err error) DeleteManualAnnotation(ctx context.Context, req *trace.DeleteManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.DeleteManualAnnotationResponse, err error) ListAnnotations(ctx context.Context, req *trace.ListAnnotationsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationsResponse, err error) + ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) + ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) + ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) + CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) + CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) + UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) + ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) + GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) } // NewClient creates a client for the service defined in IDL. @@ -119,3 +127,43 @@ func (p *kObservabilityTraceServiceClient) ListAnnotations(ctx context.Context, ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.ListAnnotations(ctx, req) } + +func (p *kObservabilityTraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ChangeEvaluatorScore(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ListAnnotationEvaluators(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ExtractSpanInfo(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CheckTaskName(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CreateTask(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.UpdateTask(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ListTasks(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.GetTask(ctx, req) +} diff --git a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go index b7475eb75..ba260cf0f 100644 --- a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go +++ b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go @@ -105,6 +105,62 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), + "ChangeEvaluatorScore": kitex.NewMethodInfo( + changeEvaluatorScoreHandler, + newTraceServiceChangeEvaluatorScoreArgs, + newTraceServiceChangeEvaluatorScoreResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ListAnnotationEvaluators": kitex.NewMethodInfo( + listAnnotationEvaluatorsHandler, + newTraceServiceListAnnotationEvaluatorsArgs, + newTraceServiceListAnnotationEvaluatorsResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ExtractSpanInfo": kitex.NewMethodInfo( + extractSpanInfoHandler, + newTraceServiceExtractSpanInfoArgs, + newTraceServiceExtractSpanInfoResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "CheckTaskName": kitex.NewMethodInfo( + checkTaskNameHandler, + newTraceServiceCheckTaskNameArgs, + newTraceServiceCheckTaskNameResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "CreateTask": kitex.NewMethodInfo( + createTaskHandler, + newTraceServiceCreateTaskArgs, + newTraceServiceCreateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "UpdateTask": kitex.NewMethodInfo( + updateTaskHandler, + newTraceServiceUpdateTaskArgs, + newTraceServiceUpdateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ListTasks": kitex.NewMethodInfo( + listTasksHandler, + newTraceServiceListTasksArgs, + newTraceServiceListTasksResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "GetTask": kitex.NewMethodInfo( + getTaskHandler, + newTraceServiceGetTaskArgs, + newTraceServiceGetTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), } var ( @@ -385,6 +441,158 @@ func newTraceServiceListAnnotationsResult() interface{} { return trace.NewTraceServiceListAnnotationsResult() } +func changeEvaluatorScoreHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceChangeEvaluatorScoreArgs) + realResult := result.(*trace.TraceServiceChangeEvaluatorScoreResult) + success, err := handler.(trace.TraceService).ChangeEvaluatorScore(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceChangeEvaluatorScoreArgs() interface{} { + return trace.NewTraceServiceChangeEvaluatorScoreArgs() +} + +func newTraceServiceChangeEvaluatorScoreResult() interface{} { + return trace.NewTraceServiceChangeEvaluatorScoreResult() +} + +func listAnnotationEvaluatorsHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceListAnnotationEvaluatorsArgs) + realResult := result.(*trace.TraceServiceListAnnotationEvaluatorsResult) + success, err := handler.(trace.TraceService).ListAnnotationEvaluators(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceListAnnotationEvaluatorsArgs() interface{} { + return trace.NewTraceServiceListAnnotationEvaluatorsArgs() +} + +func newTraceServiceListAnnotationEvaluatorsResult() interface{} { + return trace.NewTraceServiceListAnnotationEvaluatorsResult() +} + +func extractSpanInfoHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceExtractSpanInfoArgs) + realResult := result.(*trace.TraceServiceExtractSpanInfoResult) + success, err := handler.(trace.TraceService).ExtractSpanInfo(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceExtractSpanInfoArgs() interface{} { + return trace.NewTraceServiceExtractSpanInfoArgs() +} + +func newTraceServiceExtractSpanInfoResult() interface{} { + return trace.NewTraceServiceExtractSpanInfoResult() +} + +func checkTaskNameHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceCheckTaskNameArgs) + realResult := result.(*trace.TraceServiceCheckTaskNameResult) + success, err := handler.(trace.TraceService).CheckTaskName(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceCheckTaskNameArgs() interface{} { + return trace.NewTraceServiceCheckTaskNameArgs() +} + +func newTraceServiceCheckTaskNameResult() interface{} { + return trace.NewTraceServiceCheckTaskNameResult() +} + +func createTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceCreateTaskArgs) + realResult := result.(*trace.TraceServiceCreateTaskResult) + success, err := handler.(trace.TraceService).CreateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceCreateTaskArgs() interface{} { + return trace.NewTraceServiceCreateTaskArgs() +} + +func newTraceServiceCreateTaskResult() interface{} { + return trace.NewTraceServiceCreateTaskResult() +} + +func updateTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceUpdateTaskArgs) + realResult := result.(*trace.TraceServiceUpdateTaskResult) + success, err := handler.(trace.TraceService).UpdateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceUpdateTaskArgs() interface{} { + return trace.NewTraceServiceUpdateTaskArgs() +} + +func newTraceServiceUpdateTaskResult() interface{} { + return trace.NewTraceServiceUpdateTaskResult() +} + +func listTasksHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceListTasksArgs) + realResult := result.(*trace.TraceServiceListTasksResult) + success, err := handler.(trace.TraceService).ListTasks(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceListTasksArgs() interface{} { + return trace.NewTraceServiceListTasksArgs() +} + +func newTraceServiceListTasksResult() interface{} { + return trace.NewTraceServiceListTasksResult() +} + +func getTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceGetTaskArgs) + realResult := result.(*trace.TraceServiceGetTaskResult) + success, err := handler.(trace.TraceService).GetTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceGetTaskArgs() interface{} { + return trace.NewTraceServiceGetTaskArgs() +} + +func newTraceServiceGetTaskResult() interface{} { + return trace.NewTraceServiceGetTaskResult() +} + type kClient struct { c client.Client sc client.Streaming @@ -526,3 +734,83 @@ func (p *kClient) ListAnnotations(ctx context.Context, req *trace.ListAnnotation } return _result.GetSuccess(), nil } + +func (p *kClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) (r *trace.ChangeEvaluatorScoreResponse, err error) { + var _args trace.TraceServiceChangeEvaluatorScoreArgs + _args.Req = req + var _result trace.TraceServiceChangeEvaluatorScoreResult + if err = p.c.Call(ctx, "ChangeEvaluatorScore", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest) (r *trace.ListAnnotationEvaluatorsResponse, err error) { + var _args trace.TraceServiceListAnnotationEvaluatorsArgs + _args.Req = req + var _result trace.TraceServiceListAnnotationEvaluatorsResult + if err = p.c.Call(ctx, "ListAnnotationEvaluators", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest) (r *trace.ExtractSpanInfoResponse, err error) { + var _args trace.TraceServiceExtractSpanInfoArgs + _args.Req = req + var _result trace.TraceServiceExtractSpanInfoResult + if err = p.c.Call(ctx, "ExtractSpanInfo", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest) (r *trace.CheckTaskNameResponse, err error) { + var _args trace.TraceServiceCheckTaskNameArgs + _args.Req = req + var _result trace.TraceServiceCheckTaskNameResult + if err = p.c.Call(ctx, "CheckTaskName", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest) (r *trace.CreateTaskResponse, err error) { + var _args trace.TraceServiceCreateTaskArgs + _args.Req = req + var _result trace.TraceServiceCreateTaskResult + if err = p.c.Call(ctx, "CreateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest) (r *trace.UpdateTaskResponse, err error) { + var _args trace.TraceServiceUpdateTaskArgs + _args.Req = req + var _result trace.TraceServiceUpdateTaskResult + if err = p.c.Call(ctx, "UpdateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest) (r *trace.ListTasksResponse, err error) { + var _args trace.TraceServiceListTasksArgs + _args.Req = req + var _result trace.TraceServiceListTasksResult + if err = p.c.Call(ctx, "ListTasks", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) GetTask(ctx context.Context, req *trace.GetTaskRequest) (r *trace.GetTaskResponse, err error) { + var _args trace.TraceServiceGetTaskArgs + _args.Req = req + var _result trace.TraceServiceGetTaskResult + if err = p.c.Call(ctx, "GetTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go b/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go index 19ae7f13d..4215c2eb3 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go +++ b/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go @@ -42,6 +42,16 @@ const ( FieldTypeDouble = "double" FieldTypeBool = "bool" + + TaskFieldNameTaskStatus = "task_status" + + TaskFieldNameTaskName = "task_name" + + TaskFieldNameTaskType = "task_type" + + TaskFieldNameSampleRate = "sample_rate" + + TaskFieldNameCreatedBy = "created_by" ) type QueryType = string @@ -50,6 +60,8 @@ type QueryRelation = string type FieldType = string +type TaskFieldName = string + type FilterFields struct { QueryAndOr *QueryRelation `thrift:"query_and_or,1,optional" frugal:"1,optional,string" form:"query_and_or" json:"query_and_or,omitempty" query:"query_and_or"` FilterFields []*FilterField `thrift:"filter_fields,2,required" frugal:"2,required,list" form:"filter_fields,required" json:"filter_fields,required" query:"filter_fields,required"` @@ -1302,3 +1314,858 @@ func (p *FieldOptions) Field4DeepEqual(src []string) bool { } return true } + +type TaskFilterFields struct { + QueryAndOr *QueryRelation `thrift:"query_and_or,1,optional" frugal:"1,optional,string" form:"query_and_or" json:"query_and_or,omitempty" query:"query_and_or"` + FilterFields []*TaskFilterField `thrift:"filter_fields,2,required" frugal:"2,required,list" form:"filter_fields,required" json:"filter_fields,required" query:"filter_fields,required"` +} + +func NewTaskFilterFields() *TaskFilterFields { + return &TaskFilterFields{} +} + +func (p *TaskFilterFields) InitDefault() { +} + +var TaskFilterFields_QueryAndOr_DEFAULT QueryRelation + +func (p *TaskFilterFields) GetQueryAndOr() (v QueryRelation) { + if p == nil { + return + } + if !p.IsSetQueryAndOr() { + return TaskFilterFields_QueryAndOr_DEFAULT + } + return *p.QueryAndOr +} + +func (p *TaskFilterFields) GetFilterFields() (v []*TaskFilterField) { + if p != nil { + return p.FilterFields + } + return +} +func (p *TaskFilterFields) SetQueryAndOr(val *QueryRelation) { + p.QueryAndOr = val +} +func (p *TaskFilterFields) SetFilterFields(val []*TaskFilterField) { + p.FilterFields = val +} + +var fieldIDToName_TaskFilterFields = map[int16]string{ + 1: "query_and_or", + 2: "filter_fields", +} + +func (p *TaskFilterFields) IsSetQueryAndOr() bool { + return p.QueryAndOr != nil +} + +func (p *TaskFilterFields) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetFilterFields bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.LIST { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetFilterFields = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetFilterFields { + fieldId = 2 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskFilterFields[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_TaskFilterFields[fieldId])) +} + +func (p *TaskFilterFields) ReadField1(iprot thrift.TProtocol) error { + + var _field *QueryRelation + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.QueryAndOr = _field + return nil +} +func (p *TaskFilterFields) ReadField2(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*TaskFilterField, 0, size) + values := make([]TaskFilterField, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FilterFields = _field + return nil +} + +func (p *TaskFilterFields) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("TaskFilterFields"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskFilterFields) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetQueryAndOr() { + if err = oprot.WriteFieldBegin("query_and_or", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.QueryAndOr); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *TaskFilterFields) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("filter_fields", thrift.LIST, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FilterFields)); err != nil { + return err + } + for _, v := range p.FilterFields { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *TaskFilterFields) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskFilterFields(%+v)", *p) + +} + +func (p *TaskFilterFields) DeepEqual(ano *TaskFilterFields) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.QueryAndOr) { + return false + } + if !p.Field2DeepEqual(ano.FilterFields) { + return false + } + return true +} + +func (p *TaskFilterFields) Field1DeepEqual(src *QueryRelation) bool { + + if p.QueryAndOr == src { + return true + } else if p.QueryAndOr == nil || src == nil { + return false + } + if strings.Compare(*p.QueryAndOr, *src) != 0 { + return false + } + return true +} +func (p *TaskFilterFields) Field2DeepEqual(src []*TaskFilterField) bool { + + if len(p.FilterFields) != len(src) { + return false + } + for i, v := range p.FilterFields { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +type TaskFilterField struct { + FieldName *TaskFieldName `thrift:"field_name,1,optional" frugal:"1,optional,string" form:"field_name" json:"field_name,omitempty" query:"field_name"` + FieldType *FieldType `thrift:"field_type,2,optional" frugal:"2,optional,string" form:"field_type" json:"field_type,omitempty" query:"field_type"` + Values []string `thrift:"values,3,optional" frugal:"3,optional,list" form:"values" json:"values,omitempty" query:"values"` + QueryType *QueryType `thrift:"query_type,4,optional" frugal:"4,optional,string" form:"query_type" json:"query_type,omitempty" query:"query_type"` + QueryAndOr *QueryRelation `thrift:"query_and_or,5,optional" frugal:"5,optional,string" form:"query_and_or" json:"query_and_or,omitempty" query:"query_and_or"` + SubFilter *TaskFilterField `thrift:"sub_filter,6,optional" frugal:"6,optional,TaskFilterField" form:"sub_filter" json:"sub_filter,omitempty" query:"sub_filter"` +} + +func NewTaskFilterField() *TaskFilterField { + return &TaskFilterField{} +} + +func (p *TaskFilterField) InitDefault() { +} + +var TaskFilterField_FieldName_DEFAULT TaskFieldName + +func (p *TaskFilterField) GetFieldName() (v TaskFieldName) { + if p == nil { + return + } + if !p.IsSetFieldName() { + return TaskFilterField_FieldName_DEFAULT + } + return *p.FieldName +} + +var TaskFilterField_FieldType_DEFAULT FieldType + +func (p *TaskFilterField) GetFieldType() (v FieldType) { + if p == nil { + return + } + if !p.IsSetFieldType() { + return TaskFilterField_FieldType_DEFAULT + } + return *p.FieldType +} + +var TaskFilterField_Values_DEFAULT []string + +func (p *TaskFilterField) GetValues() (v []string) { + if p == nil { + return + } + if !p.IsSetValues() { + return TaskFilterField_Values_DEFAULT + } + return p.Values +} + +var TaskFilterField_QueryType_DEFAULT QueryType + +func (p *TaskFilterField) GetQueryType() (v QueryType) { + if p == nil { + return + } + if !p.IsSetQueryType() { + return TaskFilterField_QueryType_DEFAULT + } + return *p.QueryType +} + +var TaskFilterField_QueryAndOr_DEFAULT QueryRelation + +func (p *TaskFilterField) GetQueryAndOr() (v QueryRelation) { + if p == nil { + return + } + if !p.IsSetQueryAndOr() { + return TaskFilterField_QueryAndOr_DEFAULT + } + return *p.QueryAndOr +} + +var TaskFilterField_SubFilter_DEFAULT *TaskFilterField + +func (p *TaskFilterField) GetSubFilter() (v *TaskFilterField) { + if p == nil { + return + } + if !p.IsSetSubFilter() { + return TaskFilterField_SubFilter_DEFAULT + } + return p.SubFilter +} +func (p *TaskFilterField) SetFieldName(val *TaskFieldName) { + p.FieldName = val +} +func (p *TaskFilterField) SetFieldType(val *FieldType) { + p.FieldType = val +} +func (p *TaskFilterField) SetValues(val []string) { + p.Values = val +} +func (p *TaskFilterField) SetQueryType(val *QueryType) { + p.QueryType = val +} +func (p *TaskFilterField) SetQueryAndOr(val *QueryRelation) { + p.QueryAndOr = val +} +func (p *TaskFilterField) SetSubFilter(val *TaskFilterField) { + p.SubFilter = val +} + +var fieldIDToName_TaskFilterField = map[int16]string{ + 1: "field_name", + 2: "field_type", + 3: "values", + 4: "query_type", + 5: "query_and_or", + 6: "sub_filter", +} + +func (p *TaskFilterField) IsSetFieldName() bool { + return p.FieldName != nil +} + +func (p *TaskFilterField) IsSetFieldType() bool { + return p.FieldType != nil +} + +func (p *TaskFilterField) IsSetValues() bool { + return p.Values != nil +} + +func (p *TaskFilterField) IsSetQueryType() bool { + return p.QueryType != nil +} + +func (p *TaskFilterField) IsSetQueryAndOr() bool { + return p.QueryAndOr != nil +} + +func (p *TaskFilterField) IsSetSubFilter() bool { + return p.SubFilter != nil +} + +func (p *TaskFilterField) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.LIST { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRING { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.STRING { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskFilterField[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskFilterField) ReadField1(iprot thrift.TProtocol) error { + + var _field *TaskFieldName + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.FieldName = _field + return nil +} +func (p *TaskFilterField) ReadField2(iprot thrift.TProtocol) error { + + var _field *FieldType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.FieldType = _field + return nil +} +func (p *TaskFilterField) ReadField3(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]string, 0, size) + for i := 0; i < size; i++ { + + var _elem string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _elem = v + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.Values = _field + return nil +} +func (p *TaskFilterField) ReadField4(iprot thrift.TProtocol) error { + + var _field *QueryType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.QueryType = _field + return nil +} +func (p *TaskFilterField) ReadField5(iprot thrift.TProtocol) error { + + var _field *QueryRelation + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.QueryAndOr = _field + return nil +} +func (p *TaskFilterField) ReadField6(iprot thrift.TProtocol) error { + _field := NewTaskFilterField() + if err := _field.Read(iprot); err != nil { + return err + } + p.SubFilter = _field + return nil +} + +func (p *TaskFilterField) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("TaskFilterField"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskFilterField) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldName() { + if err = oprot.WriteFieldBegin("field_name", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.FieldName); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *TaskFilterField) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldType() { + if err = oprot.WriteFieldBegin("field_type", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.FieldType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *TaskFilterField) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetValues() { + if err = oprot.WriteFieldBegin("values", thrift.LIST, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRING, len(p.Values)); err != nil { + return err + } + for _, v := range p.Values { + if err := oprot.WriteString(v); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *TaskFilterField) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetQueryType() { + if err = oprot.WriteFieldBegin("query_type", thrift.STRING, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.QueryType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *TaskFilterField) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetQueryAndOr() { + if err = oprot.WriteFieldBegin("query_and_or", thrift.STRING, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.QueryAndOr); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *TaskFilterField) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetSubFilter() { + if err = oprot.WriteFieldBegin("sub_filter", thrift.STRUCT, 6); err != nil { + goto WriteFieldBeginError + } + if err := p.SubFilter.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} + +func (p *TaskFilterField) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskFilterField(%+v)", *p) + +} + +func (p *TaskFilterField) DeepEqual(ano *TaskFilterField) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.FieldName) { + return false + } + if !p.Field2DeepEqual(ano.FieldType) { + return false + } + if !p.Field3DeepEqual(ano.Values) { + return false + } + if !p.Field4DeepEqual(ano.QueryType) { + return false + } + if !p.Field5DeepEqual(ano.QueryAndOr) { + return false + } + if !p.Field6DeepEqual(ano.SubFilter) { + return false + } + return true +} + +func (p *TaskFilterField) Field1DeepEqual(src *TaskFieldName) bool { + + if p.FieldName == src { + return true + } else if p.FieldName == nil || src == nil { + return false + } + if strings.Compare(*p.FieldName, *src) != 0 { + return false + } + return true +} +func (p *TaskFilterField) Field2DeepEqual(src *FieldType) bool { + + if p.FieldType == src { + return true + } else if p.FieldType == nil || src == nil { + return false + } + if strings.Compare(*p.FieldType, *src) != 0 { + return false + } + return true +} +func (p *TaskFilterField) Field3DeepEqual(src []string) bool { + + if len(p.Values) != len(src) { + return false + } + for i, v := range p.Values { + _src := src[i] + if strings.Compare(v, _src) != 0 { + return false + } + } + return true +} +func (p *TaskFilterField) Field4DeepEqual(src *QueryType) bool { + + if p.QueryType == src { + return true + } else if p.QueryType == nil || src == nil { + return false + } + if strings.Compare(*p.QueryType, *src) != 0 { + return false + } + return true +} +func (p *TaskFilterField) Field5DeepEqual(src *QueryRelation) bool { + + if p.QueryAndOr == src { + return true + } else if p.QueryAndOr == nil || src == nil { + return false + } + if strings.Compare(*p.QueryAndOr, *src) != 0 { + return false + } + return true +} +func (p *TaskFilterField) Field6DeepEqual(src *TaskFilterField) bool { + + if !p.SubFilter.DeepEqual(src) { + return false + } + return true +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/filter/filter_validator.go b/backend/kitex_gen/coze/loop/observability/domain/filter/filter_validator.go index 13b71395c..974d72217 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/filter/filter_validator.go +++ b/backend/kitex_gen/coze/loop/observability/domain/filter/filter_validator.go @@ -35,3 +35,14 @@ func (p *FilterField) IsValid() error { func (p *FieldOptions) IsValid() error { return nil } +func (p *TaskFilterFields) IsValid() error { + return nil +} +func (p *TaskFilterField) IsValid() error { + if p.SubFilter != nil { + if err := p.SubFilter.IsValid(); err != nil { + return fmt.Errorf("field SubFilter not valid, %w", err) + } + } + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/filter/k-filter.go b/backend/kitex_gen/coze/loop/observability/domain/filter/k-filter.go index 49424d286..95b29ed63 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/filter/k-filter.go +++ b/backend/kitex_gen/coze/loop/observability/domain/filter/k-filter.go @@ -936,3 +936,620 @@ func (p *FieldOptions) DeepCopy(s interface{}) error { return nil } + +func (p *TaskFilterFields) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetFilterFields bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetFilterFields = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetFilterFields { + fieldId = 2 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskFilterFields[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_TaskFilterFields[fieldId])) +} + +func (p *TaskFilterFields) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *QueryRelation + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.QueryAndOr = _field + return offset, nil +} + +func (p *TaskFilterFields) FastReadField2(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*TaskFilterField, 0, size) + values := make([]TaskFilterField, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FilterFields = _field + return offset, nil +} + +func (p *TaskFilterFields) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskFilterFields) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskFilterFields) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskFilterFields) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetQueryAndOr() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.QueryAndOr) + } + return offset +} + +func (p *TaskFilterFields) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FilterFields { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + return offset +} + +func (p *TaskFilterFields) field1Length() int { + l := 0 + if p.IsSetQueryAndOr() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.QueryAndOr) + } + return l +} + +func (p *TaskFilterFields) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FilterFields { + _ = v + l += v.BLength() + } + return l +} + +func (p *TaskFilterFields) DeepCopy(s interface{}) error { + src, ok := s.(*TaskFilterFields) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.QueryAndOr != nil { + tmp := *src.QueryAndOr + p.QueryAndOr = &tmp + } + + if src.FilterFields != nil { + p.FilterFields = make([]*TaskFilterField, 0, len(src.FilterFields)) + for _, elem := range src.FilterFields { + var _elem *TaskFilterField + if elem != nil { + _elem = &TaskFilterField{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FilterFields = append(p.FilterFields, _elem) + } + } + + return nil +} + +func (p *TaskFilterField) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskFilterField[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskFilterField) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *TaskFieldName + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.FieldName = _field + return offset, nil +} + +func (p *TaskFilterField) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *FieldType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.FieldType = _field + return offset, nil +} + +func (p *TaskFilterField) FastReadField3(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]string, 0, size) + for i := 0; i < size; i++ { + var _elem string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _elem = v + } + + _field = append(_field, _elem) + } + p.Values = _field + return offset, nil +} + +func (p *TaskFilterField) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *QueryType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.QueryType = _field + return offset, nil +} + +func (p *TaskFilterField) FastReadField5(buf []byte) (int, error) { + offset := 0 + + var _field *QueryRelation + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.QueryAndOr = _field + return offset, nil +} + +func (p *TaskFilterField) FastReadField6(buf []byte) (int, error) { + offset := 0 + _field := NewTaskFilterField() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.SubFilter = _field + return offset, nil +} + +func (p *TaskFilterField) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskFilterField) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskFilterField) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field6Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskFilterField) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFieldName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.FieldName) + } + return offset +} + +func (p *TaskFilterField) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFieldType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.FieldType) + } + return offset +} + +func (p *TaskFilterField) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetValues() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 3) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.Values { + length++ + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, v) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRING, length) + } + return offset +} + +func (p *TaskFilterField) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetQueryType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.QueryType) + } + return offset +} + +func (p *TaskFilterField) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetQueryAndOr() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 5) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.QueryAndOr) + } + return offset +} + +func (p *TaskFilterField) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSubFilter() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 6) + offset += p.SubFilter.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TaskFilterField) field1Length() int { + l := 0 + if p.IsSetFieldName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.FieldName) + } + return l +} + +func (p *TaskFilterField) field2Length() int { + l := 0 + if p.IsSetFieldType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.FieldType) + } + return l +} + +func (p *TaskFilterField) field3Length() int { + l := 0 + if p.IsSetValues() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.Values { + _ = v + l += thrift.Binary.StringLengthNocopy(v) + } + } + return l +} + +func (p *TaskFilterField) field4Length() int { + l := 0 + if p.IsSetQueryType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.QueryType) + } + return l +} + +func (p *TaskFilterField) field5Length() int { + l := 0 + if p.IsSetQueryAndOr() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.QueryAndOr) + } + return l +} + +func (p *TaskFilterField) field6Length() int { + l := 0 + if p.IsSetSubFilter() { + l += thrift.Binary.FieldBeginLength() + l += p.SubFilter.BLength() + } + return l +} + +func (p *TaskFilterField) DeepCopy(s interface{}) error { + src, ok := s.(*TaskFilterField) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.FieldName != nil { + tmp := *src.FieldName + p.FieldName = &tmp + } + + if src.FieldType != nil { + tmp := *src.FieldType + p.FieldType = &tmp + } + + if src.Values != nil { + p.Values = make([]string, 0, len(src.Values)) + for _, elem := range src.Values { + var _elem string + if elem != "" { + _elem = kutils.StringDeepCopy(elem) + } + p.Values = append(p.Values, _elem) + } + } + + if src.QueryType != nil { + tmp := *src.QueryType + p.QueryType = &tmp + } + + if src.QueryAndOr != nil { + tmp := *src.QueryAndOr + p.QueryAndOr = &tmp + } + + var _subFilter *TaskFilterField + if src.SubFilter != nil { + _subFilter = &TaskFilterField{} + if err := _subFilter.DeepCopy(src.SubFilter); err != nil { + return err + } + } + p.SubFilter = _subFilter + + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go new file mode 100644 index 000000000..4f1f886d6 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -0,0 +1,3104 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. + +package task + +import ( + "bytes" + "fmt" + "reflect" + "strings" + + "github.com/cloudwego/gopkg/protocol/thrift" + kutils "github.com/cloudwego/kitex/pkg/utils" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" +) + +var ( + _ = eval_set.KitexUnusedProtection + _ = common.KitexUnusedProtection + _ = filter.KitexUnusedProtection +) + +// unused protection +var ( + _ = fmt.Formatter(nil) + _ = (*bytes.Buffer)(nil) + _ = (*strings.Builder)(nil) + _ = reflect.Type(nil) + _ = thrift.STOP +) + +func (p *Task) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetName bool = false + var issetTaskType bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetName = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTaskType = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 7: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField7(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 8: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField8(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 9: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField9(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 100: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField100(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetName { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetTaskType { + fieldId = 5 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Task[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_Task[fieldId])) +} + +func (p *Task) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ID = _field + return offset, nil +} + +func (p *Task) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.Name = _field + return offset, nil +} + +func (p *Task) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Description = _field + return offset, nil +} + +func (p *Task) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *Task) FastReadField5(buf []byte) (int, error) { + offset := 0 + + var _field TaskType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TaskType = _field + return offset, nil +} + +func (p *Task) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field *TaskStatus + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TaskStatus = _field + return offset, nil +} + +func (p *Task) FastReadField7(buf []byte) (int, error) { + offset := 0 + _field := NewRule() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Rule = _field + return offset, nil +} + +func (p *Task) FastReadField8(buf []byte) (int, error) { + offset := 0 + _field := NewTaskConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.TaskConfig = _field + return offset, nil +} + +func (p *Task) FastReadField9(buf []byte) (int, error) { + offset := 0 + _field := NewTaskDetail() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.TaskDetail = _field + return offset, nil +} + +func (p *Task) FastReadField100(buf []byte) (int, error) { + offset := 0 + _field := common.NewBaseInfo() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseInfo = _field + return offset, nil +} + +func (p *Task) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *Task) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField7(buf[offset:], w) + offset += p.fastWriteField8(buf[offset:], w) + offset += p.fastWriteField9(buf[offset:], w) + offset += p.fastWriteField100(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *Task) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field6Length() + l += p.field7Length() + l += p.field8Length() + l += p.field9Length() + l += p.field100Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *Task) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], *p.ID) + } + return offset +} + +func (p *Task) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.Name) + return offset +} + +func (p *Task) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDescription() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Description) + } + return offset +} + +func (p *Task) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetWorkspaceID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 4) + offset += thrift.Binary.WriteI64(buf[offset:], *p.WorkspaceID) + } + return offset +} + +func (p *Task) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 5) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TaskType) + return offset +} + +func (p *Task) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskStatus() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 6) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.TaskStatus) + } + return offset +} + +func (p *Task) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetRule() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 7) + offset += p.Rule.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *Task) fastWriteField8(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskConfig() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 8) + offset += p.TaskConfig.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *Task) fastWriteField9(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskDetail() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 9) + offset += p.TaskDetail.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *Task) fastWriteField100(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseInfo() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 100) + offset += p.BaseInfo.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *Task) field1Length() int { + l := 0 + if p.IsSetID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *Task) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.Name) + return l +} + +func (p *Task) field3Length() int { + l := 0 + if p.IsSetDescription() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Description) + } + return l +} + +func (p *Task) field4Length() int { + l := 0 + if p.IsSetWorkspaceID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *Task) field5Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.TaskType) + return l +} + +func (p *Task) field6Length() int { + l := 0 + if p.IsSetTaskStatus() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.TaskStatus) + } + return l +} + +func (p *Task) field7Length() int { + l := 0 + if p.IsSetRule() { + l += thrift.Binary.FieldBeginLength() + l += p.Rule.BLength() + } + return l +} + +func (p *Task) field8Length() int { + l := 0 + if p.IsSetTaskConfig() { + l += thrift.Binary.FieldBeginLength() + l += p.TaskConfig.BLength() + } + return l +} + +func (p *Task) field9Length() int { + l := 0 + if p.IsSetTaskDetail() { + l += thrift.Binary.FieldBeginLength() + l += p.TaskDetail.BLength() + } + return l +} + +func (p *Task) field100Length() int { + l := 0 + if p.IsSetBaseInfo() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseInfo.BLength() + } + return l +} + +func (p *Task) DeepCopy(s interface{}) error { + src, ok := s.(*Task) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.ID != nil { + tmp := *src.ID + p.ID = &tmp + } + + if src.Name != "" { + p.Name = kutils.StringDeepCopy(src.Name) + } + + if src.Description != nil { + var tmp string + if *src.Description != "" { + tmp = kutils.StringDeepCopy(*src.Description) + } + p.Description = &tmp + } + + if src.WorkspaceID != nil { + tmp := *src.WorkspaceID + p.WorkspaceID = &tmp + } + + p.TaskType = src.TaskType + + if src.TaskStatus != nil { + tmp := *src.TaskStatus + p.TaskStatus = &tmp + } + + var _rule *Rule + if src.Rule != nil { + _rule = &Rule{} + if err := _rule.DeepCopy(src.Rule); err != nil { + return err + } + } + p.Rule = _rule + + var _taskConfig *TaskConfig + if src.TaskConfig != nil { + _taskConfig = &TaskConfig{} + if err := _taskConfig.DeepCopy(src.TaskConfig); err != nil { + return err + } + } + p.TaskConfig = _taskConfig + + var _taskDetail *TaskDetail + if src.TaskDetail != nil { + _taskDetail = &TaskDetail{} + if err := _taskDetail.DeepCopy(src.TaskDetail); err != nil { + return err + } + } + p.TaskDetail = _taskDetail + + var _baseInfo *common.BaseInfo + if src.BaseInfo != nil { + _baseInfo = &common.BaseInfo{} + if err := _baseInfo.DeepCopy(src.BaseInfo); err != nil { + return err + } + } + p.BaseInfo = _baseInfo + + return nil +} + +func (p *Rule) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Rule[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *Rule) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := filter.NewFilterFields() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.SpanFilters = _field + return offset, nil +} + +func (p *Rule) FastReadField2(buf []byte) (int, error) { + offset := 0 + _field := NewSampler() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Sampler = _field + return offset, nil +} + +func (p *Rule) FastReadField3(buf []byte) (int, error) { + offset := 0 + _field := NewEffectiveTime() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.EffectiveTime = _field + return offset, nil +} + +func (p *Rule) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *Rule) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *Rule) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *Rule) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSpanFilters() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.SpanFilters.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *Rule) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSampler() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 2) + offset += p.Sampler.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *Rule) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEffectiveTime() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 3) + offset += p.EffectiveTime.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *Rule) field1Length() int { + l := 0 + if p.IsSetSpanFilters() { + l += thrift.Binary.FieldBeginLength() + l += p.SpanFilters.BLength() + } + return l +} + +func (p *Rule) field2Length() int { + l := 0 + if p.IsSetSampler() { + l += thrift.Binary.FieldBeginLength() + l += p.Sampler.BLength() + } + return l +} + +func (p *Rule) field3Length() int { + l := 0 + if p.IsSetEffectiveTime() { + l += thrift.Binary.FieldBeginLength() + l += p.EffectiveTime.BLength() + } + return l +} + +func (p *Rule) DeepCopy(s interface{}) error { + src, ok := s.(*Rule) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _spanFilters *filter.FilterFields + if src.SpanFilters != nil { + _spanFilters = &filter.FilterFields{} + if err := _spanFilters.DeepCopy(src.SpanFilters); err != nil { + return err + } + } + p.SpanFilters = _spanFilters + + var _sampler *Sampler + if src.Sampler != nil { + _sampler = &Sampler{} + if err := _sampler.DeepCopy(src.Sampler); err != nil { + return err + } + } + p.Sampler = _sampler + + var _effectiveTime *EffectiveTime + if src.EffectiveTime != nil { + _effectiveTime = &EffectiveTime{} + if err := _effectiveTime.DeepCopy(src.EffectiveTime); err != nil { + return err + } + } + p.EffectiveTime = _effectiveTime + + return nil +} + +func (p *Sampler) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.DOUBLE { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.BOOL { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Sampler[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *Sampler) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *float64 + if v, l, err := thrift.Binary.ReadDouble(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SampleRate = _field + return offset, nil +} + +func (p *Sampler) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SampleSize = _field + return offset, nil +} + +func (p *Sampler) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *bool + if v, l, err := thrift.Binary.ReadBool(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.IsCycle = _field + return offset, nil +} + +func (p *Sampler) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.CycleCount = _field + return offset, nil +} + +func (p *Sampler) FastReadField5(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.CycleInterval = _field + return offset, nil +} + +func (p *Sampler) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field *TimeUnit + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.CycleTimeUnit = _field + return offset, nil +} + +func (p *Sampler) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *Sampler) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *Sampler) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field6Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *Sampler) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSampleRate() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.DOUBLE, 1) + offset += thrift.Binary.WriteDouble(buf[offset:], *p.SampleRate) + } + return offset +} + +func (p *Sampler) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSampleSize() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], *p.SampleSize) + } + return offset +} + +func (p *Sampler) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetIsCycle() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.BOOL, 3) + offset += thrift.Binary.WriteBool(buf[offset:], *p.IsCycle) + } + return offset +} + +func (p *Sampler) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetCycleCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 4) + offset += thrift.Binary.WriteI64(buf[offset:], *p.CycleCount) + } + return offset +} + +func (p *Sampler) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetCycleInterval() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 5) + offset += thrift.Binary.WriteI64(buf[offset:], *p.CycleInterval) + } + return offset +} + +func (p *Sampler) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetCycleTimeUnit() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 6) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.CycleTimeUnit) + } + return offset +} + +func (p *Sampler) field1Length() int { + l := 0 + if p.IsSetSampleRate() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.DoubleLength() + } + return l +} + +func (p *Sampler) field2Length() int { + l := 0 + if p.IsSetSampleSize() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *Sampler) field3Length() int { + l := 0 + if p.IsSetIsCycle() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.BoolLength() + } + return l +} + +func (p *Sampler) field4Length() int { + l := 0 + if p.IsSetCycleCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *Sampler) field5Length() int { + l := 0 + if p.IsSetCycleInterval() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *Sampler) field6Length() int { + l := 0 + if p.IsSetCycleTimeUnit() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.CycleTimeUnit) + } + return l +} + +func (p *Sampler) DeepCopy(s interface{}) error { + src, ok := s.(*Sampler) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.SampleRate != nil { + tmp := *src.SampleRate + p.SampleRate = &tmp + } + + if src.SampleSize != nil { + tmp := *src.SampleSize + p.SampleSize = &tmp + } + + if src.IsCycle != nil { + tmp := *src.IsCycle + p.IsCycle = &tmp + } + + if src.CycleCount != nil { + tmp := *src.CycleCount + p.CycleCount = &tmp + } + + if src.CycleInterval != nil { + tmp := *src.CycleInterval + p.CycleInterval = &tmp + } + + if src.CycleTimeUnit != nil { + tmp := *src.CycleTimeUnit + p.CycleTimeUnit = &tmp + } + + return nil +} + +func (p *EffectiveTime) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EffectiveTime[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *EffectiveTime) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.StartAt = _field + return offset, nil +} + +func (p *EffectiveTime) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.EndAt = _field + return offset, nil +} + +func (p *EffectiveTime) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *EffectiveTime) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *EffectiveTime) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *EffectiveTime) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetStartAt() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], *p.StartAt) + } + return offset +} + +func (p *EffectiveTime) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEndAt() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], *p.EndAt) + } + return offset +} + +func (p *EffectiveTime) field1Length() int { + l := 0 + if p.IsSetStartAt() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *EffectiveTime) field2Length() int { + l := 0 + if p.IsSetEndAt() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *EffectiveTime) DeepCopy(s interface{}) error { + src, ok := s.(*EffectiveTime) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.StartAt != nil { + tmp := *src.StartAt + p.StartAt = &tmp + } + + if src.EndAt != nil { + tmp := *src.EndAt + p.EndAt = &tmp + } + + return nil +} + +func (p *TaskConfig) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskConfig[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskConfig) FastReadField1(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*AutoEvaluateConfig, 0, size) + values := make([]AutoEvaluateConfig, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.AutoEvaluateConfigs = _field + return offset, nil +} + +func (p *TaskConfig) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskConfig) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetAutoEvaluateConfigs() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.AutoEvaluateConfigs { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *TaskConfig) field1Length() int { + l := 0 + if p.IsSetAutoEvaluateConfigs() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.AutoEvaluateConfigs { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *TaskConfig) DeepCopy(s interface{}) error { + src, ok := s.(*TaskConfig) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.AutoEvaluateConfigs != nil { + p.AutoEvaluateConfigs = make([]*AutoEvaluateConfig, 0, len(src.AutoEvaluateConfigs)) + for _, elem := range src.AutoEvaluateConfigs { + var _elem *AutoEvaluateConfig + if elem != nil { + _elem = &AutoEvaluateConfig{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.AutoEvaluateConfigs = append(p.AutoEvaluateConfigs, _elem) + } + } + + return nil +} + +func (p *AutoEvaluateConfig) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluatorVersionID bool = false + var issetEvaluatorID bool = false + var issetFieldMappings bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorVersionID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetFieldMappings = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetEvaluatorVersionID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetFieldMappings { + fieldId = 3 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AutoEvaluateConfig[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_AutoEvaluateConfig[fieldId])) +} + +func (p *AutoEvaluateConfig) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorVersionID = _field + return offset, nil +} + +func (p *AutoEvaluateConfig) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorID = _field + return offset, nil +} + +func (p *AutoEvaluateConfig) FastReadField3(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*FieldMapping, 0, size) + values := make([]FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldMappings = _field + return offset, nil +} + +func (p *AutoEvaluateConfig) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *AutoEvaluateConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *AutoEvaluateConfig) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *AutoEvaluateConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorVersionID) + return offset +} + +func (p *AutoEvaluateConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorID) + return offset +} + +func (p *AutoEvaluateConfig) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 3) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldMappings { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + return offset +} + +func (p *AutoEvaluateConfig) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AutoEvaluateConfig) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AutoEvaluateConfig) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldMappings { + _ = v + l += v.BLength() + } + return l +} + +func (p *AutoEvaluateConfig) DeepCopy(s interface{}) error { + src, ok := s.(*AutoEvaluateConfig) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.EvaluatorVersionID = src.EvaluatorVersionID + + p.EvaluatorID = src.EvaluatorID + + if src.FieldMappings != nil { + p.FieldMappings = make([]*FieldMapping, 0, len(src.FieldMappings)) + for _, elem := range src.FieldMappings { + var _elem *FieldMapping + if elem != nil { + _elem = &FieldMapping{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldMappings = append(p.FieldMappings, _elem) + } + } + + return nil +} + +func (p *TaskDetail) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskDetail[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskDetail) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SuccessCount = _field + return offset, nil +} + +func (p *TaskDetail) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.FailedCount = _field + return offset, nil +} + +func (p *TaskDetail) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskDetail) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskDetail) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskDetail) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccessCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], *p.SuccessCount) + } + return offset +} + +func (p *TaskDetail) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFailedCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], *p.FailedCount) + } + return offset +} + +func (p *TaskDetail) field1Length() int { + l := 0 + if p.IsSetSuccessCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *TaskDetail) field2Length() int { + l := 0 + if p.IsSetFailedCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *TaskDetail) DeepCopy(s interface{}) error { + src, ok := s.(*TaskDetail) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.SuccessCount != nil { + tmp := *src.SuccessCount + p.SuccessCount = &tmp + } + + if src.FailedCount != nil { + tmp := *src.FailedCount + p.FailedCount = &tmp + } + + return nil +} + +func (p *FieldMapping) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetFieldSchema bool = false + var issetTraceFieldKey bool = false + var issetTraceFieldJsonpath bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetFieldSchema = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTraceFieldKey = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTraceFieldJsonpath = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetFieldSchema { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetTraceFieldKey { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetTraceFieldJsonpath { + fieldId = 3 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldMapping[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_FieldMapping[fieldId])) +} + +func (p *FieldMapping) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := eval_set.NewFieldSchema() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.FieldSchema = _field + return offset, nil +} + +func (p *FieldMapping) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TraceFieldKey = _field + return offset, nil +} + +func (p *FieldMapping) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TraceFieldJsonpath = _field + return offset, nil +} + +func (p *FieldMapping) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.EvalSetName = _field + return offset, nil +} + +func (p *FieldMapping) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *FieldMapping) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *FieldMapping) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *FieldMapping) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.FieldSchema.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *FieldMapping) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TraceFieldKey) + return offset +} + +func (p *FieldMapping) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TraceFieldJsonpath) + return offset +} + +func (p *FieldMapping) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvalSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.EvalSetName) + } + return offset +} + +func (p *FieldMapping) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.FieldSchema.BLength() + return l +} + +func (p *FieldMapping) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.TraceFieldKey) + return l +} + +func (p *FieldMapping) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.TraceFieldJsonpath) + return l +} + +func (p *FieldMapping) field4Length() int { + l := 0 + if p.IsSetEvalSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.EvalSetName) + } + return l +} + +func (p *FieldMapping) DeepCopy(s interface{}) error { + src, ok := s.(*FieldMapping) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _fieldSchema *eval_set.FieldSchema + if src.FieldSchema != nil { + _fieldSchema = &eval_set.FieldSchema{} + if err := _fieldSchema.DeepCopy(src.FieldSchema); err != nil { + return err + } + } + p.FieldSchema = _fieldSchema + + if src.TraceFieldKey != "" { + p.TraceFieldKey = kutils.StringDeepCopy(src.TraceFieldKey) + } + + if src.TraceFieldJsonpath != "" { + p.TraceFieldJsonpath = kutils.StringDeepCopy(src.TraceFieldJsonpath) + } + + if src.EvalSetName != nil { + var tmp string + if *src.EvalSetName != "" { + tmp = kutils.StringDeepCopy(*src.EvalSetName) + } + p.EvalSetName = &tmp + } + + return nil +} + +func (p *TaskRun) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetStartRunAt bool = false + var issetEndRunAt bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetStartRunAt = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEndRunAt = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 7: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField7(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetStartRunAt { + fieldId = 5 + goto RequiredFieldNotSetError + } + + if !issetEndRunAt { + fieldId = 6 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskRun[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_TaskRun[fieldId])) +} + +func (p *TaskRun) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ID = _field + return offset, nil +} + +func (p *TaskRun) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *TaskRun) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TaskID = _field + return offset, nil +} + +func (p *TaskRun) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *TaskType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TaskType = _field + return offset, nil +} + +func (p *TaskRun) FastReadField5(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.StartRunAt = _field + return offset, nil +} + +func (p *TaskRun) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EndRunAt = _field + return offset, nil +} + +func (p *TaskRun) FastReadField7(buf []byte) (int, error) { + offset := 0 + _field := NewTaskRunConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.TaskRunConfig = _field + return offset, nil +} + +func (p *TaskRun) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskRun) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField7(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskRun) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field6Length() + l += p.field7Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskRun) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], *p.ID) + } + return offset +} + +func (p *TaskRun) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetWorkspaceID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], *p.WorkspaceID) + } + return offset +} + +func (p *TaskRun) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 3) + offset += thrift.Binary.WriteI64(buf[offset:], *p.TaskID) + } + return offset +} + +func (p *TaskRun) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.TaskType) + } + return offset +} + +func (p *TaskRun) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 5) + offset += thrift.Binary.WriteI64(buf[offset:], p.StartRunAt) + return offset +} + +func (p *TaskRun) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 6) + offset += thrift.Binary.WriteI64(buf[offset:], p.EndRunAt) + return offset +} + +func (p *TaskRun) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskRunConfig() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 7) + offset += p.TaskRunConfig.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TaskRun) field1Length() int { + l := 0 + if p.IsSetID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *TaskRun) field2Length() int { + l := 0 + if p.IsSetWorkspaceID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *TaskRun) field3Length() int { + l := 0 + if p.IsSetTaskID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *TaskRun) field4Length() int { + l := 0 + if p.IsSetTaskType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.TaskType) + } + return l +} + +func (p *TaskRun) field5Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *TaskRun) field6Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *TaskRun) field7Length() int { + l := 0 + if p.IsSetTaskRunConfig() { + l += thrift.Binary.FieldBeginLength() + l += p.TaskRunConfig.BLength() + } + return l +} + +func (p *TaskRun) DeepCopy(s interface{}) error { + src, ok := s.(*TaskRun) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.ID != nil { + tmp := *src.ID + p.ID = &tmp + } + + if src.WorkspaceID != nil { + tmp := *src.WorkspaceID + p.WorkspaceID = &tmp + } + + if src.TaskID != nil { + tmp := *src.TaskID + p.TaskID = &tmp + } + + if src.TaskType != nil { + tmp := *src.TaskType + p.TaskType = &tmp + } + + p.StartRunAt = src.StartRunAt + + p.EndRunAt = src.EndRunAt + + var _taskRunConfig *TaskRunConfig + if src.TaskRunConfig != nil { + _taskRunConfig = &TaskRunConfig{} + if err := _taskRunConfig.DeepCopy(src.TaskRunConfig); err != nil { + return err + } + } + p.TaskRunConfig = _taskRunConfig + + return nil +} + +func (p *TaskRunConfig) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskRunConfig[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskRunConfig) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewAutoEvaluateRunConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.AutoEvaluateRunConfig = _field + return offset, nil +} + +func (p *TaskRunConfig) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskRunConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskRunConfig) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskRunConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetAutoEvaluateRunConfig() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.AutoEvaluateRunConfig.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TaskRunConfig) field1Length() int { + l := 0 + if p.IsSetAutoEvaluateRunConfig() { + l += thrift.Binary.FieldBeginLength() + l += p.AutoEvaluateRunConfig.BLength() + } + return l +} + +func (p *TaskRunConfig) DeepCopy(s interface{}) error { + src, ok := s.(*TaskRunConfig) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _autoEvaluateRunConfig *AutoEvaluateRunConfig + if src.AutoEvaluateRunConfig != nil { + _autoEvaluateRunConfig = &AutoEvaluateRunConfig{} + if err := _autoEvaluateRunConfig.DeepCopy(src.AutoEvaluateRunConfig); err != nil { + return err + } + } + p.AutoEvaluateRunConfig = _autoEvaluateRunConfig + + return nil +} + +func (p *AutoEvaluateRunConfig) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluatorVersionID bool = false + var issetEvaluatorID bool = false + var issetFieldMappings bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorVersionID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetFieldMappings = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetEvaluatorVersionID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetFieldMappings { + fieldId = 3 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AutoEvaluateRunConfig[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_AutoEvaluateRunConfig[fieldId])) +} + +func (p *AutoEvaluateRunConfig) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorVersionID = _field + return offset, nil +} + +func (p *AutoEvaluateRunConfig) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorID = _field + return offset, nil +} + +func (p *AutoEvaluateRunConfig) FastReadField3(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*FieldMapping, 0, size) + values := make([]FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldMappings = _field + return offset, nil +} + +func (p *AutoEvaluateRunConfig) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *AutoEvaluateRunConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *AutoEvaluateRunConfig) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *AutoEvaluateRunConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorVersionID) + return offset +} + +func (p *AutoEvaluateRunConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorID) + return offset +} + +func (p *AutoEvaluateRunConfig) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 3) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldMappings { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + return offset +} + +func (p *AutoEvaluateRunConfig) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AutoEvaluateRunConfig) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AutoEvaluateRunConfig) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldMappings { + _ = v + l += v.BLength() + } + return l +} + +func (p *AutoEvaluateRunConfig) DeepCopy(s interface{}) error { + src, ok := s.(*AutoEvaluateRunConfig) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.EvaluatorVersionID = src.EvaluatorVersionID + + p.EvaluatorID = src.EvaluatorID + + if src.FieldMappings != nil { + p.FieldMappings = make([]*FieldMapping, 0, len(src.FieldMappings)) + for _, elem := range src.FieldMappings { + var _elem *FieldMapping + if elem != nil { + _elem = &FieldMapping{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldMappings = append(p.FieldMappings, _elem) + } + } + + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go new file mode 100644 index 000000000..4d09bd9a7 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -0,0 +1,4345 @@ +// Code generated by thriftgo (0.4.1). DO NOT EDIT. + +package task + +import ( + "fmt" + "github.com/apache/thrift/lib/go/thrift" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" + "strings" +) + +const ( + TimeUnitDay = "day" + + TimeUnitWeek = "week" + + TaskTypeAutoEval = "auto_evaluate" + + TaskStatusUnstarted = "unstarted" + + TaskStatusRunning = "running" + + TaskStatusFailed = "failed" + + TaskStatusSuccess = "success" + + TaskStatusPending = "pending" + + TaskStatusDisabled = "disabled" +) + +type TimeUnit = string + +type TaskType = string + +type TaskStatus = string + +// Task +type Task struct { + // 任务 id + ID *int64 `thrift:"id,1,optional" frugal:"1,optional,i64" form:"id" json:"id,omitempty" query:"id"` + // 名称 + Name string `thrift:"name,2,required" frugal:"2,required,string" form:"name,required" json:"name,required" query:"name,required"` + // 描述 + Description *string `thrift:"description,3,optional" frugal:"3,optional,string" form:"description" json:"description,omitempty" query:"description"` + // 所在空间 + WorkspaceID *int64 `thrift:"workspace_id,4,optional" frugal:"4,optional,i64" form:"workspace_id" json:"workspace_id,omitempty" query:"workspace_id"` + // 类型 + TaskType TaskType `thrift:"task_type,5,required" frugal:"5,required,string" form:"task_type,required" json:"task_type,required" query:"task_type,required"` + // 状态 + TaskStatus *TaskStatus `thrift:"task_status,6,optional" frugal:"6,optional,string" form:"task_status" json:"task_status,omitempty" query:"task_status"` + // 规则 + Rule *Rule `thrift:"rule,7,optional" frugal:"7,optional,Rule" form:"rule" json:"rule,omitempty" query:"rule"` + // 配置 + TaskConfig *TaskConfig `thrift:"task_config,8,optional" frugal:"8,optional,TaskConfig" form:"task_config" json:"task_config,omitempty" query:"task_config"` + // 任务状态详情 + TaskDetail *TaskDetail `thrift:"task_detail,9,optional" frugal:"9,optional,TaskDetail" form:"task_detail" json:"task_detail,omitempty" query:"task_detail"` + // 基础信息 + BaseInfo *common.BaseInfo `thrift:"base_info,100,optional" frugal:"100,optional,common.BaseInfo" form:"base_info" json:"base_info,omitempty" query:"base_info"` +} + +func NewTask() *Task { + return &Task{} +} + +func (p *Task) InitDefault() { +} + +var Task_ID_DEFAULT int64 + +func (p *Task) GetID() (v int64) { + if p == nil { + return + } + if !p.IsSetID() { + return Task_ID_DEFAULT + } + return *p.ID +} + +func (p *Task) GetName() (v string) { + if p != nil { + return p.Name + } + return +} + +var Task_Description_DEFAULT string + +func (p *Task) GetDescription() (v string) { + if p == nil { + return + } + if !p.IsSetDescription() { + return Task_Description_DEFAULT + } + return *p.Description +} + +var Task_WorkspaceID_DEFAULT int64 + +func (p *Task) GetWorkspaceID() (v int64) { + if p == nil { + return + } + if !p.IsSetWorkspaceID() { + return Task_WorkspaceID_DEFAULT + } + return *p.WorkspaceID +} + +func (p *Task) GetTaskType() (v TaskType) { + if p != nil { + return p.TaskType + } + return +} + +var Task_TaskStatus_DEFAULT TaskStatus + +func (p *Task) GetTaskStatus() (v TaskStatus) { + if p == nil { + return + } + if !p.IsSetTaskStatus() { + return Task_TaskStatus_DEFAULT + } + return *p.TaskStatus +} + +var Task_Rule_DEFAULT *Rule + +func (p *Task) GetRule() (v *Rule) { + if p == nil { + return + } + if !p.IsSetRule() { + return Task_Rule_DEFAULT + } + return p.Rule +} + +var Task_TaskConfig_DEFAULT *TaskConfig + +func (p *Task) GetTaskConfig() (v *TaskConfig) { + if p == nil { + return + } + if !p.IsSetTaskConfig() { + return Task_TaskConfig_DEFAULT + } + return p.TaskConfig +} + +var Task_TaskDetail_DEFAULT *TaskDetail + +func (p *Task) GetTaskDetail() (v *TaskDetail) { + if p == nil { + return + } + if !p.IsSetTaskDetail() { + return Task_TaskDetail_DEFAULT + } + return p.TaskDetail +} + +var Task_BaseInfo_DEFAULT *common.BaseInfo + +func (p *Task) GetBaseInfo() (v *common.BaseInfo) { + if p == nil { + return + } + if !p.IsSetBaseInfo() { + return Task_BaseInfo_DEFAULT + } + return p.BaseInfo +} +func (p *Task) SetID(val *int64) { + p.ID = val +} +func (p *Task) SetName(val string) { + p.Name = val +} +func (p *Task) SetDescription(val *string) { + p.Description = val +} +func (p *Task) SetWorkspaceID(val *int64) { + p.WorkspaceID = val +} +func (p *Task) SetTaskType(val TaskType) { + p.TaskType = val +} +func (p *Task) SetTaskStatus(val *TaskStatus) { + p.TaskStatus = val +} +func (p *Task) SetRule(val *Rule) { + p.Rule = val +} +func (p *Task) SetTaskConfig(val *TaskConfig) { + p.TaskConfig = val +} +func (p *Task) SetTaskDetail(val *TaskDetail) { + p.TaskDetail = val +} +func (p *Task) SetBaseInfo(val *common.BaseInfo) { + p.BaseInfo = val +} + +var fieldIDToName_Task = map[int16]string{ + 1: "id", + 2: "name", + 3: "description", + 4: "workspace_id", + 5: "task_type", + 6: "task_status", + 7: "rule", + 8: "task_config", + 9: "task_detail", + 100: "base_info", +} + +func (p *Task) IsSetID() bool { + return p.ID != nil +} + +func (p *Task) IsSetDescription() bool { + return p.Description != nil +} + +func (p *Task) IsSetWorkspaceID() bool { + return p.WorkspaceID != nil +} + +func (p *Task) IsSetTaskStatus() bool { + return p.TaskStatus != nil +} + +func (p *Task) IsSetRule() bool { + return p.Rule != nil +} + +func (p *Task) IsSetTaskConfig() bool { + return p.TaskConfig != nil +} + +func (p *Task) IsSetTaskDetail() bool { + return p.TaskDetail != nil +} + +func (p *Task) IsSetBaseInfo() bool { + return p.BaseInfo != nil +} + +func (p *Task) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetName bool = false + var issetTaskType bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetName = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.I64 { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.STRING { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + issetTaskType = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.STRING { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 7: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField7(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 8: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField8(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 9: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField9(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 100: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField100(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetName { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetTaskType { + fieldId = 5 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Task[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_Task[fieldId])) +} + +func (p *Task) ReadField1(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.ID = _field + return nil +} +func (p *Task) ReadField2(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.Name = _field + return nil +} +func (p *Task) ReadField3(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Description = _field + return nil +} +func (p *Task) ReadField4(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.WorkspaceID = _field + return nil +} +func (p *Task) ReadField5(iprot thrift.TProtocol) error { + + var _field TaskType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.TaskType = _field + return nil +} +func (p *Task) ReadField6(iprot thrift.TProtocol) error { + + var _field *TaskStatus + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.TaskStatus = _field + return nil +} +func (p *Task) ReadField7(iprot thrift.TProtocol) error { + _field := NewRule() + if err := _field.Read(iprot); err != nil { + return err + } + p.Rule = _field + return nil +} +func (p *Task) ReadField8(iprot thrift.TProtocol) error { + _field := NewTaskConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.TaskConfig = _field + return nil +} +func (p *Task) ReadField9(iprot thrift.TProtocol) error { + _field := NewTaskDetail() + if err := _field.Read(iprot); err != nil { + return err + } + p.TaskDetail = _field + return nil +} +func (p *Task) ReadField100(iprot thrift.TProtocol) error { + _field := common.NewBaseInfo() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseInfo = _field + return nil +} + +func (p *Task) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("Task"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + if err = p.writeField7(oprot); err != nil { + fieldId = 7 + goto WriteFieldError + } + if err = p.writeField8(oprot); err != nil { + fieldId = 8 + goto WriteFieldError + } + if err = p.writeField9(oprot); err != nil { + fieldId = 9 + goto WriteFieldError + } + if err = p.writeField100(oprot); err != nil { + fieldId = 100 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *Task) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetID() { + if err = oprot.WriteFieldBegin("id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.ID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *Task) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *Task) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetDescription() { + if err = oprot.WriteFieldBegin("description", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Description); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *Task) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetWorkspaceID() { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *Task) writeField5(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("task_type", thrift.STRING, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.TaskType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *Task) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskStatus() { + if err = oprot.WriteFieldBegin("task_status", thrift.STRING, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.TaskStatus); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} +func (p *Task) writeField7(oprot thrift.TProtocol) (err error) { + if p.IsSetRule() { + if err = oprot.WriteFieldBegin("rule", thrift.STRUCT, 7); err != nil { + goto WriteFieldBeginError + } + if err := p.Rule.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) +} +func (p *Task) writeField8(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskConfig() { + if err = oprot.WriteFieldBegin("task_config", thrift.STRUCT, 8); err != nil { + goto WriteFieldBeginError + } + if err := p.TaskConfig.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 8 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 8 end error: ", p), err) +} +func (p *Task) writeField9(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskDetail() { + if err = oprot.WriteFieldBegin("task_detail", thrift.STRUCT, 9); err != nil { + goto WriteFieldBeginError + } + if err := p.TaskDetail.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 end error: ", p), err) +} +func (p *Task) writeField100(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseInfo() { + if err = oprot.WriteFieldBegin("base_info", thrift.STRUCT, 100); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseInfo.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 100 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) +} + +func (p *Task) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("Task(%+v)", *p) + +} + +func (p *Task) DeepEqual(ano *Task) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.ID) { + return false + } + if !p.Field2DeepEqual(ano.Name) { + return false + } + if !p.Field3DeepEqual(ano.Description) { + return false + } + if !p.Field4DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field5DeepEqual(ano.TaskType) { + return false + } + if !p.Field6DeepEqual(ano.TaskStatus) { + return false + } + if !p.Field7DeepEqual(ano.Rule) { + return false + } + if !p.Field8DeepEqual(ano.TaskConfig) { + return false + } + if !p.Field9DeepEqual(ano.TaskDetail) { + return false + } + if !p.Field100DeepEqual(ano.BaseInfo) { + return false + } + return true +} + +func (p *Task) Field1DeepEqual(src *int64) bool { + + if p.ID == src { + return true + } else if p.ID == nil || src == nil { + return false + } + if *p.ID != *src { + return false + } + return true +} +func (p *Task) Field2DeepEqual(src string) bool { + + if strings.Compare(p.Name, src) != 0 { + return false + } + return true +} +func (p *Task) Field3DeepEqual(src *string) bool { + + if p.Description == src { + return true + } else if p.Description == nil || src == nil { + return false + } + if strings.Compare(*p.Description, *src) != 0 { + return false + } + return true +} +func (p *Task) Field4DeepEqual(src *int64) bool { + + if p.WorkspaceID == src { + return true + } else if p.WorkspaceID == nil || src == nil { + return false + } + if *p.WorkspaceID != *src { + return false + } + return true +} +func (p *Task) Field5DeepEqual(src TaskType) bool { + + if strings.Compare(p.TaskType, src) != 0 { + return false + } + return true +} +func (p *Task) Field6DeepEqual(src *TaskStatus) bool { + + if p.TaskStatus == src { + return true + } else if p.TaskStatus == nil || src == nil { + return false + } + if strings.Compare(*p.TaskStatus, *src) != 0 { + return false + } + return true +} +func (p *Task) Field7DeepEqual(src *Rule) bool { + + if !p.Rule.DeepEqual(src) { + return false + } + return true +} +func (p *Task) Field8DeepEqual(src *TaskConfig) bool { + + if !p.TaskConfig.DeepEqual(src) { + return false + } + return true +} +func (p *Task) Field9DeepEqual(src *TaskDetail) bool { + + if !p.TaskDetail.DeepEqual(src) { + return false + } + return true +} +func (p *Task) Field100DeepEqual(src *common.BaseInfo) bool { + + if !p.BaseInfo.DeepEqual(src) { + return false + } + return true +} + +// Rule +type Rule struct { + // Span 过滤条件 + SpanFilters *filter.FilterFields `thrift:"span_filters,1,optional" frugal:"1,optional,filter.FilterFields" form:"span_filters" json:"span_filters,omitempty" query:"span_filters"` + // 采样配置 + Sampler *Sampler `thrift:"sampler,2,optional" frugal:"2,optional,Sampler" form:"sampler" json:"sampler,omitempty" query:"sampler"` + // 生效时间窗口 + EffectiveTime *EffectiveTime `thrift:"effective_time,3,optional" frugal:"3,optional,EffectiveTime" form:"effective_time" json:"effective_time,omitempty" query:"effective_time"` +} + +func NewRule() *Rule { + return &Rule{} +} + +func (p *Rule) InitDefault() { +} + +var Rule_SpanFilters_DEFAULT *filter.FilterFields + +func (p *Rule) GetSpanFilters() (v *filter.FilterFields) { + if p == nil { + return + } + if !p.IsSetSpanFilters() { + return Rule_SpanFilters_DEFAULT + } + return p.SpanFilters +} + +var Rule_Sampler_DEFAULT *Sampler + +func (p *Rule) GetSampler() (v *Sampler) { + if p == nil { + return + } + if !p.IsSetSampler() { + return Rule_Sampler_DEFAULT + } + return p.Sampler +} + +var Rule_EffectiveTime_DEFAULT *EffectiveTime + +func (p *Rule) GetEffectiveTime() (v *EffectiveTime) { + if p == nil { + return + } + if !p.IsSetEffectiveTime() { + return Rule_EffectiveTime_DEFAULT + } + return p.EffectiveTime +} +func (p *Rule) SetSpanFilters(val *filter.FilterFields) { + p.SpanFilters = val +} +func (p *Rule) SetSampler(val *Sampler) { + p.Sampler = val +} +func (p *Rule) SetEffectiveTime(val *EffectiveTime) { + p.EffectiveTime = val +} + +var fieldIDToName_Rule = map[int16]string{ + 1: "span_filters", + 2: "sampler", + 3: "effective_time", +} + +func (p *Rule) IsSetSpanFilters() bool { + return p.SpanFilters != nil +} + +func (p *Rule) IsSetSampler() bool { + return p.Sampler != nil +} + +func (p *Rule) IsSetEffectiveTime() bool { + return p.EffectiveTime != nil +} + +func (p *Rule) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Rule[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *Rule) ReadField1(iprot thrift.TProtocol) error { + _field := filter.NewFilterFields() + if err := _field.Read(iprot); err != nil { + return err + } + p.SpanFilters = _field + return nil +} +func (p *Rule) ReadField2(iprot thrift.TProtocol) error { + _field := NewSampler() + if err := _field.Read(iprot); err != nil { + return err + } + p.Sampler = _field + return nil +} +func (p *Rule) ReadField3(iprot thrift.TProtocol) error { + _field := NewEffectiveTime() + if err := _field.Read(iprot); err != nil { + return err + } + p.EffectiveTime = _field + return nil +} + +func (p *Rule) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("Rule"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *Rule) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetSpanFilters() { + if err = oprot.WriteFieldBegin("span_filters", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.SpanFilters.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *Rule) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetSampler() { + if err = oprot.WriteFieldBegin("sampler", thrift.STRUCT, 2); err != nil { + goto WriteFieldBeginError + } + if err := p.Sampler.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *Rule) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetEffectiveTime() { + if err = oprot.WriteFieldBegin("effective_time", thrift.STRUCT, 3); err != nil { + goto WriteFieldBeginError + } + if err := p.EffectiveTime.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *Rule) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("Rule(%+v)", *p) + +} + +func (p *Rule) DeepEqual(ano *Rule) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.SpanFilters) { + return false + } + if !p.Field2DeepEqual(ano.Sampler) { + return false + } + if !p.Field3DeepEqual(ano.EffectiveTime) { + return false + } + return true +} + +func (p *Rule) Field1DeepEqual(src *filter.FilterFields) bool { + + if !p.SpanFilters.DeepEqual(src) { + return false + } + return true +} +func (p *Rule) Field2DeepEqual(src *Sampler) bool { + + if !p.Sampler.DeepEqual(src) { + return false + } + return true +} +func (p *Rule) Field3DeepEqual(src *EffectiveTime) bool { + + if !p.EffectiveTime.DeepEqual(src) { + return false + } + return true +} + +type Sampler struct { + // 采样率 + SampleRate *float64 `thrift:"sample_rate,1,optional" frugal:"1,optional,double" form:"sample_rate" json:"sample_rate,omitempty" query:"sample_rate"` + // 采样上限 + SampleSize *int64 `thrift:"sample_size,2,optional" frugal:"2,optional,i64" form:"sample_size" json:"sample_size,omitempty" query:"sample_size"` + // 是否启动任务循环 + IsCycle *bool `thrift:"is_cycle,3,optional" frugal:"3,optional,bool" form:"is_cycle" json:"is_cycle,omitempty" query:"is_cycle"` + // 采样单次上限 + CycleCount *int64 `thrift:"cycle_count,4,optional" frugal:"4,optional,i64" form:"cycle_count" json:"cycle_count,omitempty" query:"cycle_count"` + // 循环间隔 + CycleInterval *int64 `thrift:"cycle_interval,5,optional" frugal:"5,optional,i64" form:"cycle_interval" json:"cycle_interval,omitempty" query:"cycle_interval"` + // 循环时间单位 + CycleTimeUnit *TimeUnit `thrift:"cycle_time_unit,6,optional" frugal:"6,optional,string" form:"cycle_time_unit" json:"cycle_time_unit,omitempty" query:"cycle_time_unit"` +} + +func NewSampler() *Sampler { + return &Sampler{} +} + +func (p *Sampler) InitDefault() { +} + +var Sampler_SampleRate_DEFAULT float64 + +func (p *Sampler) GetSampleRate() (v float64) { + if p == nil { + return + } + if !p.IsSetSampleRate() { + return Sampler_SampleRate_DEFAULT + } + return *p.SampleRate +} + +var Sampler_SampleSize_DEFAULT int64 + +func (p *Sampler) GetSampleSize() (v int64) { + if p == nil { + return + } + if !p.IsSetSampleSize() { + return Sampler_SampleSize_DEFAULT + } + return *p.SampleSize +} + +var Sampler_IsCycle_DEFAULT bool + +func (p *Sampler) GetIsCycle() (v bool) { + if p == nil { + return + } + if !p.IsSetIsCycle() { + return Sampler_IsCycle_DEFAULT + } + return *p.IsCycle +} + +var Sampler_CycleCount_DEFAULT int64 + +func (p *Sampler) GetCycleCount() (v int64) { + if p == nil { + return + } + if !p.IsSetCycleCount() { + return Sampler_CycleCount_DEFAULT + } + return *p.CycleCount +} + +var Sampler_CycleInterval_DEFAULT int64 + +func (p *Sampler) GetCycleInterval() (v int64) { + if p == nil { + return + } + if !p.IsSetCycleInterval() { + return Sampler_CycleInterval_DEFAULT + } + return *p.CycleInterval +} + +var Sampler_CycleTimeUnit_DEFAULT TimeUnit + +func (p *Sampler) GetCycleTimeUnit() (v TimeUnit) { + if p == nil { + return + } + if !p.IsSetCycleTimeUnit() { + return Sampler_CycleTimeUnit_DEFAULT + } + return *p.CycleTimeUnit +} +func (p *Sampler) SetSampleRate(val *float64) { + p.SampleRate = val +} +func (p *Sampler) SetSampleSize(val *int64) { + p.SampleSize = val +} +func (p *Sampler) SetIsCycle(val *bool) { + p.IsCycle = val +} +func (p *Sampler) SetCycleCount(val *int64) { + p.CycleCount = val +} +func (p *Sampler) SetCycleInterval(val *int64) { + p.CycleInterval = val +} +func (p *Sampler) SetCycleTimeUnit(val *TimeUnit) { + p.CycleTimeUnit = val +} + +var fieldIDToName_Sampler = map[int16]string{ + 1: "sample_rate", + 2: "sample_size", + 3: "is_cycle", + 4: "cycle_count", + 5: "cycle_interval", + 6: "cycle_time_unit", +} + +func (p *Sampler) IsSetSampleRate() bool { + return p.SampleRate != nil +} + +func (p *Sampler) IsSetSampleSize() bool { + return p.SampleSize != nil +} + +func (p *Sampler) IsSetIsCycle() bool { + return p.IsCycle != nil +} + +func (p *Sampler) IsSetCycleCount() bool { + return p.CycleCount != nil +} + +func (p *Sampler) IsSetCycleInterval() bool { + return p.CycleInterval != nil +} + +func (p *Sampler) IsSetCycleTimeUnit() bool { + return p.CycleTimeUnit != nil +} + +func (p *Sampler) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.DOUBLE { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.BOOL { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.I64 { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.I64 { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.STRING { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Sampler[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *Sampler) ReadField1(iprot thrift.TProtocol) error { + + var _field *float64 + if v, err := iprot.ReadDouble(); err != nil { + return err + } else { + _field = &v + } + p.SampleRate = _field + return nil +} +func (p *Sampler) ReadField2(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.SampleSize = _field + return nil +} +func (p *Sampler) ReadField3(iprot thrift.TProtocol) error { + + var _field *bool + if v, err := iprot.ReadBool(); err != nil { + return err + } else { + _field = &v + } + p.IsCycle = _field + return nil +} +func (p *Sampler) ReadField4(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.CycleCount = _field + return nil +} +func (p *Sampler) ReadField5(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.CycleInterval = _field + return nil +} +func (p *Sampler) ReadField6(iprot thrift.TProtocol) error { + + var _field *TimeUnit + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.CycleTimeUnit = _field + return nil +} + +func (p *Sampler) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("Sampler"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *Sampler) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetSampleRate() { + if err = oprot.WriteFieldBegin("sample_rate", thrift.DOUBLE, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteDouble(*p.SampleRate); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *Sampler) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetSampleSize() { + if err = oprot.WriteFieldBegin("sample_size", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.SampleSize); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *Sampler) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetIsCycle() { + if err = oprot.WriteFieldBegin("is_cycle", thrift.BOOL, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteBool(*p.IsCycle); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *Sampler) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetCycleCount() { + if err = oprot.WriteFieldBegin("cycle_count", thrift.I64, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.CycleCount); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *Sampler) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetCycleInterval() { + if err = oprot.WriteFieldBegin("cycle_interval", thrift.I64, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.CycleInterval); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *Sampler) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetCycleTimeUnit() { + if err = oprot.WriteFieldBegin("cycle_time_unit", thrift.STRING, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.CycleTimeUnit); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} + +func (p *Sampler) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("Sampler(%+v)", *p) + +} + +func (p *Sampler) DeepEqual(ano *Sampler) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.SampleRate) { + return false + } + if !p.Field2DeepEqual(ano.SampleSize) { + return false + } + if !p.Field3DeepEqual(ano.IsCycle) { + return false + } + if !p.Field4DeepEqual(ano.CycleCount) { + return false + } + if !p.Field5DeepEqual(ano.CycleInterval) { + return false + } + if !p.Field6DeepEqual(ano.CycleTimeUnit) { + return false + } + return true +} + +func (p *Sampler) Field1DeepEqual(src *float64) bool { + + if p.SampleRate == src { + return true + } else if p.SampleRate == nil || src == nil { + return false + } + if *p.SampleRate != *src { + return false + } + return true +} +func (p *Sampler) Field2DeepEqual(src *int64) bool { + + if p.SampleSize == src { + return true + } else if p.SampleSize == nil || src == nil { + return false + } + if *p.SampleSize != *src { + return false + } + return true +} +func (p *Sampler) Field3DeepEqual(src *bool) bool { + + if p.IsCycle == src { + return true + } else if p.IsCycle == nil || src == nil { + return false + } + if *p.IsCycle != *src { + return false + } + return true +} +func (p *Sampler) Field4DeepEqual(src *int64) bool { + + if p.CycleCount == src { + return true + } else if p.CycleCount == nil || src == nil { + return false + } + if *p.CycleCount != *src { + return false + } + return true +} +func (p *Sampler) Field5DeepEqual(src *int64) bool { + + if p.CycleInterval == src { + return true + } else if p.CycleInterval == nil || src == nil { + return false + } + if *p.CycleInterval != *src { + return false + } + return true +} +func (p *Sampler) Field6DeepEqual(src *TimeUnit) bool { + + if p.CycleTimeUnit == src { + return true + } else if p.CycleTimeUnit == nil || src == nil { + return false + } + if strings.Compare(*p.CycleTimeUnit, *src) != 0 { + return false + } + return true +} + +type EffectiveTime struct { + // ms timestamp + StartAt *int64 `thrift:"start_at,1,optional" frugal:"1,optional,i64" form:"start_at" json:"start_at,omitempty" query:"start_at"` + // ms timestamp + EndAt *int64 `thrift:"end_at,2,optional" frugal:"2,optional,i64" form:"end_at" json:"end_at,omitempty" query:"end_at"` +} + +func NewEffectiveTime() *EffectiveTime { + return &EffectiveTime{} +} + +func (p *EffectiveTime) InitDefault() { +} + +var EffectiveTime_StartAt_DEFAULT int64 + +func (p *EffectiveTime) GetStartAt() (v int64) { + if p == nil { + return + } + if !p.IsSetStartAt() { + return EffectiveTime_StartAt_DEFAULT + } + return *p.StartAt +} + +var EffectiveTime_EndAt_DEFAULT int64 + +func (p *EffectiveTime) GetEndAt() (v int64) { + if p == nil { + return + } + if !p.IsSetEndAt() { + return EffectiveTime_EndAt_DEFAULT + } + return *p.EndAt +} +func (p *EffectiveTime) SetStartAt(val *int64) { + p.StartAt = val +} +func (p *EffectiveTime) SetEndAt(val *int64) { + p.EndAt = val +} + +var fieldIDToName_EffectiveTime = map[int16]string{ + 1: "start_at", + 2: "end_at", +} + +func (p *EffectiveTime) IsSetStartAt() bool { + return p.StartAt != nil +} + +func (p *EffectiveTime) IsSetEndAt() bool { + return p.EndAt != nil +} + +func (p *EffectiveTime) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EffectiveTime[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *EffectiveTime) ReadField1(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.StartAt = _field + return nil +} +func (p *EffectiveTime) ReadField2(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.EndAt = _field + return nil +} + +func (p *EffectiveTime) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("EffectiveTime"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *EffectiveTime) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetStartAt() { + if err = oprot.WriteFieldBegin("start_at", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.StartAt); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *EffectiveTime) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetEndAt() { + if err = oprot.WriteFieldBegin("end_at", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.EndAt); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *EffectiveTime) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("EffectiveTime(%+v)", *p) + +} + +func (p *EffectiveTime) DeepEqual(ano *EffectiveTime) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.StartAt) { + return false + } + if !p.Field2DeepEqual(ano.EndAt) { + return false + } + return true +} + +func (p *EffectiveTime) Field1DeepEqual(src *int64) bool { + + if p.StartAt == src { + return true + } else if p.StartAt == nil || src == nil { + return false + } + if *p.StartAt != *src { + return false + } + return true +} +func (p *EffectiveTime) Field2DeepEqual(src *int64) bool { + + if p.EndAt == src { + return true + } else if p.EndAt == nil || src == nil { + return false + } + if *p.EndAt != *src { + return false + } + return true +} + +// TaskConfig +type TaskConfig struct { + // 配置的评测规则信息 + AutoEvaluateConfigs []*AutoEvaluateConfig `thrift:"auto_evaluate_configs,1,optional" frugal:"1,optional,list" form:"auto_evaluate_configs" json:"auto_evaluate_configs,omitempty" query:"auto_evaluate_configs"` +} + +func NewTaskConfig() *TaskConfig { + return &TaskConfig{} +} + +func (p *TaskConfig) InitDefault() { +} + +var TaskConfig_AutoEvaluateConfigs_DEFAULT []*AutoEvaluateConfig + +func (p *TaskConfig) GetAutoEvaluateConfigs() (v []*AutoEvaluateConfig) { + if p == nil { + return + } + if !p.IsSetAutoEvaluateConfigs() { + return TaskConfig_AutoEvaluateConfigs_DEFAULT + } + return p.AutoEvaluateConfigs +} +func (p *TaskConfig) SetAutoEvaluateConfigs(val []*AutoEvaluateConfig) { + p.AutoEvaluateConfigs = val +} + +var fieldIDToName_TaskConfig = map[int16]string{ + 1: "auto_evaluate_configs", +} + +func (p *TaskConfig) IsSetAutoEvaluateConfigs() bool { + return p.AutoEvaluateConfigs != nil +} + +func (p *TaskConfig) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskConfig[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskConfig) ReadField1(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*AutoEvaluateConfig, 0, size) + values := make([]AutoEvaluateConfig, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.AutoEvaluateConfigs = _field + return nil +} + +func (p *TaskConfig) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("TaskConfig"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskConfig) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetAutoEvaluateConfigs() { + if err = oprot.WriteFieldBegin("auto_evaluate_configs", thrift.LIST, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.AutoEvaluateConfigs)); err != nil { + return err + } + for _, v := range p.AutoEvaluateConfigs { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TaskConfig) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskConfig(%+v)", *p) + +} + +func (p *TaskConfig) DeepEqual(ano *TaskConfig) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.AutoEvaluateConfigs) { + return false + } + return true +} + +func (p *TaskConfig) Field1DeepEqual(src []*AutoEvaluateConfig) bool { + + if len(p.AutoEvaluateConfigs) != len(src) { + return false + } + for i, v := range p.AutoEvaluateConfigs { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +type AutoEvaluateConfig struct { + EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` + EvaluatorID int64 `thrift:"evaluator_id,2,required" frugal:"2,required,i64" form:"evaluator_id,required" json:"evaluator_id,required" query:"evaluator_id,required"` + FieldMappings []*FieldMapping `thrift:"field_mappings,3,required" frugal:"3,required,list" form:"field_mappings,required" json:"field_mappings,required" query:"field_mappings,required"` +} + +func NewAutoEvaluateConfig() *AutoEvaluateConfig { + return &AutoEvaluateConfig{} +} + +func (p *AutoEvaluateConfig) InitDefault() { +} + +func (p *AutoEvaluateConfig) GetEvaluatorVersionID() (v int64) { + if p != nil { + return p.EvaluatorVersionID + } + return +} + +func (p *AutoEvaluateConfig) GetEvaluatorID() (v int64) { + if p != nil { + return p.EvaluatorID + } + return +} + +func (p *AutoEvaluateConfig) GetFieldMappings() (v []*FieldMapping) { + if p != nil { + return p.FieldMappings + } + return +} +func (p *AutoEvaluateConfig) SetEvaluatorVersionID(val int64) { + p.EvaluatorVersionID = val +} +func (p *AutoEvaluateConfig) SetEvaluatorID(val int64) { + p.EvaluatorID = val +} +func (p *AutoEvaluateConfig) SetFieldMappings(val []*FieldMapping) { + p.FieldMappings = val +} + +var fieldIDToName_AutoEvaluateConfig = map[int16]string{ + 1: "evaluator_version_id", + 2: "evaluator_id", + 3: "field_mappings", +} + +func (p *AutoEvaluateConfig) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluatorVersionID bool = false + var issetEvaluatorID bool = false + var issetFieldMappings bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorVersionID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.LIST { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetFieldMappings = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetEvaluatorVersionID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetFieldMappings { + fieldId = 3 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AutoEvaluateConfig[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_AutoEvaluateConfig[fieldId])) +} + +func (p *AutoEvaluateConfig) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorVersionID = _field + return nil +} +func (p *AutoEvaluateConfig) ReadField2(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorID = _field + return nil +} +func (p *AutoEvaluateConfig) ReadField3(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*FieldMapping, 0, size) + values := make([]FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldMappings = _field + return nil +} + +func (p *AutoEvaluateConfig) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("AutoEvaluateConfig"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *AutoEvaluateConfig) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_version_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EvaluatorVersionID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *AutoEvaluateConfig) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EvaluatorID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *AutoEvaluateConfig) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { + return err + } + for _, v := range p.FieldMappings { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *AutoEvaluateConfig) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("AutoEvaluateConfig(%+v)", *p) + +} + +func (p *AutoEvaluateConfig) DeepEqual(ano *AutoEvaluateConfig) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.EvaluatorVersionID) { + return false + } + if !p.Field2DeepEqual(ano.EvaluatorID) { + return false + } + if !p.Field3DeepEqual(ano.FieldMappings) { + return false + } + return true +} + +func (p *AutoEvaluateConfig) Field1DeepEqual(src int64) bool { + + if p.EvaluatorVersionID != src { + return false + } + return true +} +func (p *AutoEvaluateConfig) Field2DeepEqual(src int64) bool { + + if p.EvaluatorID != src { + return false + } + return true +} +func (p *AutoEvaluateConfig) Field3DeepEqual(src []*FieldMapping) bool { + + if len(p.FieldMappings) != len(src) { + return false + } + for i, v := range p.FieldMappings { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +// TaskDetail +type TaskDetail struct { + SuccessCount *int64 `thrift:"success_count,1,optional" frugal:"1,optional,i64" form:"success_count" json:"success_count,omitempty" query:"success_count"` + FailedCount *int64 `thrift:"failed_count,2,optional" frugal:"2,optional,i64" form:"failed_count" json:"failed_count,omitempty" query:"failed_count"` +} + +func NewTaskDetail() *TaskDetail { + return &TaskDetail{} +} + +func (p *TaskDetail) InitDefault() { +} + +var TaskDetail_SuccessCount_DEFAULT int64 + +func (p *TaskDetail) GetSuccessCount() (v int64) { + if p == nil { + return + } + if !p.IsSetSuccessCount() { + return TaskDetail_SuccessCount_DEFAULT + } + return *p.SuccessCount +} + +var TaskDetail_FailedCount_DEFAULT int64 + +func (p *TaskDetail) GetFailedCount() (v int64) { + if p == nil { + return + } + if !p.IsSetFailedCount() { + return TaskDetail_FailedCount_DEFAULT + } + return *p.FailedCount +} +func (p *TaskDetail) SetSuccessCount(val *int64) { + p.SuccessCount = val +} +func (p *TaskDetail) SetFailedCount(val *int64) { + p.FailedCount = val +} + +var fieldIDToName_TaskDetail = map[int16]string{ + 1: "success_count", + 2: "failed_count", +} + +func (p *TaskDetail) IsSetSuccessCount() bool { + return p.SuccessCount != nil +} + +func (p *TaskDetail) IsSetFailedCount() bool { + return p.FailedCount != nil +} + +func (p *TaskDetail) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskDetail[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskDetail) ReadField1(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.SuccessCount = _field + return nil +} +func (p *TaskDetail) ReadField2(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.FailedCount = _field + return nil +} + +func (p *TaskDetail) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("TaskDetail"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskDetail) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccessCount() { + if err = oprot.WriteFieldBegin("success_count", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.SuccessCount); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *TaskDetail) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetFailedCount() { + if err = oprot.WriteFieldBegin("failed_count", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.FailedCount); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *TaskDetail) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskDetail(%+v)", *p) + +} + +func (p *TaskDetail) DeepEqual(ano *TaskDetail) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.SuccessCount) { + return false + } + if !p.Field2DeepEqual(ano.FailedCount) { + return false + } + return true +} + +func (p *TaskDetail) Field1DeepEqual(src *int64) bool { + + if p.SuccessCount == src { + return true + } else if p.SuccessCount == nil || src == nil { + return false + } + if *p.SuccessCount != *src { + return false + } + return true +} +func (p *TaskDetail) Field2DeepEqual(src *int64) bool { + + if p.FailedCount == src { + return true + } else if p.FailedCount == nil || src == nil { + return false + } + if *p.FailedCount != *src { + return false + } + return true +} + +type FieldMapping struct { + // 数据集字段约束 + FieldSchema *eval_set.FieldSchema `thrift:"field_schema,1,required" frugal:"1,required,eval_set.FieldSchema" form:"field_schema,required" json:"field_schema,required" query:"field_schema,required"` + TraceFieldKey string `thrift:"trace_field_key,2,required" frugal:"2,required,string" form:"trace_field_key,required" json:"trace_field_key,required" query:"trace_field_key,required"` + TraceFieldJsonpath string `thrift:"trace_field_jsonpath,3,required" frugal:"3,required,string" form:"trace_field_jsonpath,required" json:"trace_field_jsonpath,required" query:"trace_field_jsonpath,required"` + EvalSetName *string `thrift:"eval_set_name,4,optional" frugal:"4,optional,string" form:"eval_set_name" json:"eval_set_name,omitempty" query:"eval_set_name"` +} + +func NewFieldMapping() *FieldMapping { + return &FieldMapping{} +} + +func (p *FieldMapping) InitDefault() { +} + +var FieldMapping_FieldSchema_DEFAULT *eval_set.FieldSchema + +func (p *FieldMapping) GetFieldSchema() (v *eval_set.FieldSchema) { + if p == nil { + return + } + if !p.IsSetFieldSchema() { + return FieldMapping_FieldSchema_DEFAULT + } + return p.FieldSchema +} + +func (p *FieldMapping) GetTraceFieldKey() (v string) { + if p != nil { + return p.TraceFieldKey + } + return +} + +func (p *FieldMapping) GetTraceFieldJsonpath() (v string) { + if p != nil { + return p.TraceFieldJsonpath + } + return +} + +var FieldMapping_EvalSetName_DEFAULT string + +func (p *FieldMapping) GetEvalSetName() (v string) { + if p == nil { + return + } + if !p.IsSetEvalSetName() { + return FieldMapping_EvalSetName_DEFAULT + } + return *p.EvalSetName +} +func (p *FieldMapping) SetFieldSchema(val *eval_set.FieldSchema) { + p.FieldSchema = val +} +func (p *FieldMapping) SetTraceFieldKey(val string) { + p.TraceFieldKey = val +} +func (p *FieldMapping) SetTraceFieldJsonpath(val string) { + p.TraceFieldJsonpath = val +} +func (p *FieldMapping) SetEvalSetName(val *string) { + p.EvalSetName = val +} + +var fieldIDToName_FieldMapping = map[int16]string{ + 1: "field_schema", + 2: "trace_field_key", + 3: "trace_field_jsonpath", + 4: "eval_set_name", +} + +func (p *FieldMapping) IsSetFieldSchema() bool { + return p.FieldSchema != nil +} + +func (p *FieldMapping) IsSetEvalSetName() bool { + return p.EvalSetName != nil +} + +func (p *FieldMapping) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetFieldSchema bool = false + var issetTraceFieldKey bool = false + var issetTraceFieldJsonpath bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetFieldSchema = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetTraceFieldKey = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetTraceFieldJsonpath = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRING { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetFieldSchema { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetTraceFieldKey { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetTraceFieldJsonpath { + fieldId = 3 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldMapping[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_FieldMapping[fieldId])) +} + +func (p *FieldMapping) ReadField1(iprot thrift.TProtocol) error { + _field := eval_set.NewFieldSchema() + if err := _field.Read(iprot); err != nil { + return err + } + p.FieldSchema = _field + return nil +} +func (p *FieldMapping) ReadField2(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.TraceFieldKey = _field + return nil +} +func (p *FieldMapping) ReadField3(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.TraceFieldJsonpath = _field + return nil +} +func (p *FieldMapping) ReadField4(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.EvalSetName = _field + return nil +} + +func (p *FieldMapping) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("FieldMapping"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *FieldMapping) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("field_schema", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.FieldSchema.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *FieldMapping) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("trace_field_key", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.TraceFieldKey); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *FieldMapping) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("trace_field_jsonpath", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.TraceFieldJsonpath); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *FieldMapping) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetEvalSetName() { + if err = oprot.WriteFieldBegin("eval_set_name", thrift.STRING, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.EvalSetName); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} + +func (p *FieldMapping) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("FieldMapping(%+v)", *p) + +} + +func (p *FieldMapping) DeepEqual(ano *FieldMapping) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.FieldSchema) { + return false + } + if !p.Field2DeepEqual(ano.TraceFieldKey) { + return false + } + if !p.Field3DeepEqual(ano.TraceFieldJsonpath) { + return false + } + if !p.Field4DeepEqual(ano.EvalSetName) { + return false + } + return true +} + +func (p *FieldMapping) Field1DeepEqual(src *eval_set.FieldSchema) bool { + + if !p.FieldSchema.DeepEqual(src) { + return false + } + return true +} +func (p *FieldMapping) Field2DeepEqual(src string) bool { + + if strings.Compare(p.TraceFieldKey, src) != 0 { + return false + } + return true +} +func (p *FieldMapping) Field3DeepEqual(src string) bool { + + if strings.Compare(p.TraceFieldJsonpath, src) != 0 { + return false + } + return true +} +func (p *FieldMapping) Field4DeepEqual(src *string) bool { + + if p.EvalSetName == src { + return true + } else if p.EvalSetName == nil || src == nil { + return false + } + if strings.Compare(*p.EvalSetName, *src) != 0 { + return false + } + return true +} + +// TaskRun +type TaskRun struct { + // 任务 run id + ID *int64 `thrift:"id,1,optional" frugal:"1,optional,i64" form:"id" json:"id,omitempty" query:"id"` + // 所在空间 + WorkspaceID *int64 `thrift:"workspace_id,2,optional" frugal:"2,optional,i64" form:"workspace_id" json:"workspace_id,omitempty" query:"workspace_id"` + // 任务 id + TaskID *int64 `thrift:"task_id,3,optional" frugal:"3,optional,i64" form:"task_id" json:"task_id,omitempty" query:"task_id"` + // 类型 + TaskType *TaskType `thrift:"task_type,4,optional" frugal:"4,optional,string" form:"task_type" json:"task_type,omitempty" query:"task_type"` + StartRunAt int64 `thrift:"start_run_at,5,required" frugal:"5,required,i64" form:"start_run_at,required" json:"start_run_at,required" query:"start_run_at,required"` + EndRunAt int64 `thrift:"end_run_at,6,required" frugal:"6,required,i64" form:"end_run_at,required" json:"end_run_at,required" query:"end_run_at,required"` + // 配置 + TaskRunConfig *TaskRunConfig `thrift:"task_run_config,7,optional" frugal:"7,optional,TaskRunConfig" form:"task_run_config" json:"task_run_config,omitempty" query:"task_run_config"` +} + +func NewTaskRun() *TaskRun { + return &TaskRun{} +} + +func (p *TaskRun) InitDefault() { +} + +var TaskRun_ID_DEFAULT int64 + +func (p *TaskRun) GetID() (v int64) { + if p == nil { + return + } + if !p.IsSetID() { + return TaskRun_ID_DEFAULT + } + return *p.ID +} + +var TaskRun_WorkspaceID_DEFAULT int64 + +func (p *TaskRun) GetWorkspaceID() (v int64) { + if p == nil { + return + } + if !p.IsSetWorkspaceID() { + return TaskRun_WorkspaceID_DEFAULT + } + return *p.WorkspaceID +} + +var TaskRun_TaskID_DEFAULT int64 + +func (p *TaskRun) GetTaskID() (v int64) { + if p == nil { + return + } + if !p.IsSetTaskID() { + return TaskRun_TaskID_DEFAULT + } + return *p.TaskID +} + +var TaskRun_TaskType_DEFAULT TaskType + +func (p *TaskRun) GetTaskType() (v TaskType) { + if p == nil { + return + } + if !p.IsSetTaskType() { + return TaskRun_TaskType_DEFAULT + } + return *p.TaskType +} + +func (p *TaskRun) GetStartRunAt() (v int64) { + if p != nil { + return p.StartRunAt + } + return +} + +func (p *TaskRun) GetEndRunAt() (v int64) { + if p != nil { + return p.EndRunAt + } + return +} + +var TaskRun_TaskRunConfig_DEFAULT *TaskRunConfig + +func (p *TaskRun) GetTaskRunConfig() (v *TaskRunConfig) { + if p == nil { + return + } + if !p.IsSetTaskRunConfig() { + return TaskRun_TaskRunConfig_DEFAULT + } + return p.TaskRunConfig +} +func (p *TaskRun) SetID(val *int64) { + p.ID = val +} +func (p *TaskRun) SetWorkspaceID(val *int64) { + p.WorkspaceID = val +} +func (p *TaskRun) SetTaskID(val *int64) { + p.TaskID = val +} +func (p *TaskRun) SetTaskType(val *TaskType) { + p.TaskType = val +} +func (p *TaskRun) SetStartRunAt(val int64) { + p.StartRunAt = val +} +func (p *TaskRun) SetEndRunAt(val int64) { + p.EndRunAt = val +} +func (p *TaskRun) SetTaskRunConfig(val *TaskRunConfig) { + p.TaskRunConfig = val +} + +var fieldIDToName_TaskRun = map[int16]string{ + 1: "id", + 2: "workspace_id", + 3: "task_id", + 4: "task_type", + 5: "start_run_at", + 6: "end_run_at", + 7: "task_run_config", +} + +func (p *TaskRun) IsSetID() bool { + return p.ID != nil +} + +func (p *TaskRun) IsSetWorkspaceID() bool { + return p.WorkspaceID != nil +} + +func (p *TaskRun) IsSetTaskID() bool { + return p.TaskID != nil +} + +func (p *TaskRun) IsSetTaskType() bool { + return p.TaskType != nil +} + +func (p *TaskRun) IsSetTaskRunConfig() bool { + return p.TaskRunConfig != nil +} + +func (p *TaskRun) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetStartRunAt bool = false + var issetEndRunAt bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.I64 { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRING { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.I64 { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + issetStartRunAt = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.I64 { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + issetEndRunAt = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 7: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField7(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetStartRunAt { + fieldId = 5 + goto RequiredFieldNotSetError + } + + if !issetEndRunAt { + fieldId = 6 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskRun[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_TaskRun[fieldId])) +} + +func (p *TaskRun) ReadField1(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.ID = _field + return nil +} +func (p *TaskRun) ReadField2(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.WorkspaceID = _field + return nil +} +func (p *TaskRun) ReadField3(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.TaskID = _field + return nil +} +func (p *TaskRun) ReadField4(iprot thrift.TProtocol) error { + + var _field *TaskType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.TaskType = _field + return nil +} +func (p *TaskRun) ReadField5(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.StartRunAt = _field + return nil +} +func (p *TaskRun) ReadField6(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EndRunAt = _field + return nil +} +func (p *TaskRun) ReadField7(iprot thrift.TProtocol) error { + _field := NewTaskRunConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.TaskRunConfig = _field + return nil +} + +func (p *TaskRun) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("TaskRun"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + if err = p.writeField7(oprot); err != nil { + fieldId = 7 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskRun) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetID() { + if err = oprot.WriteFieldBegin("id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.ID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *TaskRun) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetWorkspaceID() { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *TaskRun) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskID() { + if err = oprot.WriteFieldBegin("task_id", thrift.I64, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.TaskID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *TaskRun) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskType() { + if err = oprot.WriteFieldBegin("task_type", thrift.STRING, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.TaskType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *TaskRun) writeField5(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("start_run_at", thrift.I64, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.StartRunAt); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *TaskRun) writeField6(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("end_run_at", thrift.I64, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EndRunAt); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} +func (p *TaskRun) writeField7(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskRunConfig() { + if err = oprot.WriteFieldBegin("task_run_config", thrift.STRUCT, 7); err != nil { + goto WriteFieldBeginError + } + if err := p.TaskRunConfig.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) +} + +func (p *TaskRun) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskRun(%+v)", *p) + +} + +func (p *TaskRun) DeepEqual(ano *TaskRun) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.ID) { + return false + } + if !p.Field2DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field3DeepEqual(ano.TaskID) { + return false + } + if !p.Field4DeepEqual(ano.TaskType) { + return false + } + if !p.Field5DeepEqual(ano.StartRunAt) { + return false + } + if !p.Field6DeepEqual(ano.EndRunAt) { + return false + } + if !p.Field7DeepEqual(ano.TaskRunConfig) { + return false + } + return true +} + +func (p *TaskRun) Field1DeepEqual(src *int64) bool { + + if p.ID == src { + return true + } else if p.ID == nil || src == nil { + return false + } + if *p.ID != *src { + return false + } + return true +} +func (p *TaskRun) Field2DeepEqual(src *int64) bool { + + if p.WorkspaceID == src { + return true + } else if p.WorkspaceID == nil || src == nil { + return false + } + if *p.WorkspaceID != *src { + return false + } + return true +} +func (p *TaskRun) Field3DeepEqual(src *int64) bool { + + if p.TaskID == src { + return true + } else if p.TaskID == nil || src == nil { + return false + } + if *p.TaskID != *src { + return false + } + return true +} +func (p *TaskRun) Field4DeepEqual(src *TaskType) bool { + + if p.TaskType == src { + return true + } else if p.TaskType == nil || src == nil { + return false + } + if strings.Compare(*p.TaskType, *src) != 0 { + return false + } + return true +} +func (p *TaskRun) Field5DeepEqual(src int64) bool { + + if p.StartRunAt != src { + return false + } + return true +} +func (p *TaskRun) Field6DeepEqual(src int64) bool { + + if p.EndRunAt != src { + return false + } + return true +} +func (p *TaskRun) Field7DeepEqual(src *TaskRunConfig) bool { + + if !p.TaskRunConfig.DeepEqual(src) { + return false + } + return true +} + +type TaskRunConfig struct { + // 自动评测对应的运行配置信息 + AutoEvaluateRunConfig *AutoEvaluateRunConfig `thrift:"auto_evaluate_run_config,1,optional" frugal:"1,optional,AutoEvaluateRunConfig" form:"auto_evaluate_run_config" json:"auto_evaluate_run_config,omitempty" query:"auto_evaluate_run_config"` +} + +func NewTaskRunConfig() *TaskRunConfig { + return &TaskRunConfig{} +} + +func (p *TaskRunConfig) InitDefault() { +} + +var TaskRunConfig_AutoEvaluateRunConfig_DEFAULT *AutoEvaluateRunConfig + +func (p *TaskRunConfig) GetAutoEvaluateRunConfig() (v *AutoEvaluateRunConfig) { + if p == nil { + return + } + if !p.IsSetAutoEvaluateRunConfig() { + return TaskRunConfig_AutoEvaluateRunConfig_DEFAULT + } + return p.AutoEvaluateRunConfig +} +func (p *TaskRunConfig) SetAutoEvaluateRunConfig(val *AutoEvaluateRunConfig) { + p.AutoEvaluateRunConfig = val +} + +var fieldIDToName_TaskRunConfig = map[int16]string{ + 1: "auto_evaluate_run_config", +} + +func (p *TaskRunConfig) IsSetAutoEvaluateRunConfig() bool { + return p.AutoEvaluateRunConfig != nil +} + +func (p *TaskRunConfig) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskRunConfig[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskRunConfig) ReadField1(iprot thrift.TProtocol) error { + _field := NewAutoEvaluateRunConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.AutoEvaluateRunConfig = _field + return nil +} + +func (p *TaskRunConfig) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("TaskRunConfig"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskRunConfig) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetAutoEvaluateRunConfig() { + if err = oprot.WriteFieldBegin("auto_evaluate_run_config", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.AutoEvaluateRunConfig.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TaskRunConfig) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskRunConfig(%+v)", *p) + +} + +func (p *TaskRunConfig) DeepEqual(ano *TaskRunConfig) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.AutoEvaluateRunConfig) { + return false + } + return true +} + +func (p *TaskRunConfig) Field1DeepEqual(src *AutoEvaluateRunConfig) bool { + + if !p.AutoEvaluateRunConfig.DeepEqual(src) { + return false + } + return true +} + +type AutoEvaluateRunConfig struct { + EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` + EvaluatorID int64 `thrift:"evaluator_id,2,required" frugal:"2,required,i64" form:"evaluator_id,required" json:"evaluator_id,required" query:"evaluator_id,required"` + FieldMappings []*FieldMapping `thrift:"field_mappings,3,required" frugal:"3,required,list" form:"field_mappings,required" json:"field_mappings,required" query:"field_mappings,required"` +} + +func NewAutoEvaluateRunConfig() *AutoEvaluateRunConfig { + return &AutoEvaluateRunConfig{} +} + +func (p *AutoEvaluateRunConfig) InitDefault() { +} + +func (p *AutoEvaluateRunConfig) GetEvaluatorVersionID() (v int64) { + if p != nil { + return p.EvaluatorVersionID + } + return +} + +func (p *AutoEvaluateRunConfig) GetEvaluatorID() (v int64) { + if p != nil { + return p.EvaluatorID + } + return +} + +func (p *AutoEvaluateRunConfig) GetFieldMappings() (v []*FieldMapping) { + if p != nil { + return p.FieldMappings + } + return +} +func (p *AutoEvaluateRunConfig) SetEvaluatorVersionID(val int64) { + p.EvaluatorVersionID = val +} +func (p *AutoEvaluateRunConfig) SetEvaluatorID(val int64) { + p.EvaluatorID = val +} +func (p *AutoEvaluateRunConfig) SetFieldMappings(val []*FieldMapping) { + p.FieldMappings = val +} + +var fieldIDToName_AutoEvaluateRunConfig = map[int16]string{ + 1: "evaluator_version_id", + 2: "evaluator_id", + 3: "field_mappings", +} + +func (p *AutoEvaluateRunConfig) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluatorVersionID bool = false + var issetEvaluatorID bool = false + var issetFieldMappings bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorVersionID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.LIST { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetFieldMappings = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetEvaluatorVersionID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetFieldMappings { + fieldId = 3 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AutoEvaluateRunConfig[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_AutoEvaluateRunConfig[fieldId])) +} + +func (p *AutoEvaluateRunConfig) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorVersionID = _field + return nil +} +func (p *AutoEvaluateRunConfig) ReadField2(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorID = _field + return nil +} +func (p *AutoEvaluateRunConfig) ReadField3(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*FieldMapping, 0, size) + values := make([]FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldMappings = _field + return nil +} + +func (p *AutoEvaluateRunConfig) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("AutoEvaluateRunConfig"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *AutoEvaluateRunConfig) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_version_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EvaluatorVersionID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *AutoEvaluateRunConfig) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EvaluatorID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *AutoEvaluateRunConfig) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { + return err + } + for _, v := range p.FieldMappings { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *AutoEvaluateRunConfig) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("AutoEvaluateRunConfig(%+v)", *p) + +} + +func (p *AutoEvaluateRunConfig) DeepEqual(ano *AutoEvaluateRunConfig) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.EvaluatorVersionID) { + return false + } + if !p.Field2DeepEqual(ano.EvaluatorID) { + return false + } + if !p.Field3DeepEqual(ano.FieldMappings) { + return false + } + return true +} + +func (p *AutoEvaluateRunConfig) Field1DeepEqual(src int64) bool { + + if p.EvaluatorVersionID != src { + return false + } + return true +} +func (p *AutoEvaluateRunConfig) Field2DeepEqual(src int64) bool { + + if p.EvaluatorID != src { + return false + } + return true +} +func (p *AutoEvaluateRunConfig) Field3DeepEqual(src []*FieldMapping) bool { + + if len(p.FieldMappings) != len(src) { + return false + } + for i, v := range p.FieldMappings { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go new file mode 100644 index 000000000..b035038d5 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go @@ -0,0 +1,106 @@ +// Code generated by Validator v0.2.6. DO NOT EDIT. + +package task + +import ( + "bytes" + "fmt" + "reflect" + "regexp" + "strings" + "time" +) + +// unused protection +var ( + _ = fmt.Formatter(nil) + _ = (*bytes.Buffer)(nil) + _ = (*strings.Builder)(nil) + _ = reflect.Type(nil) + _ = (*regexp.Regexp)(nil) + _ = time.Nanosecond +) + +func (p *Task) IsValid() error { + if p.Rule != nil { + if err := p.Rule.IsValid(); err != nil { + return fmt.Errorf("field Rule not valid, %w", err) + } + } + if p.TaskConfig != nil { + if err := p.TaskConfig.IsValid(); err != nil { + return fmt.Errorf("field TaskConfig not valid, %w", err) + } + } + if p.TaskDetail != nil { + if err := p.TaskDetail.IsValid(); err != nil { + return fmt.Errorf("field TaskDetail not valid, %w", err) + } + } + if p.BaseInfo != nil { + if err := p.BaseInfo.IsValid(); err != nil { + return fmt.Errorf("field BaseInfo not valid, %w", err) + } + } + return nil +} +func (p *Rule) IsValid() error { + if p.SpanFilters != nil { + if err := p.SpanFilters.IsValid(); err != nil { + return fmt.Errorf("field SpanFilters not valid, %w", err) + } + } + if p.Sampler != nil { + if err := p.Sampler.IsValid(); err != nil { + return fmt.Errorf("field Sampler not valid, %w", err) + } + } + if p.EffectiveTime != nil { + if err := p.EffectiveTime.IsValid(); err != nil { + return fmt.Errorf("field EffectiveTime not valid, %w", err) + } + } + return nil +} +func (p *Sampler) IsValid() error { + return nil +} +func (p *EffectiveTime) IsValid() error { + return nil +} +func (p *TaskConfig) IsValid() error { + return nil +} +func (p *AutoEvaluateConfig) IsValid() error { + return nil +} +func (p *TaskDetail) IsValid() error { + return nil +} +func (p *FieldMapping) IsValid() error { + if p.FieldSchema != nil { + if err := p.FieldSchema.IsValid(); err != nil { + return fmt.Errorf("field FieldSchema not valid, %w", err) + } + } + return nil +} +func (p *TaskRun) IsValid() error { + if p.TaskRunConfig != nil { + if err := p.TaskRunConfig.IsValid(); err != nil { + return fmt.Errorf("field TaskRunConfig not valid, %w", err) + } + } + return nil +} +func (p *TaskRunConfig) IsValid() error { + if p.AutoEvaluateRunConfig != nil { + if err := p.AutoEvaluateRunConfig.IsValid(); err != nil { + return fmt.Errorf("field AutoEvaluateRunConfig not valid, %w", err) + } + } + return nil +} +func (p *AutoEvaluateRunConfig) IsValid() error { + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go index 963429900..5d440462a 100644 --- a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go +++ b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go @@ -24,6 +24,14 @@ type Client interface { UpdateManualAnnotation(ctx context.Context, req *trace.UpdateManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.UpdateManualAnnotationResponse, err error) DeleteManualAnnotation(ctx context.Context, req *trace.DeleteManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.DeleteManualAnnotationResponse, err error) ListAnnotations(ctx context.Context, req *trace.ListAnnotationsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationsResponse, err error) + ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) + ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) + ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) + CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) + CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) + UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) + ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) + GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) } // NewClient creates a client for the service defined in IDL. @@ -119,3 +127,43 @@ func (p *kObservabilityTraceServiceClient) ListAnnotations(ctx context.Context, ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.ListAnnotations(ctx, req) } + +func (p *kObservabilityTraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ChangeEvaluatorScore(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ListAnnotationEvaluators(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ExtractSpanInfo(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CheckTaskName(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CreateTask(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.UpdateTask(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ListTasks(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.GetTask(ctx, req) +} diff --git a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go index bab5e1a62..179b44f52 100644 --- a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go +++ b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go @@ -105,6 +105,62 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), + "ChangeEvaluatorScore": kitex.NewMethodInfo( + changeEvaluatorScoreHandler, + newTraceServiceChangeEvaluatorScoreArgs, + newTraceServiceChangeEvaluatorScoreResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ListAnnotationEvaluators": kitex.NewMethodInfo( + listAnnotationEvaluatorsHandler, + newTraceServiceListAnnotationEvaluatorsArgs, + newTraceServiceListAnnotationEvaluatorsResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ExtractSpanInfo": kitex.NewMethodInfo( + extractSpanInfoHandler, + newTraceServiceExtractSpanInfoArgs, + newTraceServiceExtractSpanInfoResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "CheckTaskName": kitex.NewMethodInfo( + checkTaskNameHandler, + newTraceServiceCheckTaskNameArgs, + newTraceServiceCheckTaskNameResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "CreateTask": kitex.NewMethodInfo( + createTaskHandler, + newTraceServiceCreateTaskArgs, + newTraceServiceCreateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "UpdateTask": kitex.NewMethodInfo( + updateTaskHandler, + newTraceServiceUpdateTaskArgs, + newTraceServiceUpdateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ListTasks": kitex.NewMethodInfo( + listTasksHandler, + newTraceServiceListTasksArgs, + newTraceServiceListTasksResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "GetTask": kitex.NewMethodInfo( + getTaskHandler, + newTraceServiceGetTaskArgs, + newTraceServiceGetTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), } var ( @@ -385,6 +441,158 @@ func newTraceServiceListAnnotationsResult() interface{} { return trace.NewTraceServiceListAnnotationsResult() } +func changeEvaluatorScoreHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceChangeEvaluatorScoreArgs) + realResult := result.(*trace.TraceServiceChangeEvaluatorScoreResult) + success, err := handler.(trace.TraceService).ChangeEvaluatorScore(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceChangeEvaluatorScoreArgs() interface{} { + return trace.NewTraceServiceChangeEvaluatorScoreArgs() +} + +func newTraceServiceChangeEvaluatorScoreResult() interface{} { + return trace.NewTraceServiceChangeEvaluatorScoreResult() +} + +func listAnnotationEvaluatorsHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceListAnnotationEvaluatorsArgs) + realResult := result.(*trace.TraceServiceListAnnotationEvaluatorsResult) + success, err := handler.(trace.TraceService).ListAnnotationEvaluators(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceListAnnotationEvaluatorsArgs() interface{} { + return trace.NewTraceServiceListAnnotationEvaluatorsArgs() +} + +func newTraceServiceListAnnotationEvaluatorsResult() interface{} { + return trace.NewTraceServiceListAnnotationEvaluatorsResult() +} + +func extractSpanInfoHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceExtractSpanInfoArgs) + realResult := result.(*trace.TraceServiceExtractSpanInfoResult) + success, err := handler.(trace.TraceService).ExtractSpanInfo(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceExtractSpanInfoArgs() interface{} { + return trace.NewTraceServiceExtractSpanInfoArgs() +} + +func newTraceServiceExtractSpanInfoResult() interface{} { + return trace.NewTraceServiceExtractSpanInfoResult() +} + +func checkTaskNameHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceCheckTaskNameArgs) + realResult := result.(*trace.TraceServiceCheckTaskNameResult) + success, err := handler.(trace.TraceService).CheckTaskName(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceCheckTaskNameArgs() interface{} { + return trace.NewTraceServiceCheckTaskNameArgs() +} + +func newTraceServiceCheckTaskNameResult() interface{} { + return trace.NewTraceServiceCheckTaskNameResult() +} + +func createTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceCreateTaskArgs) + realResult := result.(*trace.TraceServiceCreateTaskResult) + success, err := handler.(trace.TraceService).CreateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceCreateTaskArgs() interface{} { + return trace.NewTraceServiceCreateTaskArgs() +} + +func newTraceServiceCreateTaskResult() interface{} { + return trace.NewTraceServiceCreateTaskResult() +} + +func updateTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceUpdateTaskArgs) + realResult := result.(*trace.TraceServiceUpdateTaskResult) + success, err := handler.(trace.TraceService).UpdateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceUpdateTaskArgs() interface{} { + return trace.NewTraceServiceUpdateTaskArgs() +} + +func newTraceServiceUpdateTaskResult() interface{} { + return trace.NewTraceServiceUpdateTaskResult() +} + +func listTasksHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceListTasksArgs) + realResult := result.(*trace.TraceServiceListTasksResult) + success, err := handler.(trace.TraceService).ListTasks(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceListTasksArgs() interface{} { + return trace.NewTraceServiceListTasksArgs() +} + +func newTraceServiceListTasksResult() interface{} { + return trace.NewTraceServiceListTasksResult() +} + +func getTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceGetTaskArgs) + realResult := result.(*trace.TraceServiceGetTaskResult) + success, err := handler.(trace.TraceService).GetTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceGetTaskArgs() interface{} { + return trace.NewTraceServiceGetTaskArgs() +} + +func newTraceServiceGetTaskResult() interface{} { + return trace.NewTraceServiceGetTaskResult() +} + type kClient struct { c client.Client sc client.Streaming @@ -526,3 +734,83 @@ func (p *kClient) ListAnnotations(ctx context.Context, req *trace.ListAnnotation } return _result.GetSuccess(), nil } + +func (p *kClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) (r *trace.ChangeEvaluatorScoreResponse, err error) { + var _args trace.TraceServiceChangeEvaluatorScoreArgs + _args.Req = req + var _result trace.TraceServiceChangeEvaluatorScoreResult + if err = p.c.Call(ctx, "ChangeEvaluatorScore", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest) (r *trace.ListAnnotationEvaluatorsResponse, err error) { + var _args trace.TraceServiceListAnnotationEvaluatorsArgs + _args.Req = req + var _result trace.TraceServiceListAnnotationEvaluatorsResult + if err = p.c.Call(ctx, "ListAnnotationEvaluators", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest) (r *trace.ExtractSpanInfoResponse, err error) { + var _args trace.TraceServiceExtractSpanInfoArgs + _args.Req = req + var _result trace.TraceServiceExtractSpanInfoResult + if err = p.c.Call(ctx, "ExtractSpanInfo", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest) (r *trace.CheckTaskNameResponse, err error) { + var _args trace.TraceServiceCheckTaskNameArgs + _args.Req = req + var _result trace.TraceServiceCheckTaskNameResult + if err = p.c.Call(ctx, "CheckTaskName", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest) (r *trace.CreateTaskResponse, err error) { + var _args trace.TraceServiceCreateTaskArgs + _args.Req = req + var _result trace.TraceServiceCreateTaskResult + if err = p.c.Call(ctx, "CreateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest) (r *trace.UpdateTaskResponse, err error) { + var _args trace.TraceServiceUpdateTaskArgs + _args.Req = req + var _result trace.TraceServiceUpdateTaskResult + if err = p.c.Call(ctx, "UpdateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest) (r *trace.ListTasksResponse, err error) { + var _args trace.TraceServiceListTasksArgs + _args.Req = req + var _result trace.TraceServiceListTasksResult + if err = p.c.Call(ctx, "ListTasks", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) GetTask(ctx context.Context, req *trace.GetTaskRequest) (r *trace.GetTaskResponse, err error) { + var _args trace.TraceServiceGetTaskArgs + _args.Req = req + var _result trace.TraceServiceGetTaskResult + if err = p.c.Call(ctx, "GetTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index 196ae7d7b..aa43c173e 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -4,6 +4,8 @@ package trace import ( "context" + "database/sql" + "database/sql/driver" "fmt" "github.com/apache/thrift/lib/go/thrift" "github.com/coze-dev/coze-loop/backend/kitex_gen/base" @@ -11,10 +13,70 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/view" "strings" ) +const ( + ContentTypeText = "Text" + + ContentTypeImage = "Image" + + ContentTypeAudio = "Audio" + + ContentTypeMultiPart = "MultiPart" +) + +type OrderType int64 + +const ( + OrderType_Unknown OrderType = 0 + OrderType_Asc OrderType = 1 + OrderType_Desc OrderType = 2 +) + +func (p OrderType) String() string { + switch p { + case OrderType_Unknown: + return "Unknown" + case OrderType_Asc: + return "Asc" + case OrderType_Desc: + return "Desc" + } + return "" +} + +func OrderTypeFromString(s string) (OrderType, error) { + switch s { + case "Unknown": + return OrderType_Unknown, nil + case "Asc": + return OrderType_Asc, nil + case "Desc": + return OrderType_Desc, nil + } + return OrderType(0), fmt.Errorf("not a valid OrderType string") +} + +func OrderTypePtr(v OrderType) *OrderType { return &v } +func (p *OrderType) Scan(value interface{}) (err error) { + var result sql.NullInt64 + err = result.Scan(value) + *p = OrderType(result.Int64) + return +} + +func (p *OrderType) Value() (driver.Value, error) { + if p == nil { + return nil, nil + } + return int64(*p), nil +} + +type ContentType = string + type ListSpansRequest struct { WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` // ms @@ -11016,890 +11078,11426 @@ func (p *ListAnnotationsResponse) Field255DeepEqual(src *base.BaseResp) bool { return true } -type TraceService interface { - ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) - - GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) - - BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) - - IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) - - GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) - - CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) - - UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) - - DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) - - ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) - - CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) - - UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) - - DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) - - ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) +type ChangeEvaluatorScoreRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + EvaluatorRecordID int64 `thrift:"evaluator_record_id,2,required" frugal:"2,required,i64" json:"evaluator_record_id,required" query:"evaluator_record_id,required"` + SpanID string `thrift:"span_id,3,required" frugal:"3,required,string" json:"span_id,required" query:"span_id,required"` + StartTime int64 `thrift:"start_time,4,required" frugal:"4,required,i64" json:"start_time" query:"start_time,required" ` + Correction *annotation.Correction `thrift:"correction,5,required" frugal:"5,required,annotation.Correction" json:"correction,required" query:"correction,required"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } -type TraceServiceClient struct { - c thrift.TClient +func NewChangeEvaluatorScoreRequest() *ChangeEvaluatorScoreRequest { + return &ChangeEvaluatorScoreRequest{} } -func NewTraceServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *TraceServiceClient { - return &TraceServiceClient{ - c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)), - } +func (p *ChangeEvaluatorScoreRequest) InitDefault() { } -func NewTraceServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *TraceServiceClient { - return &TraceServiceClient{ - c: thrift.NewTStandardClient(iprot, oprot), +func (p *ChangeEvaluatorScoreRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID } + return } -func NewTraceServiceClient(c thrift.TClient) *TraceServiceClient { - return &TraceServiceClient{ - c: c, +func (p *ChangeEvaluatorScoreRequest) GetEvaluatorRecordID() (v int64) { + if p != nil { + return p.EvaluatorRecordID } + return } -func (p *TraceServiceClient) Client_() thrift.TClient { - return p.c -} - -func (p *TraceServiceClient) ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) { - var _args TraceServiceListSpansArgs - _args.Req = req - var _result TraceServiceListSpansResult - if err = p.Client_().Call(ctx, "ListSpans", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) { - var _args TraceServiceGetTraceArgs - _args.Req = req - var _result TraceServiceGetTraceResult - if err = p.Client_().Call(ctx, "GetTrace", &_args, &_result); err != nil { - return +func (p *ChangeEvaluatorScoreRequest) GetSpanID() (v string) { + if p != nil { + return p.SpanID } - return _result.GetSuccess(), nil + return } -func (p *TraceServiceClient) BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) { - var _args TraceServiceBatchGetTracesAdvanceInfoArgs - _args.Req = req - var _result TraceServiceBatchGetTracesAdvanceInfoResult - if err = p.Client_().Call(ctx, "BatchGetTracesAdvanceInfo", &_args, &_result); err != nil { - return + +func (p *ChangeEvaluatorScoreRequest) GetStartTime() (v int64) { + if p != nil { + return p.StartTime } - return _result.GetSuccess(), nil + return } -func (p *TraceServiceClient) IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) { - var _args TraceServiceIngestTracesInnerArgs - _args.Req = req - var _result TraceServiceIngestTracesInnerResult - if err = p.Client_().Call(ctx, "IngestTracesInner", &_args, &_result); err != nil { + +var ChangeEvaluatorScoreRequest_Correction_DEFAULT *annotation.Correction + +func (p *ChangeEvaluatorScoreRequest) GetCorrection() (v *annotation.Correction) { + if p == nil { return } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) { - var _args TraceServiceGetTracesMetaInfoArgs - _args.Req = req - var _result TraceServiceGetTracesMetaInfoResult - if err = p.Client_().Call(ctx, "GetTracesMetaInfo", &_args, &_result); err != nil { - return + if !p.IsSetCorrection() { + return ChangeEvaluatorScoreRequest_Correction_DEFAULT } - return _result.GetSuccess(), nil + return p.Correction } -func (p *TraceServiceClient) CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) { - var _args TraceServiceCreateViewArgs - _args.Req = req - var _result TraceServiceCreateViewResult - if err = p.Client_().Call(ctx, "CreateView", &_args, &_result); err != nil { + +var ChangeEvaluatorScoreRequest_Base_DEFAULT *base.Base + +func (p *ChangeEvaluatorScoreRequest) GetBase() (v *base.Base) { + if p == nil { return } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) { - var _args TraceServiceUpdateViewArgs - _args.Req = req - var _result TraceServiceUpdateViewResult - if err = p.Client_().Call(ctx, "UpdateView", &_args, &_result); err != nil { - return + if !p.IsSetBase() { + return ChangeEvaluatorScoreRequest_Base_DEFAULT } - return _result.GetSuccess(), nil + return p.Base } -func (p *TraceServiceClient) DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) { - var _args TraceServiceDeleteViewArgs - _args.Req = req - var _result TraceServiceDeleteViewResult - if err = p.Client_().Call(ctx, "DeleteView", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ChangeEvaluatorScoreRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val } -func (p *TraceServiceClient) ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) { - var _args TraceServiceListViewsArgs - _args.Req = req - var _result TraceServiceListViewsResult - if err = p.Client_().Call(ctx, "ListViews", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ChangeEvaluatorScoreRequest) SetEvaluatorRecordID(val int64) { + p.EvaluatorRecordID = val } -func (p *TraceServiceClient) CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) { - var _args TraceServiceCreateManualAnnotationArgs - _args.Req = req - var _result TraceServiceCreateManualAnnotationResult - if err = p.Client_().Call(ctx, "CreateManualAnnotation", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ChangeEvaluatorScoreRequest) SetSpanID(val string) { + p.SpanID = val } -func (p *TraceServiceClient) UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) { - var _args TraceServiceUpdateManualAnnotationArgs - _args.Req = req - var _result TraceServiceUpdateManualAnnotationResult - if err = p.Client_().Call(ctx, "UpdateManualAnnotation", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ChangeEvaluatorScoreRequest) SetStartTime(val int64) { + p.StartTime = val } -func (p *TraceServiceClient) DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) { - var _args TraceServiceDeleteManualAnnotationArgs - _args.Req = req - var _result TraceServiceDeleteManualAnnotationResult - if err = p.Client_().Call(ctx, "DeleteManualAnnotation", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ChangeEvaluatorScoreRequest) SetCorrection(val *annotation.Correction) { + p.Correction = val } -func (p *TraceServiceClient) ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) { - var _args TraceServiceListAnnotationsArgs - _args.Req = req - var _result TraceServiceListAnnotationsResult - if err = p.Client_().Call(ctx, "ListAnnotations", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ChangeEvaluatorScoreRequest) SetBase(val *base.Base) { + p.Base = val } -type TraceServiceProcessor struct { - processorMap map[string]thrift.TProcessorFunction - handler TraceService +var fieldIDToName_ChangeEvaluatorScoreRequest = map[int16]string{ + 1: "workspace_id", + 2: "evaluator_record_id", + 3: "span_id", + 4: "start_time", + 5: "correction", + 255: "Base", } -func (p *TraceServiceProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) { - p.processorMap[key] = processor +func (p *ChangeEvaluatorScoreRequest) IsSetCorrection() bool { + return p.Correction != nil } -func (p *TraceServiceProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) { - processor, ok = p.processorMap[key] - return processor, ok +func (p *ChangeEvaluatorScoreRequest) IsSetBase() bool { + return p.Base != nil } -func (p *TraceServiceProcessor) ProcessorMap() map[string]thrift.TProcessorFunction { - return p.processorMap -} +func (p *ChangeEvaluatorScoreRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + var issetEvaluatorRecordID bool = false + var issetSpanID bool = false + var issetStartTime bool = false + var issetCorrection bool = false -func NewTraceServiceProcessor(handler TraceService) *TraceServiceProcessor { - self := &TraceServiceProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)} - self.AddToProcessorMap("ListSpans", &traceServiceProcessorListSpans{handler: handler}) - self.AddToProcessorMap("GetTrace", &traceServiceProcessorGetTrace{handler: handler}) - self.AddToProcessorMap("BatchGetTracesAdvanceInfo", &traceServiceProcessorBatchGetTracesAdvanceInfo{handler: handler}) - self.AddToProcessorMap("IngestTracesInner", &traceServiceProcessorIngestTracesInner{handler: handler}) - self.AddToProcessorMap("GetTracesMetaInfo", &traceServiceProcessorGetTracesMetaInfo{handler: handler}) - self.AddToProcessorMap("CreateView", &traceServiceProcessorCreateView{handler: handler}) - self.AddToProcessorMap("UpdateView", &traceServiceProcessorUpdateView{handler: handler}) - self.AddToProcessorMap("DeleteView", &traceServiceProcessorDeleteView{handler: handler}) - self.AddToProcessorMap("ListViews", &traceServiceProcessorListViews{handler: handler}) - self.AddToProcessorMap("CreateManualAnnotation", &traceServiceProcessorCreateManualAnnotation{handler: handler}) - self.AddToProcessorMap("UpdateManualAnnotation", &traceServiceProcessorUpdateManualAnnotation{handler: handler}) - self.AddToProcessorMap("DeleteManualAnnotation", &traceServiceProcessorDeleteManualAnnotation{handler: handler}) - self.AddToProcessorMap("ListAnnotations", &traceServiceProcessorListAnnotations{handler: handler}) - return self -} -func (p *TraceServiceProcessor) Process(ctx context.Context, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - name, _, seqId, err := iprot.ReadMessageBegin() - if err != nil { - return false, err - } - if processor, ok := p.GetProcessorFunction(name); ok { - return processor.Process(ctx, seqId, iprot, oprot) + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError } - iprot.Skip(thrift.STRUCT) - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name) - oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, x -} -type traceServiceProcessorListSpans struct { - handler TraceService -} + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } -func (p *traceServiceProcessorListSpans) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListSpansArgs{} - if err = args.Read(iprot); err != nil { + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorRecordID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetSpanID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.I64 { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + issetStartTime = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + issetCorrection = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorRecordID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetSpanID { + fieldId = 3 + goto RequiredFieldNotSetError + } + + if !issetStartTime { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetCorrection { + fieldId = 5 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreRequest[fieldId])) +} + +func (p *ChangeEvaluatorScoreRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *ChangeEvaluatorScoreRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorRecordID = _field + return nil +} +func (p *ChangeEvaluatorScoreRequest) ReadField3(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.SpanID = _field + return nil +} +func (p *ChangeEvaluatorScoreRequest) ReadField4(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.StartTime = _field + return nil +} +func (p *ChangeEvaluatorScoreRequest) ReadField5(iprot thrift.TProtocol) error { + _field := annotation.NewCorrection() + if err := _field.Read(iprot); err != nil { + return err + } + p.Correction = _field + return nil +} +func (p *ChangeEvaluatorScoreRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *ChangeEvaluatorScoreRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ChangeEvaluatorScoreRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ChangeEvaluatorScoreRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ChangeEvaluatorScoreRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_record_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EvaluatorRecordID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *ChangeEvaluatorScoreRequest) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_id", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.SpanID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *ChangeEvaluatorScoreRequest) writeField4(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("start_time", thrift.I64, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.StartTime); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *ChangeEvaluatorScoreRequest) writeField5(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("correction", thrift.STRUCT, 5); err != nil { + goto WriteFieldBeginError + } + if err := p.Correction.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *ChangeEvaluatorScoreRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ChangeEvaluatorScoreRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ChangeEvaluatorScoreRequest(%+v)", *p) + +} + +func (p *ChangeEvaluatorScoreRequest) DeepEqual(ano *ChangeEvaluatorScoreRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field2DeepEqual(ano.EvaluatorRecordID) { + return false + } + if !p.Field3DeepEqual(ano.SpanID) { + return false + } + if !p.Field4DeepEqual(ano.StartTime) { + return false + } + if !p.Field5DeepEqual(ano.Correction) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *ChangeEvaluatorScoreRequest) Field1DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *ChangeEvaluatorScoreRequest) Field2DeepEqual(src int64) bool { + + if p.EvaluatorRecordID != src { + return false + } + return true +} +func (p *ChangeEvaluatorScoreRequest) Field3DeepEqual(src string) bool { + + if strings.Compare(p.SpanID, src) != 0 { + return false + } + return true +} +func (p *ChangeEvaluatorScoreRequest) Field4DeepEqual(src int64) bool { + + if p.StartTime != src { + return false + } + return true +} +func (p *ChangeEvaluatorScoreRequest) Field5DeepEqual(src *annotation.Correction) bool { + + if !p.Correction.DeepEqual(src) { + return false + } + return true +} +func (p *ChangeEvaluatorScoreRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type ChangeEvaluatorScoreResponse struct { + Annotation *annotation.Annotation `thrift:"annotation,1,required" frugal:"1,required,annotation.Annotation" form:"annotation,required" json:"annotation,required" query:"annotation,required"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewChangeEvaluatorScoreResponse() *ChangeEvaluatorScoreResponse { + return &ChangeEvaluatorScoreResponse{} +} + +func (p *ChangeEvaluatorScoreResponse) InitDefault() { +} + +var ChangeEvaluatorScoreResponse_Annotation_DEFAULT *annotation.Annotation + +func (p *ChangeEvaluatorScoreResponse) GetAnnotation() (v *annotation.Annotation) { + if p == nil { + return + } + if !p.IsSetAnnotation() { + return ChangeEvaluatorScoreResponse_Annotation_DEFAULT + } + return p.Annotation +} + +var ChangeEvaluatorScoreResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *ChangeEvaluatorScoreResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return ChangeEvaluatorScoreResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *ChangeEvaluatorScoreResponse) SetAnnotation(val *annotation.Annotation) { + p.Annotation = val +} +func (p *ChangeEvaluatorScoreResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_ChangeEvaluatorScoreResponse = map[int16]string{ + 1: "annotation", + 255: "BaseResp", +} + +func (p *ChangeEvaluatorScoreResponse) IsSetAnnotation() bool { + return p.Annotation != nil +} + +func (p *ChangeEvaluatorScoreResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *ChangeEvaluatorScoreResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetAnnotation bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetAnnotation = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetAnnotation { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreResponse[fieldId])) +} + +func (p *ChangeEvaluatorScoreResponse) ReadField1(iprot thrift.TProtocol) error { + _field := annotation.NewAnnotation() + if err := _field.Read(iprot); err != nil { + return err + } + p.Annotation = _field + return nil +} +func (p *ChangeEvaluatorScoreResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *ChangeEvaluatorScoreResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ChangeEvaluatorScoreResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ChangeEvaluatorScoreResponse) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("annotation", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Annotation.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ChangeEvaluatorScoreResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ChangeEvaluatorScoreResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ChangeEvaluatorScoreResponse(%+v)", *p) + +} + +func (p *ChangeEvaluatorScoreResponse) DeepEqual(ano *ChangeEvaluatorScoreResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Annotation) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *ChangeEvaluatorScoreResponse) Field1DeepEqual(src *annotation.Annotation) bool { + + if !p.Annotation.DeepEqual(src) { + return false + } + return true +} +func (p *ChangeEvaluatorScoreResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type AnnotationEvaluator struct { + EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` + EvaluatorName string `thrift:"evaluator_name,2,required" frugal:"2,required,string" form:"evaluator_name,required" json:"evaluator_name,required" query:"evaluator_name,required"` + EvaluatorVersion string `thrift:"evaluator_version,3,required" frugal:"3,required,string" form:"evaluator_version,required" json:"evaluator_version,required" query:"evaluator_version,required"` +} + +func NewAnnotationEvaluator() *AnnotationEvaluator { + return &AnnotationEvaluator{} +} + +func (p *AnnotationEvaluator) InitDefault() { +} + +func (p *AnnotationEvaluator) GetEvaluatorVersionID() (v int64) { + if p != nil { + return p.EvaluatorVersionID + } + return +} + +func (p *AnnotationEvaluator) GetEvaluatorName() (v string) { + if p != nil { + return p.EvaluatorName + } + return +} + +func (p *AnnotationEvaluator) GetEvaluatorVersion() (v string) { + if p != nil { + return p.EvaluatorVersion + } + return +} +func (p *AnnotationEvaluator) SetEvaluatorVersionID(val int64) { + p.EvaluatorVersionID = val +} +func (p *AnnotationEvaluator) SetEvaluatorName(val string) { + p.EvaluatorName = val +} +func (p *AnnotationEvaluator) SetEvaluatorVersion(val string) { + p.EvaluatorVersion = val +} + +var fieldIDToName_AnnotationEvaluator = map[int16]string{ + 1: "evaluator_version_id", + 2: "evaluator_name", + 3: "evaluator_version", +} + +func (p *AnnotationEvaluator) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluatorVersionID bool = false + var issetEvaluatorName bool = false + var issetEvaluatorVersion bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorVersionID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorName = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorVersion = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetEvaluatorVersionID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorName { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorVersion { + fieldId = 3 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AnnotationEvaluator[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_AnnotationEvaluator[fieldId])) +} + +func (p *AnnotationEvaluator) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorVersionID = _field + return nil +} +func (p *AnnotationEvaluator) ReadField2(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorName = _field + return nil +} +func (p *AnnotationEvaluator) ReadField3(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorVersion = _field + return nil +} + +func (p *AnnotationEvaluator) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("AnnotationEvaluator"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *AnnotationEvaluator) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_version_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EvaluatorVersionID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *AnnotationEvaluator) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.EvaluatorName); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *AnnotationEvaluator) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_version", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.EvaluatorVersion); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *AnnotationEvaluator) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("AnnotationEvaluator(%+v)", *p) + +} + +func (p *AnnotationEvaluator) DeepEqual(ano *AnnotationEvaluator) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.EvaluatorVersionID) { + return false + } + if !p.Field2DeepEqual(ano.EvaluatorName) { + return false + } + if !p.Field3DeepEqual(ano.EvaluatorVersion) { + return false + } + return true +} + +func (p *AnnotationEvaluator) Field1DeepEqual(src int64) bool { + + if p.EvaluatorVersionID != src { + return false + } + return true +} +func (p *AnnotationEvaluator) Field2DeepEqual(src string) bool { + + if strings.Compare(p.EvaluatorName, src) != 0 { + return false + } + return true +} +func (p *AnnotationEvaluator) Field3DeepEqual(src string) bool { + + if strings.Compare(p.EvaluatorVersion, src) != 0 { + return false + } + return true +} + +type ListAnnotationEvaluatorsRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + Name *string `thrift:"name,2,optional" frugal:"2,optional,string" json:"name,omitempty" query:"name"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` +} + +func NewListAnnotationEvaluatorsRequest() *ListAnnotationEvaluatorsRequest { + return &ListAnnotationEvaluatorsRequest{} +} + +func (p *ListAnnotationEvaluatorsRequest) InitDefault() { +} + +func (p *ListAnnotationEvaluatorsRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} + +var ListAnnotationEvaluatorsRequest_Name_DEFAULT string + +func (p *ListAnnotationEvaluatorsRequest) GetName() (v string) { + if p == nil { + return + } + if !p.IsSetName() { + return ListAnnotationEvaluatorsRequest_Name_DEFAULT + } + return *p.Name +} + +var ListAnnotationEvaluatorsRequest_Base_DEFAULT *base.Base + +func (p *ListAnnotationEvaluatorsRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return ListAnnotationEvaluatorsRequest_Base_DEFAULT + } + return p.Base +} +func (p *ListAnnotationEvaluatorsRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *ListAnnotationEvaluatorsRequest) SetName(val *string) { + p.Name = val +} +func (p *ListAnnotationEvaluatorsRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_ListAnnotationEvaluatorsRequest = map[int16]string{ + 1: "workspace_id", + 2: "name", + 255: "Base", +} + +func (p *ListAnnotationEvaluatorsRequest) IsSetName() bool { + return p.Name != nil +} + +func (p *ListAnnotationEvaluatorsRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *ListAnnotationEvaluatorsRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId])) +} + +func (p *ListAnnotationEvaluatorsRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *ListAnnotationEvaluatorsRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Name = _field + return nil +} +func (p *ListAnnotationEvaluatorsRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *ListAnnotationEvaluatorsRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListAnnotationEvaluatorsRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ListAnnotationEvaluatorsRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ListAnnotationEvaluatorsRequest) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetName() { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *ListAnnotationEvaluatorsRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ListAnnotationEvaluatorsRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ListAnnotationEvaluatorsRequest(%+v)", *p) + +} + +func (p *ListAnnotationEvaluatorsRequest) DeepEqual(ano *ListAnnotationEvaluatorsRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field2DeepEqual(ano.Name) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *ListAnnotationEvaluatorsRequest) Field1DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *ListAnnotationEvaluatorsRequest) Field2DeepEqual(src *string) bool { + + if p.Name == src { + return true + } else if p.Name == nil || src == nil { + return false + } + if strings.Compare(*p.Name, *src) != 0 { + return false + } + return true +} +func (p *ListAnnotationEvaluatorsRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type ListAnnotationEvaluatorsResponse struct { + Evaluators []*AnnotationEvaluator `thrift:"evaluators,1,required" frugal:"1,required,list" form:"evaluators,required" json:"evaluators,required" query:"evaluators,required"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewListAnnotationEvaluatorsResponse() *ListAnnotationEvaluatorsResponse { + return &ListAnnotationEvaluatorsResponse{} +} + +func (p *ListAnnotationEvaluatorsResponse) InitDefault() { +} + +func (p *ListAnnotationEvaluatorsResponse) GetEvaluators() (v []*AnnotationEvaluator) { + if p != nil { + return p.Evaluators + } + return +} + +var ListAnnotationEvaluatorsResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *ListAnnotationEvaluatorsResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return ListAnnotationEvaluatorsResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *ListAnnotationEvaluatorsResponse) SetEvaluators(val []*AnnotationEvaluator) { + p.Evaluators = val +} +func (p *ListAnnotationEvaluatorsResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_ListAnnotationEvaluatorsResponse = map[int16]string{ + 1: "evaluators", + 255: "BaseResp", +} + +func (p *ListAnnotationEvaluatorsResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *ListAnnotationEvaluatorsResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluators bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetEvaluators = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetEvaluators { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId])) +} + +func (p *ListAnnotationEvaluatorsResponse) ReadField1(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*AnnotationEvaluator, 0, size) + values := make([]AnnotationEvaluator, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.Evaluators = _field + return nil +} +func (p *ListAnnotationEvaluatorsResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *ListAnnotationEvaluatorsResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListAnnotationEvaluatorsResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ListAnnotationEvaluatorsResponse) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluators", thrift.LIST, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Evaluators)); err != nil { + return err + } + for _, v := range p.Evaluators { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ListAnnotationEvaluatorsResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ListAnnotationEvaluatorsResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ListAnnotationEvaluatorsResponse(%+v)", *p) + +} + +func (p *ListAnnotationEvaluatorsResponse) DeepEqual(ano *ListAnnotationEvaluatorsResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Evaluators) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *ListAnnotationEvaluatorsResponse) Field1DeepEqual(src []*AnnotationEvaluator) bool { + + if len(p.Evaluators) != len(src) { + return false + } + for i, v := range p.Evaluators { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *ListAnnotationEvaluatorsResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type ExtractSpanInfoRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" json:"trace_id,required" query:"trace_id,required"` + SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" json:"span_ids,required" query:"span_ids,required"` + StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" query:"start_time" ` + EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" query:"end_time" ` + PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` + FieldMappings []*task.FieldMapping `thrift:"field_mappings,7,optional" frugal:"7,optional,list" form:"field_mappings" json:"field_mappings,omitempty" query:"field_mappings"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` +} + +func NewExtractSpanInfoRequest() *ExtractSpanInfoRequest { + return &ExtractSpanInfoRequest{} +} + +func (p *ExtractSpanInfoRequest) InitDefault() { +} + +func (p *ExtractSpanInfoRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} + +func (p *ExtractSpanInfoRequest) GetTraceID() (v string) { + if p != nil { + return p.TraceID + } + return +} + +func (p *ExtractSpanInfoRequest) GetSpanIds() (v []string) { + if p != nil { + return p.SpanIds + } + return +} + +var ExtractSpanInfoRequest_StartTime_DEFAULT int64 + +func (p *ExtractSpanInfoRequest) GetStartTime() (v int64) { + if p == nil { + return + } + if !p.IsSetStartTime() { + return ExtractSpanInfoRequest_StartTime_DEFAULT + } + return *p.StartTime +} + +var ExtractSpanInfoRequest_EndTime_DEFAULT int64 + +func (p *ExtractSpanInfoRequest) GetEndTime() (v int64) { + if p == nil { + return + } + if !p.IsSetEndTime() { + return ExtractSpanInfoRequest_EndTime_DEFAULT + } + return *p.EndTime +} + +var ExtractSpanInfoRequest_PlatformType_DEFAULT common.PlatformType + +func (p *ExtractSpanInfoRequest) GetPlatformType() (v common.PlatformType) { + if p == nil { + return + } + if !p.IsSetPlatformType() { + return ExtractSpanInfoRequest_PlatformType_DEFAULT + } + return *p.PlatformType +} + +var ExtractSpanInfoRequest_FieldMappings_DEFAULT []*task.FieldMapping + +func (p *ExtractSpanInfoRequest) GetFieldMappings() (v []*task.FieldMapping) { + if p == nil { + return + } + if !p.IsSetFieldMappings() { + return ExtractSpanInfoRequest_FieldMappings_DEFAULT + } + return p.FieldMappings +} + +var ExtractSpanInfoRequest_Base_DEFAULT *base.Base + +func (p *ExtractSpanInfoRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return ExtractSpanInfoRequest_Base_DEFAULT + } + return p.Base +} +func (p *ExtractSpanInfoRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *ExtractSpanInfoRequest) SetTraceID(val string) { + p.TraceID = val +} +func (p *ExtractSpanInfoRequest) SetSpanIds(val []string) { + p.SpanIds = val +} +func (p *ExtractSpanInfoRequest) SetStartTime(val *int64) { + p.StartTime = val +} +func (p *ExtractSpanInfoRequest) SetEndTime(val *int64) { + p.EndTime = val +} +func (p *ExtractSpanInfoRequest) SetPlatformType(val *common.PlatformType) { + p.PlatformType = val +} +func (p *ExtractSpanInfoRequest) SetFieldMappings(val []*task.FieldMapping) { + p.FieldMappings = val +} +func (p *ExtractSpanInfoRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_ExtractSpanInfoRequest = map[int16]string{ + 1: "workspace_id", + 2: "trace_id", + 3: "span_ids", + 4: "start_time", + 5: "end_time", + 6: "platform_type", + 7: "field_mappings", + 255: "Base", +} + +func (p *ExtractSpanInfoRequest) IsSetStartTime() bool { + return p.StartTime != nil +} + +func (p *ExtractSpanInfoRequest) IsSetEndTime() bool { + return p.EndTime != nil +} + +func (p *ExtractSpanInfoRequest) IsSetPlatformType() bool { + return p.PlatformType != nil +} + +func (p *ExtractSpanInfoRequest) IsSetFieldMappings() bool { + return p.FieldMappings != nil +} + +func (p *ExtractSpanInfoRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *ExtractSpanInfoRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + var issetTraceID bool = false + var issetSpanIds bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetTraceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.LIST { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetSpanIds = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.I64 { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.I64 { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.STRING { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 7: + if fieldTypeId == thrift.LIST { + if err = p.ReadField7(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetTraceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetSpanIds { + fieldId = 3 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ExtractSpanInfoRequest[fieldId])) +} + +func (p *ExtractSpanInfoRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.TraceID = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField3(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]string, 0, size) + for i := 0; i < size; i++ { + + var _elem string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _elem = v + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.SpanIds = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField4(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.StartTime = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField5(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.EndTime = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField6(iprot thrift.TProtocol) error { + + var _field *common.PlatformType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.PlatformType = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField7(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*task.FieldMapping, 0, size) + values := make([]task.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldMappings = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *ExtractSpanInfoRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ExtractSpanInfoRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + if err = p.writeField7(oprot); err != nil { + fieldId = 7 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ExtractSpanInfoRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("trace_id", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.TraceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_ids", thrift.LIST, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRING, len(p.SpanIds)); err != nil { + return err + } + for _, v := range p.SpanIds { + if err := oprot.WriteString(v); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetStartTime() { + if err = oprot.WriteFieldBegin("start_time", thrift.I64, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.StartTime); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetEndTime() { + if err = oprot.WriteFieldBegin("end_time", thrift.I64, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.EndTime); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetPlatformType() { + if err = oprot.WriteFieldBegin("platform_type", thrift.STRING, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.PlatformType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField7(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldMappings() { + if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 7); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { + return err + } + for _, v := range p.FieldMappings { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ExtractSpanInfoRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ExtractSpanInfoRequest(%+v)", *p) + +} + +func (p *ExtractSpanInfoRequest) DeepEqual(ano *ExtractSpanInfoRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field2DeepEqual(ano.TraceID) { + return false + } + if !p.Field3DeepEqual(ano.SpanIds) { + return false + } + if !p.Field4DeepEqual(ano.StartTime) { + return false + } + if !p.Field5DeepEqual(ano.EndTime) { + return false + } + if !p.Field6DeepEqual(ano.PlatformType) { + return false + } + if !p.Field7DeepEqual(ano.FieldMappings) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *ExtractSpanInfoRequest) Field1DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *ExtractSpanInfoRequest) Field2DeepEqual(src string) bool { + + if strings.Compare(p.TraceID, src) != 0 { + return false + } + return true +} +func (p *ExtractSpanInfoRequest) Field3DeepEqual(src []string) bool { + + if len(p.SpanIds) != len(src) { + return false + } + for i, v := range p.SpanIds { + _src := src[i] + if strings.Compare(v, _src) != 0 { + return false + } + } + return true +} +func (p *ExtractSpanInfoRequest) Field4DeepEqual(src *int64) bool { + + if p.StartTime == src { + return true + } else if p.StartTime == nil || src == nil { + return false + } + if *p.StartTime != *src { + return false + } + return true +} +func (p *ExtractSpanInfoRequest) Field5DeepEqual(src *int64) bool { + + if p.EndTime == src { + return true + } else if p.EndTime == nil || src == nil { + return false + } + if *p.EndTime != *src { + return false + } + return true +} +func (p *ExtractSpanInfoRequest) Field6DeepEqual(src *common.PlatformType) bool { + + if p.PlatformType == src { + return true + } else if p.PlatformType == nil || src == nil { + return false + } + if strings.Compare(*p.PlatformType, *src) != 0 { + return false + } + return true +} +func (p *ExtractSpanInfoRequest) Field7DeepEqual(src []*task.FieldMapping) bool { + + if len(p.FieldMappings) != len(src) { + return false + } + for i, v := range p.FieldMappings { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *ExtractSpanInfoRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type FieldData struct { + Key *string `thrift:"key,1,optional" frugal:"1,optional,string" form:"key" json:"key,omitempty" query:"key"` + Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty" query:"name"` + Content *Content `thrift:"content,3,optional" frugal:"3,optional,Content" form:"content" json:"content,omitempty" query:"content"` +} + +func NewFieldData() *FieldData { + return &FieldData{} +} + +func (p *FieldData) InitDefault() { +} + +var FieldData_Key_DEFAULT string + +func (p *FieldData) GetKey() (v string) { + if p == nil { + return + } + if !p.IsSetKey() { + return FieldData_Key_DEFAULT + } + return *p.Key +} + +var FieldData_Name_DEFAULT string + +func (p *FieldData) GetName() (v string) { + if p == nil { + return + } + if !p.IsSetName() { + return FieldData_Name_DEFAULT + } + return *p.Name +} + +var FieldData_Content_DEFAULT *Content + +func (p *FieldData) GetContent() (v *Content) { + if p == nil { + return + } + if !p.IsSetContent() { + return FieldData_Content_DEFAULT + } + return p.Content +} +func (p *FieldData) SetKey(val *string) { + p.Key = val +} +func (p *FieldData) SetName(val *string) { + p.Name = val +} +func (p *FieldData) SetContent(val *Content) { + p.Content = val +} + +var fieldIDToName_FieldData = map[int16]string{ + 1: "key", + 2: "name", + 3: "content", +} + +func (p *FieldData) IsSetKey() bool { + return p.Key != nil +} + +func (p *FieldData) IsSetName() bool { + return p.Name != nil +} + +func (p *FieldData) IsSetContent() bool { + return p.Content != nil +} + +func (p *FieldData) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldData[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *FieldData) ReadField1(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Key = _field + return nil +} +func (p *FieldData) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Name = _field + return nil +} +func (p *FieldData) ReadField3(iprot thrift.TProtocol) error { + _field := NewContent() + if err := _field.Read(iprot); err != nil { + return err + } + p.Content = _field + return nil +} + +func (p *FieldData) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("FieldData"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *FieldData) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetKey() { + if err = oprot.WriteFieldBegin("key", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Key); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *FieldData) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetName() { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *FieldData) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetContent() { + if err = oprot.WriteFieldBegin("content", thrift.STRUCT, 3); err != nil { + goto WriteFieldBeginError + } + if err := p.Content.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *FieldData) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("FieldData(%+v)", *p) + +} + +func (p *FieldData) DeepEqual(ano *FieldData) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Key) { + return false + } + if !p.Field2DeepEqual(ano.Name) { + return false + } + if !p.Field3DeepEqual(ano.Content) { + return false + } + return true +} + +func (p *FieldData) Field1DeepEqual(src *string) bool { + + if p.Key == src { + return true + } else if p.Key == nil || src == nil { + return false + } + if strings.Compare(*p.Key, *src) != 0 { + return false + } + return true +} +func (p *FieldData) Field2DeepEqual(src *string) bool { + + if p.Name == src { + return true + } else if p.Name == nil || src == nil { + return false + } + if strings.Compare(*p.Name, *src) != 0 { + return false + } + return true +} +func (p *FieldData) Field3DeepEqual(src *Content) bool { + + if !p.Content.DeepEqual(src) { + return false + } + return true +} + +type Content struct { + ContentType *ContentType `thrift:"contentType,1,optional" frugal:"1,optional,string" json:"content_type" form:"contentType" query:"contentType"` + Text *string `thrift:"text,10,optional" frugal:"10,optional,string" json:"text" form:"text" query:"text"` + // 图片内容 + Image *Image `thrift:"image,11,optional" frugal:"11,optional,Image" json:"image" form:"image" query:"image"` + // 图文混排时,图文内容 + MultiPart []*Content `thrift:"multiPart,12,optional" frugal:"12,optional,list" json:"multi_part" form:"multiPart" query:"multiPart"` +} + +func NewContent() *Content { + return &Content{} +} + +func (p *Content) InitDefault() { +} + +var Content_ContentType_DEFAULT ContentType + +func (p *Content) GetContentType() (v ContentType) { + if p == nil { + return + } + if !p.IsSetContentType() { + return Content_ContentType_DEFAULT + } + return *p.ContentType +} + +var Content_Text_DEFAULT string + +func (p *Content) GetText() (v string) { + if p == nil { + return + } + if !p.IsSetText() { + return Content_Text_DEFAULT + } + return *p.Text +} + +var Content_Image_DEFAULT *Image + +func (p *Content) GetImage() (v *Image) { + if p == nil { + return + } + if !p.IsSetImage() { + return Content_Image_DEFAULT + } + return p.Image +} + +var Content_MultiPart_DEFAULT []*Content + +func (p *Content) GetMultiPart() (v []*Content) { + if p == nil { + return + } + if !p.IsSetMultiPart() { + return Content_MultiPart_DEFAULT + } + return p.MultiPart +} +func (p *Content) SetContentType(val *ContentType) { + p.ContentType = val +} +func (p *Content) SetText(val *string) { + p.Text = val +} +func (p *Content) SetImage(val *Image) { + p.Image = val +} +func (p *Content) SetMultiPart(val []*Content) { + p.MultiPart = val +} + +var fieldIDToName_Content = map[int16]string{ + 1: "contentType", + 10: "text", + 11: "image", + 12: "multiPart", +} + +func (p *Content) IsSetContentType() bool { + return p.ContentType != nil +} + +func (p *Content) IsSetText() bool { + return p.Text != nil +} + +func (p *Content) IsSetImage() bool { + return p.Image != nil +} + +func (p *Content) IsSetMultiPart() bool { + return p.MultiPart != nil +} + +func (p *Content) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 10: + if fieldTypeId == thrift.STRING { + if err = p.ReadField10(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 11: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField11(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 12: + if fieldTypeId == thrift.LIST { + if err = p.ReadField12(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Content[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *Content) ReadField1(iprot thrift.TProtocol) error { + + var _field *ContentType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.ContentType = _field + return nil +} +func (p *Content) ReadField10(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Text = _field + return nil +} +func (p *Content) ReadField11(iprot thrift.TProtocol) error { + _field := NewImage() + if err := _field.Read(iprot); err != nil { + return err + } + p.Image = _field + return nil +} +func (p *Content) ReadField12(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*Content, 0, size) + values := make([]Content, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.MultiPart = _field + return nil +} + +func (p *Content) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("Content"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField10(oprot); err != nil { + fieldId = 10 + goto WriteFieldError + } + if err = p.writeField11(oprot); err != nil { + fieldId = 11 + goto WriteFieldError + } + if err = p.writeField12(oprot); err != nil { + fieldId = 12 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *Content) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetContentType() { + if err = oprot.WriteFieldBegin("contentType", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.ContentType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *Content) writeField10(oprot thrift.TProtocol) (err error) { + if p.IsSetText() { + if err = oprot.WriteFieldBegin("text", thrift.STRING, 10); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Text); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) +} +func (p *Content) writeField11(oprot thrift.TProtocol) (err error) { + if p.IsSetImage() { + if err = oprot.WriteFieldBegin("image", thrift.STRUCT, 11); err != nil { + goto WriteFieldBeginError + } + if err := p.Image.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) +} +func (p *Content) writeField12(oprot thrift.TProtocol) (err error) { + if p.IsSetMultiPart() { + if err = oprot.WriteFieldBegin("multiPart", thrift.LIST, 12); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.MultiPart)); err != nil { + return err + } + for _, v := range p.MultiPart { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 end error: ", p), err) +} + +func (p *Content) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("Content(%+v)", *p) + +} + +func (p *Content) DeepEqual(ano *Content) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.ContentType) { + return false + } + if !p.Field10DeepEqual(ano.Text) { + return false + } + if !p.Field11DeepEqual(ano.Image) { + return false + } + if !p.Field12DeepEqual(ano.MultiPart) { + return false + } + return true +} + +func (p *Content) Field1DeepEqual(src *ContentType) bool { + + if p.ContentType == src { + return true + } else if p.ContentType == nil || src == nil { + return false + } + if strings.Compare(*p.ContentType, *src) != 0 { + return false + } + return true +} +func (p *Content) Field10DeepEqual(src *string) bool { + + if p.Text == src { + return true + } else if p.Text == nil || src == nil { + return false + } + if strings.Compare(*p.Text, *src) != 0 { + return false + } + return true +} +func (p *Content) Field11DeepEqual(src *Image) bool { + + if !p.Image.DeepEqual(src) { + return false + } + return true +} +func (p *Content) Field12DeepEqual(src []*Content) bool { + + if len(p.MultiPart) != len(src) { + return false + } + for i, v := range p.MultiPart { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +type Image struct { + Name *string `thrift:"name,1,optional" frugal:"1,optional,string" json:"name" form:"name" query:"name"` + URL *string `thrift:"url,2,optional" frugal:"2,optional,string" json:"url" form:"url" query:"url"` +} + +func NewImage() *Image { + return &Image{} +} + +func (p *Image) InitDefault() { +} + +var Image_Name_DEFAULT string + +func (p *Image) GetName() (v string) { + if p == nil { + return + } + if !p.IsSetName() { + return Image_Name_DEFAULT + } + return *p.Name +} + +var Image_URL_DEFAULT string + +func (p *Image) GetURL() (v string) { + if p == nil { + return + } + if !p.IsSetURL() { + return Image_URL_DEFAULT + } + return *p.URL +} +func (p *Image) SetName(val *string) { + p.Name = val +} +func (p *Image) SetURL(val *string) { + p.URL = val +} + +var fieldIDToName_Image = map[int16]string{ + 1: "name", + 2: "url", +} + +func (p *Image) IsSetName() bool { + return p.Name != nil +} + +func (p *Image) IsSetURL() bool { + return p.URL != nil +} + +func (p *Image) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Image[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *Image) ReadField1(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Name = _field + return nil +} +func (p *Image) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.URL = _field + return nil +} + +func (p *Image) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("Image"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *Image) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetName() { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *Image) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetURL() { + if err = oprot.WriteFieldBegin("url", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.URL); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *Image) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("Image(%+v)", *p) + +} + +func (p *Image) DeepEqual(ano *Image) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Name) { + return false + } + if !p.Field2DeepEqual(ano.URL) { + return false + } + return true +} + +func (p *Image) Field1DeepEqual(src *string) bool { + + if p.Name == src { + return true + } else if p.Name == nil || src == nil { + return false + } + if strings.Compare(*p.Name, *src) != 0 { + return false + } + return true +} +func (p *Image) Field2DeepEqual(src *string) bool { + + if p.URL == src { + return true + } else if p.URL == nil || src == nil { + return false + } + if strings.Compare(*p.URL, *src) != 0 { + return false + } + return true +} + +type SpanInfo struct { + SpanID string `thrift:"span_id,1,required" frugal:"1,required,string" form:"span_id,required" json:"span_id,required" query:"span_id,required"` + FieldList []*FieldData `thrift:"field_list,2,required" frugal:"2,required,list" form:"field_list,required" json:"field_list,required" query:"field_list,required"` +} + +func NewSpanInfo() *SpanInfo { + return &SpanInfo{} +} + +func (p *SpanInfo) InitDefault() { +} + +func (p *SpanInfo) GetSpanID() (v string) { + if p != nil { + return p.SpanID + } + return +} + +func (p *SpanInfo) GetFieldList() (v []*FieldData) { + if p != nil { + return p.FieldList + } + return +} +func (p *SpanInfo) SetSpanID(val string) { + p.SpanID = val +} +func (p *SpanInfo) SetFieldList(val []*FieldData) { + p.FieldList = val +} + +var fieldIDToName_SpanInfo = map[int16]string{ + 1: "span_id", + 2: "field_list", +} + +func (p *SpanInfo) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetSpanID bool = false + var issetFieldList bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetSpanID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.LIST { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetFieldList = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetSpanID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetFieldList { + fieldId = 2 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanInfo[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_SpanInfo[fieldId])) +} + +func (p *SpanInfo) ReadField1(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.SpanID = _field + return nil +} +func (p *SpanInfo) ReadField2(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*FieldData, 0, size) + values := make([]FieldData, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldList = _field + return nil +} + +func (p *SpanInfo) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("SpanInfo"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *SpanInfo) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_id", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.SpanID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *SpanInfo) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("field_list", thrift.LIST, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldList)); err != nil { + return err + } + for _, v := range p.FieldList { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *SpanInfo) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("SpanInfo(%+v)", *p) + +} + +func (p *SpanInfo) DeepEqual(ano *SpanInfo) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.SpanID) { + return false + } + if !p.Field2DeepEqual(ano.FieldList) { + return false + } + return true +} + +func (p *SpanInfo) Field1DeepEqual(src string) bool { + + if strings.Compare(p.SpanID, src) != 0 { + return false + } + return true +} +func (p *SpanInfo) Field2DeepEqual(src []*FieldData) bool { + + if len(p.FieldList) != len(src) { + return false + } + for i, v := range p.FieldList { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +type ExtractSpanInfoResponse struct { + SpanInfos []*SpanInfo `thrift:"span_infos,1,required" frugal:"1,required,list" form:"span_infos,required" json:"span_infos,required" query:"span_infos,required"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewExtractSpanInfoResponse() *ExtractSpanInfoResponse { + return &ExtractSpanInfoResponse{} +} + +func (p *ExtractSpanInfoResponse) InitDefault() { +} + +func (p *ExtractSpanInfoResponse) GetSpanInfos() (v []*SpanInfo) { + if p != nil { + return p.SpanInfos + } + return +} + +var ExtractSpanInfoResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *ExtractSpanInfoResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return ExtractSpanInfoResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *ExtractSpanInfoResponse) SetSpanInfos(val []*SpanInfo) { + p.SpanInfos = val +} +func (p *ExtractSpanInfoResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_ExtractSpanInfoResponse = map[int16]string{ + 1: "span_infos", + 255: "BaseResp", +} + +func (p *ExtractSpanInfoResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *ExtractSpanInfoResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetSpanInfos bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetSpanInfos = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetSpanInfos { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ExtractSpanInfoResponse[fieldId])) +} + +func (p *ExtractSpanInfoResponse) ReadField1(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*SpanInfo, 0, size) + values := make([]SpanInfo, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.SpanInfos = _field + return nil +} +func (p *ExtractSpanInfoResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *ExtractSpanInfoResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ExtractSpanInfoResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ExtractSpanInfoResponse) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_infos", thrift.LIST, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.SpanInfos)); err != nil { + return err + } + for _, v := range p.SpanInfos { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ExtractSpanInfoResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ExtractSpanInfoResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ExtractSpanInfoResponse(%+v)", *p) + +} + +func (p *ExtractSpanInfoResponse) DeepEqual(ano *ExtractSpanInfoResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.SpanInfos) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *ExtractSpanInfoResponse) Field1DeepEqual(src []*SpanInfo) bool { + + if len(p.SpanInfos) != len(src) { + return false + } + for i, v := range p.SpanInfos { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *ExtractSpanInfoResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type CreateTaskRequest struct { + Task *task.Task `thrift:"task,1,required" frugal:"1,required,task.Task" form:"task,required" json:"task,required"` + Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` +} + +func NewCreateTaskRequest() *CreateTaskRequest { + return &CreateTaskRequest{} +} + +func (p *CreateTaskRequest) InitDefault() { +} + +var CreateTaskRequest_Task_DEFAULT *task.Task + +func (p *CreateTaskRequest) GetTask() (v *task.Task) { + if p == nil { + return + } + if !p.IsSetTask() { + return CreateTaskRequest_Task_DEFAULT + } + return p.Task +} + +var CreateTaskRequest_Base_DEFAULT *base.Base + +func (p *CreateTaskRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return CreateTaskRequest_Base_DEFAULT + } + return p.Base +} +func (p *CreateTaskRequest) SetTask(val *task.Task) { + p.Task = val +} +func (p *CreateTaskRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_CreateTaskRequest = map[int16]string{ + 1: "task", + 255: "base", +} + +func (p *CreateTaskRequest) IsSetTask() bool { + return p.Task != nil +} + +func (p *CreateTaskRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *CreateTaskRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetTask bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetTask = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetTask { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_CreateTaskRequest[fieldId])) +} + +func (p *CreateTaskRequest) ReadField1(iprot thrift.TProtocol) error { + _field := task.NewTask() + if err := _field.Read(iprot); err != nil { + return err + } + p.Task = _field + return nil +} +func (p *CreateTaskRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *CreateTaskRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateTaskRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *CreateTaskRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("task", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Task.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *CreateTaskRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *CreateTaskRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("CreateTaskRequest(%+v)", *p) + +} + +func (p *CreateTaskRequest) DeepEqual(ano *CreateTaskRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Task) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *CreateTaskRequest) Field1DeepEqual(src *task.Task) bool { + + if !p.Task.DeepEqual(src) { + return false + } + return true +} +func (p *CreateTaskRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type CreateTaskResponse struct { + TaskID *int64 `thrift:"task_id,1,optional" frugal:"1,optional,i64" form:"task_id" json:"task_id,string,omitempty"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewCreateTaskResponse() *CreateTaskResponse { + return &CreateTaskResponse{} +} + +func (p *CreateTaskResponse) InitDefault() { +} + +var CreateTaskResponse_TaskID_DEFAULT int64 + +func (p *CreateTaskResponse) GetTaskID() (v int64) { + if p == nil { + return + } + if !p.IsSetTaskID() { + return CreateTaskResponse_TaskID_DEFAULT + } + return *p.TaskID +} + +var CreateTaskResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *CreateTaskResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return CreateTaskResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *CreateTaskResponse) SetTaskID(val *int64) { + p.TaskID = val +} +func (p *CreateTaskResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_CreateTaskResponse = map[int16]string{ + 1: "task_id", + 255: "BaseResp", +} + +func (p *CreateTaskResponse) IsSetTaskID() bool { + return p.TaskID != nil +} + +func (p *CreateTaskResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *CreateTaskResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *CreateTaskResponse) ReadField1(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.TaskID = _field + return nil +} +func (p *CreateTaskResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *CreateTaskResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateTaskResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *CreateTaskResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskID() { + if err = oprot.WriteFieldBegin("task_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.TaskID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *CreateTaskResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *CreateTaskResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("CreateTaskResponse(%+v)", *p) + +} + +func (p *CreateTaskResponse) DeepEqual(ano *CreateTaskResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.TaskID) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *CreateTaskResponse) Field1DeepEqual(src *int64) bool { + + if p.TaskID == src { + return true + } else if p.TaskID == nil || src == nil { + return false + } + if *p.TaskID != *src { + return false + } + return true +} +func (p *CreateTaskResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type UpdateTaskRequest struct { + TaskID int64 `thrift:"task_id,1,required" frugal:"1,required,i64" json:"task_id,string,required" path:"task_id,required"` + WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" json:"workspace_id" form:"workspace_id,required" ` + TaskStatus *task.TaskStatus `thrift:"task_status,3,optional" frugal:"3,optional,string" form:"task_status" json:"task_status,omitempty"` + Description *string `thrift:"description,4,optional" frugal:"4,optional,string" form:"description" json:"description,omitempty"` + EffectiveTime *task.EffectiveTime `thrift:"effective_time,5,optional" frugal:"5,optional,task.EffectiveTime" form:"effective_time" json:"effective_time,omitempty"` + SampleRate *float64 `thrift:"sample_rate,6,optional" frugal:"6,optional,double" form:"sample_rate" json:"sample_rate,omitempty"` + Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` +} + +func NewUpdateTaskRequest() *UpdateTaskRequest { + return &UpdateTaskRequest{} +} + +func (p *UpdateTaskRequest) InitDefault() { +} + +func (p *UpdateTaskRequest) GetTaskID() (v int64) { + if p != nil { + return p.TaskID + } + return +} + +func (p *UpdateTaskRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} + +var UpdateTaskRequest_TaskStatus_DEFAULT task.TaskStatus + +func (p *UpdateTaskRequest) GetTaskStatus() (v task.TaskStatus) { + if p == nil { + return + } + if !p.IsSetTaskStatus() { + return UpdateTaskRequest_TaskStatus_DEFAULT + } + return *p.TaskStatus +} + +var UpdateTaskRequest_Description_DEFAULT string + +func (p *UpdateTaskRequest) GetDescription() (v string) { + if p == nil { + return + } + if !p.IsSetDescription() { + return UpdateTaskRequest_Description_DEFAULT + } + return *p.Description +} + +var UpdateTaskRequest_EffectiveTime_DEFAULT *task.EffectiveTime + +func (p *UpdateTaskRequest) GetEffectiveTime() (v *task.EffectiveTime) { + if p == nil { + return + } + if !p.IsSetEffectiveTime() { + return UpdateTaskRequest_EffectiveTime_DEFAULT + } + return p.EffectiveTime +} + +var UpdateTaskRequest_SampleRate_DEFAULT float64 + +func (p *UpdateTaskRequest) GetSampleRate() (v float64) { + if p == nil { + return + } + if !p.IsSetSampleRate() { + return UpdateTaskRequest_SampleRate_DEFAULT + } + return *p.SampleRate +} + +var UpdateTaskRequest_Base_DEFAULT *base.Base + +func (p *UpdateTaskRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return UpdateTaskRequest_Base_DEFAULT + } + return p.Base +} +func (p *UpdateTaskRequest) SetTaskID(val int64) { + p.TaskID = val +} +func (p *UpdateTaskRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *UpdateTaskRequest) SetTaskStatus(val *task.TaskStatus) { + p.TaskStatus = val +} +func (p *UpdateTaskRequest) SetDescription(val *string) { + p.Description = val +} +func (p *UpdateTaskRequest) SetEffectiveTime(val *task.EffectiveTime) { + p.EffectiveTime = val +} +func (p *UpdateTaskRequest) SetSampleRate(val *float64) { + p.SampleRate = val +} +func (p *UpdateTaskRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_UpdateTaskRequest = map[int16]string{ + 1: "task_id", + 2: "workspace_id", + 3: "task_status", + 4: "description", + 5: "effective_time", + 6: "sample_rate", + 255: "base", +} + +func (p *UpdateTaskRequest) IsSetTaskStatus() bool { + return p.TaskStatus != nil +} + +func (p *UpdateTaskRequest) IsSetDescription() bool { + return p.Description != nil +} + +func (p *UpdateTaskRequest) IsSetEffectiveTime() bool { + return p.EffectiveTime != nil +} + +func (p *UpdateTaskRequest) IsSetSampleRate() bool { + return p.SampleRate != nil +} + +func (p *UpdateTaskRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *UpdateTaskRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetTaskID bool = false + var issetWorkspaceID bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetTaskID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRING { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.DOUBLE { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetTaskID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetWorkspaceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_UpdateTaskRequest[fieldId])) +} + +func (p *UpdateTaskRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.TaskID = _field + return nil +} +func (p *UpdateTaskRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *UpdateTaskRequest) ReadField3(iprot thrift.TProtocol) error { + + var _field *task.TaskStatus + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.TaskStatus = _field + return nil +} +func (p *UpdateTaskRequest) ReadField4(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Description = _field + return nil +} +func (p *UpdateTaskRequest) ReadField5(iprot thrift.TProtocol) error { + _field := task.NewEffectiveTime() + if err := _field.Read(iprot); err != nil { + return err + } + p.EffectiveTime = _field + return nil +} +func (p *UpdateTaskRequest) ReadField6(iprot thrift.TProtocol) error { + + var _field *float64 + if v, err := iprot.ReadDouble(); err != nil { + return err + } else { + _field = &v + } + p.SampleRate = _field + return nil +} +func (p *UpdateTaskRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *UpdateTaskRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("UpdateTaskRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *UpdateTaskRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("task_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.TaskID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskStatus() { + if err = oprot.WriteFieldBegin("task_status", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.TaskStatus); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetDescription() { + if err = oprot.WriteFieldBegin("description", thrift.STRING, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Description); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetEffectiveTime() { + if err = oprot.WriteFieldBegin("effective_time", thrift.STRUCT, 5); err != nil { + goto WriteFieldBeginError + } + if err := p.EffectiveTime.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetSampleRate() { + if err = oprot.WriteFieldBegin("sample_rate", thrift.DOUBLE, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteDouble(*p.SampleRate); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *UpdateTaskRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("UpdateTaskRequest(%+v)", *p) + +} + +func (p *UpdateTaskRequest) DeepEqual(ano *UpdateTaskRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.TaskID) { + return false + } + if !p.Field2DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field3DeepEqual(ano.TaskStatus) { + return false + } + if !p.Field4DeepEqual(ano.Description) { + return false + } + if !p.Field5DeepEqual(ano.EffectiveTime) { + return false + } + if !p.Field6DeepEqual(ano.SampleRate) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *UpdateTaskRequest) Field1DeepEqual(src int64) bool { + + if p.TaskID != src { + return false + } + return true +} +func (p *UpdateTaskRequest) Field2DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *UpdateTaskRequest) Field3DeepEqual(src *task.TaskStatus) bool { + + if p.TaskStatus == src { + return true + } else if p.TaskStatus == nil || src == nil { + return false + } + if strings.Compare(*p.TaskStatus, *src) != 0 { + return false + } + return true +} +func (p *UpdateTaskRequest) Field4DeepEqual(src *string) bool { + + if p.Description == src { + return true + } else if p.Description == nil || src == nil { + return false + } + if strings.Compare(*p.Description, *src) != 0 { + return false + } + return true +} +func (p *UpdateTaskRequest) Field5DeepEqual(src *task.EffectiveTime) bool { + + if !p.EffectiveTime.DeepEqual(src) { + return false + } + return true +} +func (p *UpdateTaskRequest) Field6DeepEqual(src *float64) bool { + + if p.SampleRate == src { + return true + } else if p.SampleRate == nil || src == nil { + return false + } + if *p.SampleRate != *src { + return false + } + return true +} +func (p *UpdateTaskRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type UpdateTaskResponse struct { + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewUpdateTaskResponse() *UpdateTaskResponse { + return &UpdateTaskResponse{} +} + +func (p *UpdateTaskResponse) InitDefault() { +} + +var UpdateTaskResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *UpdateTaskResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return UpdateTaskResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *UpdateTaskResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_UpdateTaskResponse = map[int16]string{ + 255: "BaseResp", +} + +func (p *UpdateTaskResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *UpdateTaskResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *UpdateTaskResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *UpdateTaskResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("UpdateTaskResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *UpdateTaskResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *UpdateTaskResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("UpdateTaskResponse(%+v)", *p) + +} + +func (p *UpdateTaskResponse) DeepEqual(ano *UpdateTaskResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *UpdateTaskResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type ListTasksRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + TaskFilters *filter.TaskFilterFields `thrift:"task_filters,2,optional" frugal:"2,optional,filter.TaskFilterFields" form:"task_filters" json:"task_filters,omitempty"` + /* default 20 max 200 */ + Limit *int32 `thrift:"limit,101,optional" frugal:"101,optional,i32" form:"limit" json:"limit,omitempty"` + Offset *int32 `thrift:"offset,102,optional" frugal:"102,optional,i32" form:"offset" json:"offset,omitempty"` + OrderBy *OrderType `thrift:"order_by,103,optional" frugal:"103,optional,OrderType" form:"order_by" json:"order_by,omitempty"` + Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` +} + +func NewListTasksRequest() *ListTasksRequest { + return &ListTasksRequest{} +} + +func (p *ListTasksRequest) InitDefault() { +} + +func (p *ListTasksRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} + +var ListTasksRequest_TaskFilters_DEFAULT *filter.TaskFilterFields + +func (p *ListTasksRequest) GetTaskFilters() (v *filter.TaskFilterFields) { + if p == nil { + return + } + if !p.IsSetTaskFilters() { + return ListTasksRequest_TaskFilters_DEFAULT + } + return p.TaskFilters +} + +var ListTasksRequest_Limit_DEFAULT int32 + +func (p *ListTasksRequest) GetLimit() (v int32) { + if p == nil { + return + } + if !p.IsSetLimit() { + return ListTasksRequest_Limit_DEFAULT + } + return *p.Limit +} + +var ListTasksRequest_Offset_DEFAULT int32 + +func (p *ListTasksRequest) GetOffset() (v int32) { + if p == nil { + return + } + if !p.IsSetOffset() { + return ListTasksRequest_Offset_DEFAULT + } + return *p.Offset +} + +var ListTasksRequest_OrderBy_DEFAULT OrderType + +func (p *ListTasksRequest) GetOrderBy() (v OrderType) { + if p == nil { + return + } + if !p.IsSetOrderBy() { + return ListTasksRequest_OrderBy_DEFAULT + } + return *p.OrderBy +} + +var ListTasksRequest_Base_DEFAULT *base.Base + +func (p *ListTasksRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return ListTasksRequest_Base_DEFAULT + } + return p.Base +} +func (p *ListTasksRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *ListTasksRequest) SetTaskFilters(val *filter.TaskFilterFields) { + p.TaskFilters = val +} +func (p *ListTasksRequest) SetLimit(val *int32) { + p.Limit = val +} +func (p *ListTasksRequest) SetOffset(val *int32) { + p.Offset = val +} +func (p *ListTasksRequest) SetOrderBy(val *OrderType) { + p.OrderBy = val +} +func (p *ListTasksRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_ListTasksRequest = map[int16]string{ + 1: "workspace_id", + 2: "task_filters", + 101: "limit", + 102: "offset", + 103: "order_by", + 255: "base", +} + +func (p *ListTasksRequest) IsSetTaskFilters() bool { + return p.TaskFilters != nil +} + +func (p *ListTasksRequest) IsSetLimit() bool { + return p.Limit != nil +} + +func (p *ListTasksRequest) IsSetOffset() bool { + return p.Offset != nil +} + +func (p *ListTasksRequest) IsSetOrderBy() bool { + return p.OrderBy != nil +} + +func (p *ListTasksRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *ListTasksRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 101: + if fieldTypeId == thrift.I32 { + if err = p.ReadField101(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 102: + if fieldTypeId == thrift.I32 { + if err = p.ReadField102(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 103: + if fieldTypeId == thrift.I32 { + if err = p.ReadField103(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListTasksRequest[fieldId])) +} + +func (p *ListTasksRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *ListTasksRequest) ReadField2(iprot thrift.TProtocol) error { + _field := filter.NewTaskFilterFields() + if err := _field.Read(iprot); err != nil { + return err + } + p.TaskFilters = _field + return nil +} +func (p *ListTasksRequest) ReadField101(iprot thrift.TProtocol) error { + + var _field *int32 + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + _field = &v + } + p.Limit = _field + return nil +} +func (p *ListTasksRequest) ReadField102(iprot thrift.TProtocol) error { + + var _field *int32 + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + _field = &v + } + p.Offset = _field + return nil +} +func (p *ListTasksRequest) ReadField103(iprot thrift.TProtocol) error { + + var _field *OrderType + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + tmp := OrderType(v) + _field = &tmp + } + p.OrderBy = _field + return nil +} +func (p *ListTasksRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *ListTasksRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListTasksRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField101(oprot); err != nil { + fieldId = 101 + goto WriteFieldError + } + if err = p.writeField102(oprot); err != nil { + fieldId = 102 + goto WriteFieldError + } + if err = p.writeField103(oprot); err != nil { + fieldId = 103 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ListTasksRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ListTasksRequest) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskFilters() { + if err = oprot.WriteFieldBegin("task_filters", thrift.STRUCT, 2); err != nil { + goto WriteFieldBeginError + } + if err := p.TaskFilters.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *ListTasksRequest) writeField101(oprot thrift.TProtocol) (err error) { + if p.IsSetLimit() { + if err = oprot.WriteFieldBegin("limit", thrift.I32, 101); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(*p.Limit); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 101 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 101 end error: ", p), err) +} +func (p *ListTasksRequest) writeField102(oprot thrift.TProtocol) (err error) { + if p.IsSetOffset() { + if err = oprot.WriteFieldBegin("offset", thrift.I32, 102); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(*p.Offset); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 102 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 102 end error: ", p), err) +} +func (p *ListTasksRequest) writeField103(oprot thrift.TProtocol) (err error) { + if p.IsSetOrderBy() { + if err = oprot.WriteFieldBegin("order_by", thrift.I32, 103); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(int32(*p.OrderBy)); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 103 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 103 end error: ", p), err) +} +func (p *ListTasksRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ListTasksRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ListTasksRequest(%+v)", *p) + +} + +func (p *ListTasksRequest) DeepEqual(ano *ListTasksRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field2DeepEqual(ano.TaskFilters) { + return false + } + if !p.Field101DeepEqual(ano.Limit) { + return false + } + if !p.Field102DeepEqual(ano.Offset) { + return false + } + if !p.Field103DeepEqual(ano.OrderBy) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *ListTasksRequest) Field1DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *ListTasksRequest) Field2DeepEqual(src *filter.TaskFilterFields) bool { + + if !p.TaskFilters.DeepEqual(src) { + return false + } + return true +} +func (p *ListTasksRequest) Field101DeepEqual(src *int32) bool { + + if p.Limit == src { + return true + } else if p.Limit == nil || src == nil { + return false + } + if *p.Limit != *src { + return false + } + return true +} +func (p *ListTasksRequest) Field102DeepEqual(src *int32) bool { + + if p.Offset == src { + return true + } else if p.Offset == nil || src == nil { + return false + } + if *p.Offset != *src { + return false + } + return true +} +func (p *ListTasksRequest) Field103DeepEqual(src *OrderType) bool { + + if p.OrderBy == src { + return true + } else if p.OrderBy == nil || src == nil { + return false + } + if *p.OrderBy != *src { + return false + } + return true +} +func (p *ListTasksRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type ListTasksResponse struct { + Tasks []*task.Task `thrift:"tasks,1,optional" frugal:"1,optional,list" form:"tasks" json:"tasks,omitempty"` + Total *int64 `thrift:"total,100,optional" frugal:"100,optional,i64" form:"total" json:"total,string,omitempty"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewListTasksResponse() *ListTasksResponse { + return &ListTasksResponse{} +} + +func (p *ListTasksResponse) InitDefault() { +} + +var ListTasksResponse_Tasks_DEFAULT []*task.Task + +func (p *ListTasksResponse) GetTasks() (v []*task.Task) { + if p == nil { + return + } + if !p.IsSetTasks() { + return ListTasksResponse_Tasks_DEFAULT + } + return p.Tasks +} + +var ListTasksResponse_Total_DEFAULT int64 + +func (p *ListTasksResponse) GetTotal() (v int64) { + if p == nil { + return + } + if !p.IsSetTotal() { + return ListTasksResponse_Total_DEFAULT + } + return *p.Total +} + +var ListTasksResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *ListTasksResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return ListTasksResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *ListTasksResponse) SetTasks(val []*task.Task) { + p.Tasks = val +} +func (p *ListTasksResponse) SetTotal(val *int64) { + p.Total = val +} +func (p *ListTasksResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_ListTasksResponse = map[int16]string{ + 1: "tasks", + 100: "total", + 255: "BaseResp", +} + +func (p *ListTasksResponse) IsSetTasks() bool { + return p.Tasks != nil +} + +func (p *ListTasksResponse) IsSetTotal() bool { + return p.Total != nil +} + +func (p *ListTasksResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *ListTasksResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 100: + if fieldTypeId == thrift.I64 { + if err = p.ReadField100(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *ListTasksResponse) ReadField1(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*task.Task, 0, size) + values := make([]task.Task, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.Tasks = _field + return nil +} +func (p *ListTasksResponse) ReadField100(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.Total = _field + return nil +} +func (p *ListTasksResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *ListTasksResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListTasksResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField100(oprot); err != nil { + fieldId = 100 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ListTasksResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetTasks() { + if err = oprot.WriteFieldBegin("tasks", thrift.LIST, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Tasks)); err != nil { + return err + } + for _, v := range p.Tasks { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ListTasksResponse) writeField100(oprot thrift.TProtocol) (err error) { + if p.IsSetTotal() { + if err = oprot.WriteFieldBegin("total", thrift.I64, 100); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.Total); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 100 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) +} +func (p *ListTasksResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ListTasksResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ListTasksResponse(%+v)", *p) + +} + +func (p *ListTasksResponse) DeepEqual(ano *ListTasksResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Tasks) { + return false + } + if !p.Field100DeepEqual(ano.Total) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *ListTasksResponse) Field1DeepEqual(src []*task.Task) bool { + + if len(p.Tasks) != len(src) { + return false + } + for i, v := range p.Tasks { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *ListTasksResponse) Field100DeepEqual(src *int64) bool { + + if p.Total == src { + return true + } else if p.Total == nil || src == nil { + return false + } + if *p.Total != *src { + return false + } + return true +} +func (p *ListTasksResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type GetTaskRequest struct { + TaskID int64 `thrift:"task_id,1,required" frugal:"1,required,i64" json:"task_id,string,required" path:"task_id,required"` + WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" json:"workspace_id" form:"workspace_id,required" ` + Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` +} + +func NewGetTaskRequest() *GetTaskRequest { + return &GetTaskRequest{} +} + +func (p *GetTaskRequest) InitDefault() { +} + +func (p *GetTaskRequest) GetTaskID() (v int64) { + if p != nil { + return p.TaskID + } + return +} + +func (p *GetTaskRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} + +var GetTaskRequest_Base_DEFAULT *base.Base + +func (p *GetTaskRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return GetTaskRequest_Base_DEFAULT + } + return p.Base +} +func (p *GetTaskRequest) SetTaskID(val int64) { + p.TaskID = val +} +func (p *GetTaskRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *GetTaskRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_GetTaskRequest = map[int16]string{ + 1: "task_id", + 2: "workspace_id", + 255: "base", +} + +func (p *GetTaskRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *GetTaskRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetTaskID bool = false + var issetWorkspaceID bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetTaskID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetTaskID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetWorkspaceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_GetTaskRequest[fieldId])) +} + +func (p *GetTaskRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.TaskID = _field + return nil +} +func (p *GetTaskRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *GetTaskRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *GetTaskRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTaskRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *GetTaskRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("task_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.TaskID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *GetTaskRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *GetTaskRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *GetTaskRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("GetTaskRequest(%+v)", *p) + +} + +func (p *GetTaskRequest) DeepEqual(ano *GetTaskRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.TaskID) { + return false + } + if !p.Field2DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *GetTaskRequest) Field1DeepEqual(src int64) bool { + + if p.TaskID != src { + return false + } + return true +} +func (p *GetTaskRequest) Field2DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *GetTaskRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type GetTaskResponse struct { + Task *task.Task `thrift:"task,1,optional" frugal:"1,optional,task.Task" form:"task" json:"task,omitempty"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewGetTaskResponse() *GetTaskResponse { + return &GetTaskResponse{} +} + +func (p *GetTaskResponse) InitDefault() { +} + +var GetTaskResponse_Task_DEFAULT *task.Task + +func (p *GetTaskResponse) GetTask() (v *task.Task) { + if p == nil { + return + } + if !p.IsSetTask() { + return GetTaskResponse_Task_DEFAULT + } + return p.Task +} + +var GetTaskResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *GetTaskResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return GetTaskResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *GetTaskResponse) SetTask(val *task.Task) { + p.Task = val +} +func (p *GetTaskResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_GetTaskResponse = map[int16]string{ + 1: "task", + 255: "BaseResp", +} + +func (p *GetTaskResponse) IsSetTask() bool { + return p.Task != nil +} + +func (p *GetTaskResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *GetTaskResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *GetTaskResponse) ReadField1(iprot thrift.TProtocol) error { + _field := task.NewTask() + if err := _field.Read(iprot); err != nil { + return err + } + p.Task = _field + return nil +} +func (p *GetTaskResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *GetTaskResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTaskResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *GetTaskResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetTask() { + if err = oprot.WriteFieldBegin("task", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Task.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *GetTaskResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *GetTaskResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("GetTaskResponse(%+v)", *p) + +} + +func (p *GetTaskResponse) DeepEqual(ano *GetTaskResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Task) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *GetTaskResponse) Field1DeepEqual(src *task.Task) bool { + + if !p.Task.DeepEqual(src) { + return false + } + return true +} +func (p *GetTaskResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type CheckTaskNameRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + Name string `thrift:"name,2,required" frugal:"2,required,string" form:"name,required" json:"name,required"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` +} + +func NewCheckTaskNameRequest() *CheckTaskNameRequest { + return &CheckTaskNameRequest{} +} + +func (p *CheckTaskNameRequest) InitDefault() { +} + +func (p *CheckTaskNameRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} + +func (p *CheckTaskNameRequest) GetName() (v string) { + if p != nil { + return p.Name + } + return +} + +var CheckTaskNameRequest_Base_DEFAULT *base.Base + +func (p *CheckTaskNameRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return CheckTaskNameRequest_Base_DEFAULT + } + return p.Base +} +func (p *CheckTaskNameRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *CheckTaskNameRequest) SetName(val string) { + p.Name = val +} +func (p *CheckTaskNameRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_CheckTaskNameRequest = map[int16]string{ + 1: "workspace_id", + 2: "name", + 255: "Base", +} + +func (p *CheckTaskNameRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *CheckTaskNameRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + var issetName bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetName = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetName { + fieldId = 2 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_CheckTaskNameRequest[fieldId])) +} + +func (p *CheckTaskNameRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *CheckTaskNameRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.Name = _field + return nil +} +func (p *CheckTaskNameRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *CheckTaskNameRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CheckTaskNameRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *CheckTaskNameRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *CheckTaskNameRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *CheckTaskNameRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *CheckTaskNameRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("CheckTaskNameRequest(%+v)", *p) + +} + +func (p *CheckTaskNameRequest) DeepEqual(ano *CheckTaskNameRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field2DeepEqual(ano.Name) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *CheckTaskNameRequest) Field1DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *CheckTaskNameRequest) Field2DeepEqual(src string) bool { + + if strings.Compare(p.Name, src) != 0 { + return false + } + return true +} +func (p *CheckTaskNameRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type CheckTaskNameResponse struct { + Pass *bool `thrift:"Pass,1,optional" frugal:"1,optional,bool" form:"Pass" json:"Pass,omitempty" query:"Pass"` + Message *string `thrift:"Message,2,optional" frugal:"2,optional,string" form:"Message" json:"Message,omitempty" query:"Message"` + BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` +} + +func NewCheckTaskNameResponse() *CheckTaskNameResponse { + return &CheckTaskNameResponse{} +} + +func (p *CheckTaskNameResponse) InitDefault() { +} + +var CheckTaskNameResponse_Pass_DEFAULT bool + +func (p *CheckTaskNameResponse) GetPass() (v bool) { + if p == nil { + return + } + if !p.IsSetPass() { + return CheckTaskNameResponse_Pass_DEFAULT + } + return *p.Pass +} + +var CheckTaskNameResponse_Message_DEFAULT string + +func (p *CheckTaskNameResponse) GetMessage() (v string) { + if p == nil { + return + } + if !p.IsSetMessage() { + return CheckTaskNameResponse_Message_DEFAULT + } + return *p.Message +} + +var CheckTaskNameResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *CheckTaskNameResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return CheckTaskNameResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *CheckTaskNameResponse) SetPass(val *bool) { + p.Pass = val +} +func (p *CheckTaskNameResponse) SetMessage(val *string) { + p.Message = val +} +func (p *CheckTaskNameResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_CheckTaskNameResponse = map[int16]string{ + 1: "Pass", + 2: "Message", + 255: "BaseResp", +} + +func (p *CheckTaskNameResponse) IsSetPass() bool { + return p.Pass != nil +} + +func (p *CheckTaskNameResponse) IsSetMessage() bool { + return p.Message != nil +} + +func (p *CheckTaskNameResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *CheckTaskNameResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.BOOL { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *CheckTaskNameResponse) ReadField1(iprot thrift.TProtocol) error { + + var _field *bool + if v, err := iprot.ReadBool(); err != nil { + return err + } else { + _field = &v + } + p.Pass = _field + return nil +} +func (p *CheckTaskNameResponse) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Message = _field + return nil +} +func (p *CheckTaskNameResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *CheckTaskNameResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CheckTaskNameResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *CheckTaskNameResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetPass() { + if err = oprot.WriteFieldBegin("Pass", thrift.BOOL, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteBool(*p.Pass); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *CheckTaskNameResponse) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetMessage() { + if err = oprot.WriteFieldBegin("Message", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Message); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *CheckTaskNameResponse) writeField255(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *CheckTaskNameResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("CheckTaskNameResponse(%+v)", *p) + +} + +func (p *CheckTaskNameResponse) DeepEqual(ano *CheckTaskNameResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Pass) { + return false + } + if !p.Field2DeepEqual(ano.Message) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *CheckTaskNameResponse) Field1DeepEqual(src *bool) bool { + + if p.Pass == src { + return true + } else if p.Pass == nil || src == nil { + return false + } + if *p.Pass != *src { + return false + } + return true +} +func (p *CheckTaskNameResponse) Field2DeepEqual(src *string) bool { + + if p.Message == src { + return true + } else if p.Message == nil || src == nil { + return false + } + if strings.Compare(*p.Message, *src) != 0 { + return false + } + return true +} +func (p *CheckTaskNameResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type TraceService interface { + ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) + + GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) + + BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) + + IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) + + GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) + + CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) + + UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) + + DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) + + ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) + + CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) + + UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) + + DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) + + ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) + + ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (r *ChangeEvaluatorScoreResponse, err error) + + ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (r *ListAnnotationEvaluatorsResponse, err error) + + ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (r *ExtractSpanInfoResponse, err error) + + CheckTaskName(ctx context.Context, req *CheckTaskNameRequest) (r *CheckTaskNameResponse, err error) + + CreateTask(ctx context.Context, req *CreateTaskRequest) (r *CreateTaskResponse, err error) + + UpdateTask(ctx context.Context, req *UpdateTaskRequest) (r *UpdateTaskResponse, err error) + + ListTasks(ctx context.Context, req *ListTasksRequest) (r *ListTasksResponse, err error) + + GetTask(ctx context.Context, req *GetTaskRequest) (r *GetTaskResponse, err error) +} + +type TraceServiceClient struct { + c thrift.TClient +} + +func NewTraceServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *TraceServiceClient { + return &TraceServiceClient{ + c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)), + } +} + +func NewTraceServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *TraceServiceClient { + return &TraceServiceClient{ + c: thrift.NewTStandardClient(iprot, oprot), + } +} + +func NewTraceServiceClient(c thrift.TClient) *TraceServiceClient { + return &TraceServiceClient{ + c: c, + } +} + +func (p *TraceServiceClient) Client_() thrift.TClient { + return p.c +} + +func (p *TraceServiceClient) ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) { + var _args TraceServiceListSpansArgs + _args.Req = req + var _result TraceServiceListSpansResult + if err = p.Client_().Call(ctx, "ListSpans", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) { + var _args TraceServiceGetTraceArgs + _args.Req = req + var _result TraceServiceGetTraceResult + if err = p.Client_().Call(ctx, "GetTrace", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) { + var _args TraceServiceBatchGetTracesAdvanceInfoArgs + _args.Req = req + var _result TraceServiceBatchGetTracesAdvanceInfoResult + if err = p.Client_().Call(ctx, "BatchGetTracesAdvanceInfo", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) { + var _args TraceServiceIngestTracesInnerArgs + _args.Req = req + var _result TraceServiceIngestTracesInnerResult + if err = p.Client_().Call(ctx, "IngestTracesInner", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) { + var _args TraceServiceGetTracesMetaInfoArgs + _args.Req = req + var _result TraceServiceGetTracesMetaInfoResult + if err = p.Client_().Call(ctx, "GetTracesMetaInfo", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) { + var _args TraceServiceCreateViewArgs + _args.Req = req + var _result TraceServiceCreateViewResult + if err = p.Client_().Call(ctx, "CreateView", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) { + var _args TraceServiceUpdateViewArgs + _args.Req = req + var _result TraceServiceUpdateViewResult + if err = p.Client_().Call(ctx, "UpdateView", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) { + var _args TraceServiceDeleteViewArgs + _args.Req = req + var _result TraceServiceDeleteViewResult + if err = p.Client_().Call(ctx, "DeleteView", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) { + var _args TraceServiceListViewsArgs + _args.Req = req + var _result TraceServiceListViewsResult + if err = p.Client_().Call(ctx, "ListViews", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) { + var _args TraceServiceCreateManualAnnotationArgs + _args.Req = req + var _result TraceServiceCreateManualAnnotationResult + if err = p.Client_().Call(ctx, "CreateManualAnnotation", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) { + var _args TraceServiceUpdateManualAnnotationArgs + _args.Req = req + var _result TraceServiceUpdateManualAnnotationResult + if err = p.Client_().Call(ctx, "UpdateManualAnnotation", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) { + var _args TraceServiceDeleteManualAnnotationArgs + _args.Req = req + var _result TraceServiceDeleteManualAnnotationResult + if err = p.Client_().Call(ctx, "DeleteManualAnnotation", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) { + var _args TraceServiceListAnnotationsArgs + _args.Req = req + var _result TraceServiceListAnnotationsResult + if err = p.Client_().Call(ctx, "ListAnnotations", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (r *ChangeEvaluatorScoreResponse, err error) { + var _args TraceServiceChangeEvaluatorScoreArgs + _args.Req = req + var _result TraceServiceChangeEvaluatorScoreResult + if err = p.Client_().Call(ctx, "ChangeEvaluatorScore", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (r *ListAnnotationEvaluatorsResponse, err error) { + var _args TraceServiceListAnnotationEvaluatorsArgs + _args.Req = req + var _result TraceServiceListAnnotationEvaluatorsResult + if err = p.Client_().Call(ctx, "ListAnnotationEvaluators", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (r *ExtractSpanInfoResponse, err error) { + var _args TraceServiceExtractSpanInfoArgs + _args.Req = req + var _result TraceServiceExtractSpanInfoResult + if err = p.Client_().Call(ctx, "ExtractSpanInfo", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) CheckTaskName(ctx context.Context, req *CheckTaskNameRequest) (r *CheckTaskNameResponse, err error) { + var _args TraceServiceCheckTaskNameArgs + _args.Req = req + var _result TraceServiceCheckTaskNameResult + if err = p.Client_().Call(ctx, "CheckTaskName", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) CreateTask(ctx context.Context, req *CreateTaskRequest) (r *CreateTaskResponse, err error) { + var _args TraceServiceCreateTaskArgs + _args.Req = req + var _result TraceServiceCreateTaskResult + if err = p.Client_().Call(ctx, "CreateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) UpdateTask(ctx context.Context, req *UpdateTaskRequest) (r *UpdateTaskResponse, err error) { + var _args TraceServiceUpdateTaskArgs + _args.Req = req + var _result TraceServiceUpdateTaskResult + if err = p.Client_().Call(ctx, "UpdateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ListTasks(ctx context.Context, req *ListTasksRequest) (r *ListTasksResponse, err error) { + var _args TraceServiceListTasksArgs + _args.Req = req + var _result TraceServiceListTasksResult + if err = p.Client_().Call(ctx, "ListTasks", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) GetTask(ctx context.Context, req *GetTaskRequest) (r *GetTaskResponse, err error) { + var _args TraceServiceGetTaskArgs + _args.Req = req + var _result TraceServiceGetTaskResult + if err = p.Client_().Call(ctx, "GetTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +type TraceServiceProcessor struct { + processorMap map[string]thrift.TProcessorFunction + handler TraceService +} + +func (p *TraceServiceProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) { + p.processorMap[key] = processor +} + +func (p *TraceServiceProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) { + processor, ok = p.processorMap[key] + return processor, ok +} + +func (p *TraceServiceProcessor) ProcessorMap() map[string]thrift.TProcessorFunction { + return p.processorMap +} + +func NewTraceServiceProcessor(handler TraceService) *TraceServiceProcessor { + self := &TraceServiceProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)} + self.AddToProcessorMap("ListSpans", &traceServiceProcessorListSpans{handler: handler}) + self.AddToProcessorMap("GetTrace", &traceServiceProcessorGetTrace{handler: handler}) + self.AddToProcessorMap("BatchGetTracesAdvanceInfo", &traceServiceProcessorBatchGetTracesAdvanceInfo{handler: handler}) + self.AddToProcessorMap("IngestTracesInner", &traceServiceProcessorIngestTracesInner{handler: handler}) + self.AddToProcessorMap("GetTracesMetaInfo", &traceServiceProcessorGetTracesMetaInfo{handler: handler}) + self.AddToProcessorMap("CreateView", &traceServiceProcessorCreateView{handler: handler}) + self.AddToProcessorMap("UpdateView", &traceServiceProcessorUpdateView{handler: handler}) + self.AddToProcessorMap("DeleteView", &traceServiceProcessorDeleteView{handler: handler}) + self.AddToProcessorMap("ListViews", &traceServiceProcessorListViews{handler: handler}) + self.AddToProcessorMap("CreateManualAnnotation", &traceServiceProcessorCreateManualAnnotation{handler: handler}) + self.AddToProcessorMap("UpdateManualAnnotation", &traceServiceProcessorUpdateManualAnnotation{handler: handler}) + self.AddToProcessorMap("DeleteManualAnnotation", &traceServiceProcessorDeleteManualAnnotation{handler: handler}) + self.AddToProcessorMap("ListAnnotations", &traceServiceProcessorListAnnotations{handler: handler}) + self.AddToProcessorMap("ChangeEvaluatorScore", &traceServiceProcessorChangeEvaluatorScore{handler: handler}) + self.AddToProcessorMap("ListAnnotationEvaluators", &traceServiceProcessorListAnnotationEvaluators{handler: handler}) + self.AddToProcessorMap("ExtractSpanInfo", &traceServiceProcessorExtractSpanInfo{handler: handler}) + self.AddToProcessorMap("CheckTaskName", &traceServiceProcessorCheckTaskName{handler: handler}) + self.AddToProcessorMap("CreateTask", &traceServiceProcessorCreateTask{handler: handler}) + self.AddToProcessorMap("UpdateTask", &traceServiceProcessorUpdateTask{handler: handler}) + self.AddToProcessorMap("ListTasks", &traceServiceProcessorListTasks{handler: handler}) + self.AddToProcessorMap("GetTask", &traceServiceProcessorGetTask{handler: handler}) + return self +} +func (p *TraceServiceProcessor) Process(ctx context.Context, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + name, _, seqId, err := iprot.ReadMessageBegin() + if err != nil { + return false, err + } + if processor, ok := p.GetProcessorFunction(name); ok { + return processor.Process(ctx, seqId, iprot, oprot) + } + iprot.Skip(thrift.STRUCT) + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name) + oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, x +} + +type traceServiceProcessorListSpans struct { + handler TraceService +} + +func (p *traceServiceProcessorListSpans) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListSpansArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListSpansResult{} + var retval *ListSpansResponse + if retval, err2 = p.handler.ListSpans(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListSpans: "+err2.Error()) + oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ListSpans", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorGetTrace struct { + handler TraceService +} + +func (p *traceServiceProcessorGetTrace) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceGetTraceArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceGetTraceResult{} + var retval *GetTraceResponse + if retval, err2 = p.handler.GetTrace(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTrace: "+err2.Error()) + oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("GetTrace", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorBatchGetTracesAdvanceInfo struct { + handler TraceService +} + +func (p *traceServiceProcessorBatchGetTracesAdvanceInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceBatchGetTracesAdvanceInfoArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceBatchGetTracesAdvanceInfoResult{} + var retval *BatchGetTracesAdvanceInfoResponse + if retval, err2 = p.handler.BatchGetTracesAdvanceInfo(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing BatchGetTracesAdvanceInfo: "+err2.Error()) + oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorIngestTracesInner struct { + handler TraceService +} + +func (p *traceServiceProcessorIngestTracesInner) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceIngestTracesInnerArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceIngestTracesInnerResult{} + var retval *IngestTracesResponse + if retval, err2 = p.handler.IngestTracesInner(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing IngestTracesInner: "+err2.Error()) + oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("IngestTracesInner", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorGetTracesMetaInfo struct { + handler TraceService +} + +func (p *traceServiceProcessorGetTracesMetaInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceGetTracesMetaInfoArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceGetTracesMetaInfoResult{} + var retval *GetTracesMetaInfoResponse + if retval, err2 = p.handler.GetTracesMetaInfo(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTracesMetaInfo: "+err2.Error()) + oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorCreateView struct { + handler TraceService +} + +func (p *traceServiceProcessorCreateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceCreateViewArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceCreateViewResult{} + var retval *CreateViewResponse + if retval, err2 = p.handler.CreateView(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateView: "+err2.Error()) + oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("CreateView", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorUpdateView struct { + handler TraceService +} + +func (p *traceServiceProcessorUpdateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceUpdateViewArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceUpdateViewResult{} + var retval *UpdateViewResponse + if retval, err2 = p.handler.UpdateView(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateView: "+err2.Error()) + oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("UpdateView", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorDeleteView struct { + handler TraceService +} + +func (p *traceServiceProcessorDeleteView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceDeleteViewArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceDeleteViewResult{} + var retval *DeleteViewResponse + if retval, err2 = p.handler.DeleteView(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteView: "+err2.Error()) + oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("DeleteView", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorListViews struct { + handler TraceService +} + +func (p *traceServiceProcessorListViews) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListViewsArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListViewsResult{} + var retval *ListViewsResponse + if retval, err2 = p.handler.ListViews(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListViews: "+err2.Error()) + oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ListViews", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorCreateManualAnnotation struct { + handler TraceService +} + +func (p *traceServiceProcessorCreateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceCreateManualAnnotationArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceCreateManualAnnotationResult{} + var retval *CreateManualAnnotationResponse + if retval, err2 = p.handler.CreateManualAnnotation(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateManualAnnotation: "+err2.Error()) + oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("CreateManualAnnotation", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorUpdateManualAnnotation struct { + handler TraceService +} + +func (p *traceServiceProcessorUpdateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceUpdateManualAnnotationArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceUpdateManualAnnotationResult{} + var retval *UpdateManualAnnotationResponse + if retval, err2 = p.handler.UpdateManualAnnotation(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateManualAnnotation: "+err2.Error()) + oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorDeleteManualAnnotation struct { + handler TraceService +} + +func (p *traceServiceProcessorDeleteManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceDeleteManualAnnotationArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceDeleteManualAnnotationResult{} + var retval *DeleteManualAnnotationResponse + if retval, err2 = p.handler.DeleteManualAnnotation(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteManualAnnotation: "+err2.Error()) + oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorListAnnotations struct { + handler TraceService +} + +func (p *traceServiceProcessorListAnnotations) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListAnnotationsArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListAnnotationsResult{} + var retval *ListAnnotationsResponse + if retval, err2 = p.handler.ListAnnotations(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotations: "+err2.Error()) + oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ListAnnotations", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorChangeEvaluatorScore struct { + handler TraceService +} + +func (p *traceServiceProcessorChangeEvaluatorScore) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceChangeEvaluatorScoreArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceChangeEvaluatorScoreResult{} + var retval *ChangeEvaluatorScoreResponse + if retval, err2 = p.handler.ChangeEvaluatorScore(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ChangeEvaluatorScore: "+err2.Error()) + oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorListAnnotationEvaluators struct { + handler TraceService +} + +func (p *traceServiceProcessorListAnnotationEvaluators) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListAnnotationEvaluatorsArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListAnnotationEvaluatorsResult{} + var retval *ListAnnotationEvaluatorsResponse + if retval, err2 = p.handler.ListAnnotationEvaluators(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotationEvaluators: "+err2.Error()) + oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorExtractSpanInfo struct { + handler TraceService +} + +func (p *traceServiceProcessorExtractSpanInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceExtractSpanInfoArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ExtractSpanInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceExtractSpanInfoResult{} + var retval *ExtractSpanInfoResponse + if retval, err2 = p.handler.ExtractSpanInfo(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ExtractSpanInfo: "+err2.Error()) + oprot.WriteMessageBegin("ExtractSpanInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ExtractSpanInfo", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorCheckTaskName struct { + handler TraceService +} + +func (p *traceServiceProcessorCheckTaskName) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceCheckTaskNameArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("CheckTaskName", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceCheckTaskNameResult{} + var retval *CheckTaskNameResponse + if retval, err2 = p.handler.CheckTaskName(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CheckTaskName: "+err2.Error()) + oprot.WriteMessageBegin("CheckTaskName", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("CheckTaskName", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorCreateTask struct { + handler TraceService +} + +func (p *traceServiceProcessorCreateTask) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceCreateTaskArgs{} + if err = args.Read(iprot); err != nil { iprot.ReadMessageEnd() x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) + oprot.WriteMessageBegin("CreateTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceCreateTaskResult{} + var retval *CreateTaskResponse + if retval, err2 = p.handler.CreateTask(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateTask: "+err2.Error()) + oprot.WriteMessageBegin("CreateTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("CreateTask", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorUpdateTask struct { + handler TraceService +} + +func (p *traceServiceProcessorUpdateTask) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceUpdateTaskArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("UpdateTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceUpdateTaskResult{} + var retval *UpdateTaskResponse + if retval, err2 = p.handler.UpdateTask(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateTask: "+err2.Error()) + oprot.WriteMessageBegin("UpdateTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("UpdateTask", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorListTasks struct { + handler TraceService +} + +func (p *traceServiceProcessorListTasks) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListTasksArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListTasks", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListTasksResult{} + var retval *ListTasksResponse + if retval, err2 = p.handler.ListTasks(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListTasks: "+err2.Error()) + oprot.WriteMessageBegin("ListTasks", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ListTasks", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorGetTask struct { + handler TraceService +} + +func (p *traceServiceProcessorGetTask) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceGetTaskArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("GetTask", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) return false, err } - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListSpansResult{} - var retval *ListSpansResponse - if retval, err2 = p.handler.ListSpans(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListSpans: "+err2.Error()) - oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceGetTaskResult{} + var retval *GetTaskResponse + if retval, err2 = p.handler.GetTask(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTask: "+err2.Error()) + oprot.WriteMessageBegin("GetTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("GetTask", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type TraceServiceListSpansArgs struct { + Req *ListSpansRequest `thrift:"req,1" frugal:"1,default,ListSpansRequest"` +} + +func NewTraceServiceListSpansArgs() *TraceServiceListSpansArgs { + return &TraceServiceListSpansArgs{} +} + +func (p *TraceServiceListSpansArgs) InitDefault() { +} + +var TraceServiceListSpansArgs_Req_DEFAULT *ListSpansRequest + +func (p *TraceServiceListSpansArgs) GetReq() (v *ListSpansRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TraceServiceListSpansArgs_Req_DEFAULT + } + return p.Req +} +func (p *TraceServiceListSpansArgs) SetReq(val *ListSpansRequest) { + p.Req = val +} + +var fieldIDToName_TraceServiceListSpansArgs = map[int16]string{ + 1: "req", +} + +func (p *TraceServiceListSpansArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TraceServiceListSpansArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceListSpansArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListSpansRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TraceServiceListSpansArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListSpans_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceListSpansArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TraceServiceListSpansArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceListSpansArgs(%+v)", *p) + +} + +func (p *TraceServiceListSpansArgs) DeepEqual(ano *TraceServiceListSpansArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TraceServiceListSpansArgs) Field1DeepEqual(src *ListSpansRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceListSpansResult struct { + Success *ListSpansResponse `thrift:"success,0,optional" frugal:"0,optional,ListSpansResponse"` +} + +func NewTraceServiceListSpansResult() *TraceServiceListSpansResult { + return &TraceServiceListSpansResult{} +} + +func (p *TraceServiceListSpansResult) InitDefault() { +} + +var TraceServiceListSpansResult_Success_DEFAULT *ListSpansResponse + +func (p *TraceServiceListSpansResult) GetSuccess() (v *ListSpansResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TraceServiceListSpansResult_Success_DEFAULT + } + return p.Success +} +func (p *TraceServiceListSpansResult) SetSuccess(x interface{}) { + p.Success = x.(*ListSpansResponse) +} + +var fieldIDToName_TraceServiceListSpansResult = map[int16]string{ + 0: "success", +} + +func (p *TraceServiceListSpansResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TraceServiceListSpansResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceListSpansResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListSpansResponse() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *TraceServiceListSpansResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListSpans_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceListSpansResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TraceServiceListSpansResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceListSpansResult(%+v)", *p) + +} + +func (p *TraceServiceListSpansResult) DeepEqual(ano *TraceServiceListSpansResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TraceServiceListSpansResult) Field0DeepEqual(src *ListSpansResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceGetTraceArgs struct { + Req *GetTraceRequest `thrift:"req,1" frugal:"1,default,GetTraceRequest"` +} + +func NewTraceServiceGetTraceArgs() *TraceServiceGetTraceArgs { + return &TraceServiceGetTraceArgs{} +} + +func (p *TraceServiceGetTraceArgs) InitDefault() { +} + +var TraceServiceGetTraceArgs_Req_DEFAULT *GetTraceRequest + +func (p *TraceServiceGetTraceArgs) GetReq() (v *GetTraceRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TraceServiceGetTraceArgs_Req_DEFAULT + } + return p.Req +} +func (p *TraceServiceGetTraceArgs) SetReq(val *GetTraceRequest) { + p.Req = val +} + +var fieldIDToName_TraceServiceGetTraceArgs = map[int16]string{ + 1: "req", +} + +func (p *TraceServiceGetTraceArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TraceServiceGetTraceArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceGetTraceArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewGetTraceRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TraceServiceGetTraceArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTrace_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceGetTraceArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TraceServiceGetTraceArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceGetTraceArgs(%+v)", *p) + +} + +func (p *TraceServiceGetTraceArgs) DeepEqual(ano *TraceServiceGetTraceArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TraceServiceGetTraceArgs) Field1DeepEqual(src *GetTraceRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceGetTraceResult struct { + Success *GetTraceResponse `thrift:"success,0,optional" frugal:"0,optional,GetTraceResponse"` +} + +func NewTraceServiceGetTraceResult() *TraceServiceGetTraceResult { + return &TraceServiceGetTraceResult{} +} + +func (p *TraceServiceGetTraceResult) InitDefault() { +} + +var TraceServiceGetTraceResult_Success_DEFAULT *GetTraceResponse + +func (p *TraceServiceGetTraceResult) GetSuccess() (v *GetTraceResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TraceServiceGetTraceResult_Success_DEFAULT + } + return p.Success +} +func (p *TraceServiceGetTraceResult) SetSuccess(x interface{}) { + p.Success = x.(*GetTraceResponse) +} + +var fieldIDToName_TraceServiceGetTraceResult = map[int16]string{ + 0: "success", +} + +func (p *TraceServiceGetTraceResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TraceServiceGetTraceResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceGetTraceResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewGetTraceResponse() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *TraceServiceGetTraceResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTrace_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceGetTraceResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TraceServiceGetTraceResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceGetTraceResult(%+v)", *p) + +} + +func (p *TraceServiceGetTraceResult) DeepEqual(ano *TraceServiceGetTraceResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TraceServiceGetTraceResult) Field0DeepEqual(src *GetTraceResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceBatchGetTracesAdvanceInfoArgs struct { + Req *BatchGetTracesAdvanceInfoRequest `thrift:"req,1" frugal:"1,default,BatchGetTracesAdvanceInfoRequest"` +} + +func NewTraceServiceBatchGetTracesAdvanceInfoArgs() *TraceServiceBatchGetTracesAdvanceInfoArgs { + return &TraceServiceBatchGetTracesAdvanceInfoArgs{} +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) InitDefault() { +} + +var TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT *BatchGetTracesAdvanceInfoRequest + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) GetReq() (v *BatchGetTracesAdvanceInfoRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT + } + return p.Req +} +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) SetReq(val *BatchGetTracesAdvanceInfoRequest) { + p.Req = val +} + +var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs = map[int16]string{ + 1: "req", +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewBatchGetTracesAdvanceInfoRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoArgs(%+v)", *p) + +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Field1DeepEqual(src *BatchGetTracesAdvanceInfoRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceBatchGetTracesAdvanceInfoResult struct { + Success *BatchGetTracesAdvanceInfoResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetTracesAdvanceInfoResponse"` +} + +func NewTraceServiceBatchGetTracesAdvanceInfoResult() *TraceServiceBatchGetTracesAdvanceInfoResult { + return &TraceServiceBatchGetTracesAdvanceInfoResult{} +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) InitDefault() { +} + +var TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT *BatchGetTracesAdvanceInfoResponse + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) GetSuccess() (v *BatchGetTracesAdvanceInfoResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT + } + return p.Success +} +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) SetSuccess(x interface{}) { + p.Success = x.(*BatchGetTracesAdvanceInfoResponse) +} + +var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult = map[int16]string{ + 0: "success", +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewBatchGetTracesAdvanceInfoResponse() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoResult(%+v)", *p) + +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Field0DeepEqual(src *BatchGetTracesAdvanceInfoResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceIngestTracesInnerArgs struct { + Req *IngestTracesRequest `thrift:"req,1" frugal:"1,default,IngestTracesRequest"` +} + +func NewTraceServiceIngestTracesInnerArgs() *TraceServiceIngestTracesInnerArgs { + return &TraceServiceIngestTracesInnerArgs{} +} + +func (p *TraceServiceIngestTracesInnerArgs) InitDefault() { +} + +var TraceServiceIngestTracesInnerArgs_Req_DEFAULT *IngestTracesRequest + +func (p *TraceServiceIngestTracesInnerArgs) GetReq() (v *IngestTracesRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TraceServiceIngestTracesInnerArgs_Req_DEFAULT + } + return p.Req +} +func (p *TraceServiceIngestTracesInnerArgs) SetReq(val *IngestTracesRequest) { + p.Req = val +} + +var fieldIDToName_TraceServiceIngestTracesInnerArgs = map[int16]string{ + 1: "req", +} + +func (p *TraceServiceIngestTracesInnerArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TraceServiceIngestTracesInnerArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceIngestTracesInnerArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewIngestTracesRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TraceServiceIngestTracesInnerArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("IngestTracesInner_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceIngestTracesInnerArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TraceServiceIngestTracesInnerArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceIngestTracesInnerArgs(%+v)", *p) + +} + +func (p *TraceServiceIngestTracesInnerArgs) DeepEqual(ano *TraceServiceIngestTracesInnerArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TraceServiceIngestTracesInnerArgs) Field1DeepEqual(src *IngestTracesRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceIngestTracesInnerResult struct { + Success *IngestTracesResponse `thrift:"success,0,optional" frugal:"0,optional,IngestTracesResponse"` +} + +func NewTraceServiceIngestTracesInnerResult() *TraceServiceIngestTracesInnerResult { + return &TraceServiceIngestTracesInnerResult{} +} + +func (p *TraceServiceIngestTracesInnerResult) InitDefault() { +} + +var TraceServiceIngestTracesInnerResult_Success_DEFAULT *IngestTracesResponse + +func (p *TraceServiceIngestTracesInnerResult) GetSuccess() (v *IngestTracesResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TraceServiceIngestTracesInnerResult_Success_DEFAULT + } + return p.Success +} +func (p *TraceServiceIngestTracesInnerResult) SetSuccess(x interface{}) { + p.Success = x.(*IngestTracesResponse) +} + +var fieldIDToName_TraceServiceIngestTracesInnerResult = map[int16]string{ + 0: "success", +} + +func (p *TraceServiceIngestTracesInnerResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TraceServiceIngestTracesInnerResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceIngestTracesInnerResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewIngestTracesResponse() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *TraceServiceIngestTracesInnerResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("IngestTracesInner_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceIngestTracesInnerResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TraceServiceIngestTracesInnerResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceIngestTracesInnerResult(%+v)", *p) + +} + +func (p *TraceServiceIngestTracesInnerResult) DeepEqual(ano *TraceServiceIngestTracesInnerResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TraceServiceIngestTracesInnerResult) Field0DeepEqual(src *IngestTracesResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceGetTracesMetaInfoArgs struct { + Req *GetTracesMetaInfoRequest `thrift:"req,1" frugal:"1,default,GetTracesMetaInfoRequest"` +} + +func NewTraceServiceGetTracesMetaInfoArgs() *TraceServiceGetTracesMetaInfoArgs { + return &TraceServiceGetTracesMetaInfoArgs{} +} + +func (p *TraceServiceGetTracesMetaInfoArgs) InitDefault() { +} + +var TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT *GetTracesMetaInfoRequest + +func (p *TraceServiceGetTracesMetaInfoArgs) GetReq() (v *GetTracesMetaInfoRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT + } + return p.Req +} +func (p *TraceServiceGetTracesMetaInfoArgs) SetReq(val *GetTracesMetaInfoRequest) { + p.Req = val +} + +var fieldIDToName_TraceServiceGetTracesMetaInfoArgs = map[int16]string{ + 1: "req", +} + +func (p *TraceServiceGetTracesMetaInfoArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TraceServiceGetTracesMetaInfoArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceGetTracesMetaInfoArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewGetTracesMetaInfoRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TraceServiceGetTracesMetaInfoArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTracesMetaInfo_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceGetTracesMetaInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TraceServiceGetTracesMetaInfoArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceGetTracesMetaInfoArgs(%+v)", *p) + +} + +func (p *TraceServiceGetTracesMetaInfoArgs) DeepEqual(ano *TraceServiceGetTracesMetaInfoArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TraceServiceGetTracesMetaInfoArgs) Field1DeepEqual(src *GetTracesMetaInfoRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceGetTracesMetaInfoResult struct { + Success *GetTracesMetaInfoResponse `thrift:"success,0,optional" frugal:"0,optional,GetTracesMetaInfoResponse"` +} + +func NewTraceServiceGetTracesMetaInfoResult() *TraceServiceGetTracesMetaInfoResult { + return &TraceServiceGetTracesMetaInfoResult{} +} + +func (p *TraceServiceGetTracesMetaInfoResult) InitDefault() { +} + +var TraceServiceGetTracesMetaInfoResult_Success_DEFAULT *GetTracesMetaInfoResponse + +func (p *TraceServiceGetTracesMetaInfoResult) GetSuccess() (v *GetTracesMetaInfoResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TraceServiceGetTracesMetaInfoResult_Success_DEFAULT + } + return p.Success +} +func (p *TraceServiceGetTracesMetaInfoResult) SetSuccess(x interface{}) { + p.Success = x.(*GetTracesMetaInfoResponse) +} + +var fieldIDToName_TraceServiceGetTracesMetaInfoResult = map[int16]string{ + 0: "success", +} + +func (p *TraceServiceGetTracesMetaInfoResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TraceServiceGetTracesMetaInfoResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceGetTracesMetaInfoResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewGetTracesMetaInfoResponse() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *TraceServiceGetTracesMetaInfoResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTracesMetaInfo_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceGetTracesMetaInfoResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TraceServiceGetTracesMetaInfoResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceGetTracesMetaInfoResult(%+v)", *p) + +} + +func (p *TraceServiceGetTracesMetaInfoResult) DeepEqual(ano *TraceServiceGetTracesMetaInfoResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TraceServiceGetTracesMetaInfoResult) Field0DeepEqual(src *GetTracesMetaInfoResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceCreateViewArgs struct { + Req *CreateViewRequest `thrift:"req,1" frugal:"1,default,CreateViewRequest"` +} + +func NewTraceServiceCreateViewArgs() *TraceServiceCreateViewArgs { + return &TraceServiceCreateViewArgs{} +} + +func (p *TraceServiceCreateViewArgs) InitDefault() { +} + +var TraceServiceCreateViewArgs_Req_DEFAULT *CreateViewRequest + +func (p *TraceServiceCreateViewArgs) GetReq() (v *CreateViewRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TraceServiceCreateViewArgs_Req_DEFAULT + } + return p.Req +} +func (p *TraceServiceCreateViewArgs) SetReq(val *CreateViewRequest) { + p.Req = val +} + +var fieldIDToName_TraceServiceCreateViewArgs = map[int16]string{ + 1: "req", +} + +func (p *TraceServiceCreateViewArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TraceServiceCreateViewArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceCreateViewArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCreateViewRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TraceServiceCreateViewArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateView_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceCreateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TraceServiceCreateViewArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceCreateViewArgs(%+v)", *p) + +} + +func (p *TraceServiceCreateViewArgs) DeepEqual(ano *TraceServiceCreateViewArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TraceServiceCreateViewArgs) Field1DeepEqual(src *CreateViewRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceCreateViewResult struct { + Success *CreateViewResponse `thrift:"success,0,optional" frugal:"0,optional,CreateViewResponse"` +} + +func NewTraceServiceCreateViewResult() *TraceServiceCreateViewResult { + return &TraceServiceCreateViewResult{} +} + +func (p *TraceServiceCreateViewResult) InitDefault() { +} + +var TraceServiceCreateViewResult_Success_DEFAULT *CreateViewResponse + +func (p *TraceServiceCreateViewResult) GetSuccess() (v *CreateViewResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TraceServiceCreateViewResult_Success_DEFAULT + } + return p.Success +} +func (p *TraceServiceCreateViewResult) SetSuccess(x interface{}) { + p.Success = x.(*CreateViewResponse) +} + +var fieldIDToName_TraceServiceCreateViewResult = map[int16]string{ + 0: "success", +} + +func (p *TraceServiceCreateViewResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TraceServiceCreateViewResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError } - if err2 = oprot.WriteMessageBegin("ListSpans", thrift.REPLY, seqId); err2 != nil { - err = err2 + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceCreateViewResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCreateViewResponse() + if err := _field.Read(iprot); err != nil { + return err } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + p.Success = _field + return nil +} + +func (p *TraceServiceCreateViewResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateView_result"); err != nil { + goto WriteStructBeginError } - if err != nil { + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceCreateViewResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TraceServiceCreateViewResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TraceServiceCreateViewResult(%+v)", *p) + +} + +func (p *TraceServiceCreateViewResult) DeepEqual(ano *TraceServiceCreateViewResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TraceServiceCreateViewResult) Field0DeepEqual(src *CreateViewResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} + +type TraceServiceUpdateViewArgs struct { + Req *UpdateViewRequest `thrift:"req,1" frugal:"1,default,UpdateViewRequest"` +} + +func NewTraceServiceUpdateViewArgs() *TraceServiceUpdateViewArgs { + return &TraceServiceUpdateViewArgs{} +} + +func (p *TraceServiceUpdateViewArgs) InitDefault() { +} + +var TraceServiceUpdateViewArgs_Req_DEFAULT *UpdateViewRequest + +func (p *TraceServiceUpdateViewArgs) GetReq() (v *UpdateViewRequest) { + if p == nil { return } - return true, err -} + if !p.IsSetReq() { + return TraceServiceUpdateViewArgs_Req_DEFAULT + } + return p.Req +} +func (p *TraceServiceUpdateViewArgs) SetReq(val *UpdateViewRequest) { + p.Req = val +} + +var fieldIDToName_TraceServiceUpdateViewArgs = map[int16]string{ + 1: "req", +} + +func (p *TraceServiceUpdateViewArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TraceServiceUpdateViewArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } -type traceServiceProcessorGetTrace struct { - handler TraceService + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *traceServiceProcessorGetTrace) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceGetTraceArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceUpdateViewArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewUpdateViewRequest() + if err := _field.Read(iprot); err != nil { + return err } + p.Req = _field + return nil +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceGetTraceResult{} - var retval *GetTraceResponse - if retval, err2 = p.handler.GetTrace(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTrace: "+err2.Error()) - oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("GetTrace", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 +func (p *TraceServiceUpdateViewArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("UpdateView_args"); err != nil { + goto WriteStructBeginError } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError } - if err != nil { - return + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError } - return true, err -} - -type traceServiceProcessorBatchGetTracesAdvanceInfo struct { - handler TraceService + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *traceServiceProcessorBatchGetTracesAdvanceInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceBatchGetTracesAdvanceInfoArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceUpdateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceBatchGetTracesAdvanceInfoResult{} - var retval *BatchGetTracesAdvanceInfoResponse - if retval, err2 = p.handler.BatchGetTracesAdvanceInfo(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing BatchGetTracesAdvanceInfo: "+err2.Error()) - oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval + if err := p.Req.Write(oprot); err != nil { + return err } - if err2 = oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.REPLY, seqId); err2 != nil { - err = err2 + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TraceServiceUpdateViewArgs) String() string { + if p == nil { + return "" } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + return fmt.Sprintf("TraceServiceUpdateViewArgs(%+v)", *p) + +} + +func (p *TraceServiceUpdateViewArgs) DeepEqual(ano *TraceServiceUpdateViewArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if !p.Field1DeepEqual(ano.Req) { + return false } - if err != nil { - return + return true +} + +func (p *TraceServiceUpdateViewArgs) Field1DeepEqual(src *UpdateViewRequest) bool { + + if !p.Req.DeepEqual(src) { + return false } - return true, err + return true } -type traceServiceProcessorIngestTracesInner struct { - handler TraceService +type TraceServiceUpdateViewResult struct { + Success *UpdateViewResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateViewResponse"` } -func (p *traceServiceProcessorIngestTracesInner) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceIngestTracesInnerArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } +func NewTraceServiceUpdateViewResult() *TraceServiceUpdateViewResult { + return &TraceServiceUpdateViewResult{} +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceIngestTracesInnerResult{} - var retval *IngestTracesResponse - if retval, err2 = p.handler.IngestTracesInner(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing IngestTracesInner: "+err2.Error()) - oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("IngestTracesInner", thrift.REPLY, seqId); err2 != nil { - err = err2 +func (p *TraceServiceUpdateViewResult) InitDefault() { +} + +var TraceServiceUpdateViewResult_Success_DEFAULT *UpdateViewResponse + +func (p *TraceServiceUpdateViewResult) GetSuccess() (v *UpdateViewResponse) { + if p == nil { + return } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 + if !p.IsSetSuccess() { + return TraceServiceUpdateViewResult_Success_DEFAULT } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + return p.Success +} +func (p *TraceServiceUpdateViewResult) SetSuccess(x interface{}) { + p.Success = x.(*UpdateViewResponse) +} + +var fieldIDToName_TraceServiceUpdateViewResult = map[int16]string{ + 0: "success", +} + +func (p *TraceServiceUpdateViewResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TraceServiceUpdateViewResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } } - if err != nil { - return + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError } - return true, err -} -type traceServiceProcessorGetTracesMetaInfo struct { - handler TraceService + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *traceServiceProcessorGetTracesMetaInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceGetTracesMetaInfoArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceUpdateViewResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewUpdateViewResponse() + if err := _field.Read(iprot); err != nil { + return err } + p.Success = _field + return nil +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceGetTracesMetaInfoResult{} - var retval *GetTracesMetaInfoResponse - if retval, err2 = p.handler.GetTracesMetaInfo(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTracesMetaInfo: "+err2.Error()) - oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 +func (p *TraceServiceUpdateViewResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("UpdateView_result"); err != nil { + goto WriteStructBeginError } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError } - if err != nil { - return + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError } - return true, err + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -type traceServiceProcessorCreateView struct { - handler TraceService +func (p *TraceServiceUpdateViewResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *traceServiceProcessorCreateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceCreateViewArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceUpdateViewResult) String() string { + if p == nil { + return "" } + return fmt.Sprintf("TraceServiceUpdateViewResult(%+v)", *p) - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceCreateViewResult{} - var retval *CreateViewResponse - if retval, err2 = p.handler.CreateView(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateView: "+err2.Error()) - oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("CreateView", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 +} + +func (p *TraceServiceUpdateViewResult) DeepEqual(ano *TraceServiceUpdateViewResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if !p.Field0DeepEqual(ano.Success) { + return false } - if err != nil { - return + return true +} + +func (p *TraceServiceUpdateViewResult) Field0DeepEqual(src *UpdateViewResponse) bool { + + if !p.Success.DeepEqual(src) { + return false } - return true, err + return true } -type traceServiceProcessorUpdateView struct { - handler TraceService +type TraceServiceDeleteViewArgs struct { + Req *DeleteViewRequest `thrift:"req,1" frugal:"1,default,DeleteViewRequest"` } -func (p *traceServiceProcessorUpdateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceUpdateViewArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } +func NewTraceServiceDeleteViewArgs() *TraceServiceDeleteViewArgs { + return &TraceServiceDeleteViewArgs{} +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceUpdateViewResult{} - var retval *UpdateViewResponse - if retval, err2 = p.handler.UpdateView(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateView: "+err2.Error()) - oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("UpdateView", thrift.REPLY, seqId); err2 != nil { - err = err2 +func (p *TraceServiceDeleteViewArgs) InitDefault() { +} + +var TraceServiceDeleteViewArgs_Req_DEFAULT *DeleteViewRequest + +func (p *TraceServiceDeleteViewArgs) GetReq() (v *DeleteViewRequest) { + if p == nil { + return } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 + if !p.IsSetReq() { + return TraceServiceDeleteViewArgs_Req_DEFAULT } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + return p.Req +} +func (p *TraceServiceDeleteViewArgs) SetReq(val *DeleteViewRequest) { + p.Req = val +} + +var fieldIDToName_TraceServiceDeleteViewArgs = map[int16]string{ + 1: "req", +} + +func (p *TraceServiceDeleteViewArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TraceServiceDeleteViewArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } } - if err != nil { - return + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError } - return true, err -} -type traceServiceProcessorDeleteView struct { - handler TraceService + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *traceServiceProcessorDeleteView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceDeleteViewArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceDeleteViewArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewDeleteViewRequest() + if err := _field.Read(iprot); err != nil { + return err } + p.Req = _field + return nil +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceDeleteViewResult{} - var retval *DeleteViewResponse - if retval, err2 = p.handler.DeleteView(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteView: "+err2.Error()) - oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("DeleteView", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 +func (p *TraceServiceDeleteViewArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("DeleteView_args"); err != nil { + goto WriteStructBeginError } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError } - if err != nil { - return + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError } - return true, err -} - -type traceServiceProcessorListViews struct { - handler TraceService + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *traceServiceProcessorListViews) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListViewsArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListViewsResult{} - var retval *ListViewsResponse - if retval, err2 = p.handler.ListViews(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListViews: "+err2.Error()) - oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval +func (p *TraceServiceDeleteViewArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError } - if err2 = oprot.WriteMessageBegin("ListViews", thrift.REPLY, seqId); err2 != nil { - err = err2 + if err := p.Req.Write(oprot); err != nil { + return err } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TraceServiceDeleteViewArgs) String() string { + if p == nil { + return "" } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + return fmt.Sprintf("TraceServiceDeleteViewArgs(%+v)", *p) + +} + +func (p *TraceServiceDeleteViewArgs) DeepEqual(ano *TraceServiceDeleteViewArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false } - if err != nil { - return + if !p.Field1DeepEqual(ano.Req) { + return false } - return true, err + return true } -type traceServiceProcessorCreateManualAnnotation struct { - handler TraceService -} +func (p *TraceServiceDeleteViewArgs) Field1DeepEqual(src *DeleteViewRequest) bool { -func (p *traceServiceProcessorCreateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceCreateManualAnnotationArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err + if !p.Req.DeepEqual(src) { + return false } + return true +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceCreateManualAnnotationResult{} - var retval *CreateManualAnnotationResponse - if retval, err2 = p.handler.CreateManualAnnotation(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateManualAnnotation: "+err2.Error()) - oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("CreateManualAnnotation", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err +type TraceServiceDeleteViewResult struct { + Success *DeleteViewResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteViewResponse"` } -type traceServiceProcessorUpdateManualAnnotation struct { - handler TraceService +func NewTraceServiceDeleteViewResult() *TraceServiceDeleteViewResult { + return &TraceServiceDeleteViewResult{} } -func (p *traceServiceProcessorUpdateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceUpdateManualAnnotationArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } +func (p *TraceServiceDeleteViewResult) InitDefault() { +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceUpdateManualAnnotationResult{} - var retval *UpdateManualAnnotationResponse - if retval, err2 = p.handler.UpdateManualAnnotation(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateManualAnnotation: "+err2.Error()) - oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { +var TraceServiceDeleteViewResult_Success_DEFAULT *DeleteViewResponse + +func (p *TraceServiceDeleteViewResult) GetSuccess() (v *DeleteViewResponse) { + if p == nil { return } - return true, err + if !p.IsSetSuccess() { + return TraceServiceDeleteViewResult_Success_DEFAULT + } + return p.Success +} +func (p *TraceServiceDeleteViewResult) SetSuccess(x interface{}) { + p.Success = x.(*DeleteViewResponse) } -type traceServiceProcessorDeleteManualAnnotation struct { - handler TraceService +var fieldIDToName_TraceServiceDeleteViewResult = map[int16]string{ + 0: "success", } -func (p *traceServiceProcessorDeleteManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceDeleteManualAnnotationArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceDeleteViewResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TraceServiceDeleteViewResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError } - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceDeleteManualAnnotationResult{} - var retval *DeleteManualAnnotationResponse - if retval, err2 = p.handler.DeleteManualAnnotation(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteManualAnnotation: "+err2.Error()) - oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } } - if err2 = oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.REPLY, seqId); err2 != nil { - err = err2 + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceDeleteViewResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewDeleteViewResponse() + if err := _field.Read(iprot); err != nil { + return err } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + p.Success = _field + return nil +} + +func (p *TraceServiceDeleteViewResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("DeleteView_result"); err != nil { + goto WriteStructBeginError } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } } - if err != nil { - return + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError } - return true, err + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -type traceServiceProcessorListAnnotations struct { - handler TraceService +func (p *TraceServiceDeleteViewResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *traceServiceProcessorListAnnotations) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListAnnotationsArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceDeleteViewResult) String() string { + if p == nil { + return "" } + return fmt.Sprintf("TraceServiceDeleteViewResult(%+v)", *p) - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListAnnotationsResult{} - var retval *ListAnnotationsResponse - if retval, err2 = p.handler.ListAnnotations(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotations: "+err2.Error()) - oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ListAnnotations", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 +} + +func (p *TraceServiceDeleteViewResult) DeepEqual(ano *TraceServiceDeleteViewResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if !p.Field0DeepEqual(ano.Success) { + return false } - if err != nil { - return + return true +} + +func (p *TraceServiceDeleteViewResult) Field0DeepEqual(src *DeleteViewResponse) bool { + + if !p.Success.DeepEqual(src) { + return false } - return true, err + return true } -type TraceServiceListSpansArgs struct { - Req *ListSpansRequest `thrift:"req,1" frugal:"1,default,ListSpansRequest"` +type TraceServiceListViewsArgs struct { + Req *ListViewsRequest `thrift:"req,1" frugal:"1,default,ListViewsRequest"` } -func NewTraceServiceListSpansArgs() *TraceServiceListSpansArgs { - return &TraceServiceListSpansArgs{} +func NewTraceServiceListViewsArgs() *TraceServiceListViewsArgs { + return &TraceServiceListViewsArgs{} } -func (p *TraceServiceListSpansArgs) InitDefault() { +func (p *TraceServiceListViewsArgs) InitDefault() { } -var TraceServiceListSpansArgs_Req_DEFAULT *ListSpansRequest +var TraceServiceListViewsArgs_Req_DEFAULT *ListViewsRequest -func (p *TraceServiceListSpansArgs) GetReq() (v *ListSpansRequest) { +func (p *TraceServiceListViewsArgs) GetReq() (v *ListViewsRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceListSpansArgs_Req_DEFAULT + return TraceServiceListViewsArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceListSpansArgs) SetReq(val *ListSpansRequest) { +func (p *TraceServiceListViewsArgs) SetReq(val *ListViewsRequest) { p.Req = val } -var fieldIDToName_TraceServiceListSpansArgs = map[int16]string{ +var fieldIDToName_TraceServiceListViewsArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceListSpansArgs) IsSetReq() bool { +func (p *TraceServiceListViewsArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceListSpansArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -11944,7 +22542,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -11954,8 +22552,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListSpansArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListSpansRequest() +func (p *TraceServiceListViewsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListViewsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -11963,9 +22561,9 @@ func (p *TraceServiceListSpansArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListSpansArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListSpans_args"); err != nil { + if err = oprot.WriteStructBegin("ListViews_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -11991,7 +22589,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListSpansArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -12008,15 +22606,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceListSpansArgs) String() string { +func (p *TraceServiceListViewsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListSpansArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceListViewsArgs(%+v)", *p) } -func (p *TraceServiceListSpansArgs) DeepEqual(ano *TraceServiceListSpansArgs) bool { +func (p *TraceServiceListViewsArgs) DeepEqual(ano *TraceServiceListViewsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -12028,7 +22626,7 @@ func (p *TraceServiceListSpansArgs) DeepEqual(ano *TraceServiceListSpansArgs) bo return true } -func (p *TraceServiceListSpansArgs) Field1DeepEqual(src *ListSpansRequest) bool { +func (p *TraceServiceListViewsArgs) Field1DeepEqual(src *ListViewsRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -12036,41 +22634,41 @@ func (p *TraceServiceListSpansArgs) Field1DeepEqual(src *ListSpansRequest) bool return true } -type TraceServiceListSpansResult struct { - Success *ListSpansResponse `thrift:"success,0,optional" frugal:"0,optional,ListSpansResponse"` +type TraceServiceListViewsResult struct { + Success *ListViewsResponse `thrift:"success,0,optional" frugal:"0,optional,ListViewsResponse"` } -func NewTraceServiceListSpansResult() *TraceServiceListSpansResult { - return &TraceServiceListSpansResult{} +func NewTraceServiceListViewsResult() *TraceServiceListViewsResult { + return &TraceServiceListViewsResult{} } -func (p *TraceServiceListSpansResult) InitDefault() { +func (p *TraceServiceListViewsResult) InitDefault() { } -var TraceServiceListSpansResult_Success_DEFAULT *ListSpansResponse +var TraceServiceListViewsResult_Success_DEFAULT *ListViewsResponse -func (p *TraceServiceListSpansResult) GetSuccess() (v *ListSpansResponse) { +func (p *TraceServiceListViewsResult) GetSuccess() (v *ListViewsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceListSpansResult_Success_DEFAULT + return TraceServiceListViewsResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceListSpansResult) SetSuccess(x interface{}) { - p.Success = x.(*ListSpansResponse) +func (p *TraceServiceListViewsResult) SetSuccess(x interface{}) { + p.Success = x.(*ListViewsResponse) } -var fieldIDToName_TraceServiceListSpansResult = map[int16]string{ +var fieldIDToName_TraceServiceListViewsResult = map[int16]string{ 0: "success", } -func (p *TraceServiceListSpansResult) IsSetSuccess() bool { +func (p *TraceServiceListViewsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceListSpansResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -12115,7 +22713,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12125,8 +22723,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListSpansResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListSpansResponse() +func (p *TraceServiceListViewsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListViewsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -12134,9 +22732,9 @@ func (p *TraceServiceListSpansResult) ReadField0(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListSpansResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListSpans_result"); err != nil { + if err = oprot.WriteStructBegin("ListViews_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -12162,7 +22760,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListSpansResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -12181,15 +22779,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceListSpansResult) String() string { +func (p *TraceServiceListViewsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListSpansResult(%+v)", *p) + return fmt.Sprintf("TraceServiceListViewsResult(%+v)", *p) } -func (p *TraceServiceListSpansResult) DeepEqual(ano *TraceServiceListSpansResult) bool { +func (p *TraceServiceListViewsResult) DeepEqual(ano *TraceServiceListViewsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -12201,7 +22799,7 @@ func (p *TraceServiceListSpansResult) DeepEqual(ano *TraceServiceListSpansResult return true } -func (p *TraceServiceListSpansResult) Field0DeepEqual(src *ListSpansResponse) bool { +func (p *TraceServiceListViewsResult) Field0DeepEqual(src *ListViewsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -12209,41 +22807,41 @@ func (p *TraceServiceListSpansResult) Field0DeepEqual(src *ListSpansResponse) bo return true } -type TraceServiceGetTraceArgs struct { - Req *GetTraceRequest `thrift:"req,1" frugal:"1,default,GetTraceRequest"` +type TraceServiceCreateManualAnnotationArgs struct { + Req *CreateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,CreateManualAnnotationRequest"` } -func NewTraceServiceGetTraceArgs() *TraceServiceGetTraceArgs { - return &TraceServiceGetTraceArgs{} +func NewTraceServiceCreateManualAnnotationArgs() *TraceServiceCreateManualAnnotationArgs { + return &TraceServiceCreateManualAnnotationArgs{} } -func (p *TraceServiceGetTraceArgs) InitDefault() { +func (p *TraceServiceCreateManualAnnotationArgs) InitDefault() { } -var TraceServiceGetTraceArgs_Req_DEFAULT *GetTraceRequest +var TraceServiceCreateManualAnnotationArgs_Req_DEFAULT *CreateManualAnnotationRequest -func (p *TraceServiceGetTraceArgs) GetReq() (v *GetTraceRequest) { +func (p *TraceServiceCreateManualAnnotationArgs) GetReq() (v *CreateManualAnnotationRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceGetTraceArgs_Req_DEFAULT + return TraceServiceCreateManualAnnotationArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceGetTraceArgs) SetReq(val *GetTraceRequest) { +func (p *TraceServiceCreateManualAnnotationArgs) SetReq(val *CreateManualAnnotationRequest) { p.Req = val } -var fieldIDToName_TraceServiceGetTraceArgs = map[int16]string{ +var fieldIDToName_TraceServiceCreateManualAnnotationArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceGetTraceArgs) IsSetReq() bool { +func (p *TraceServiceCreateManualAnnotationArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceGetTraceArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -12288,7 +22886,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12298,8 +22896,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceGetTraceArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewGetTraceRequest() +func (p *TraceServiceCreateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCreateManualAnnotationRequest() if err := _field.Read(iprot); err != nil { return err } @@ -12307,9 +22905,9 @@ func (p *TraceServiceGetTraceArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceGetTraceArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetTrace_args"); err != nil { + if err = oprot.WriteStructBegin("CreateManualAnnotation_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -12335,7 +22933,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceGetTraceArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -12352,15 +22950,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceGetTraceArgs) String() string { +func (p *TraceServiceCreateManualAnnotationArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceGetTraceArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateManualAnnotationArgs(%+v)", *p) } -func (p *TraceServiceGetTraceArgs) DeepEqual(ano *TraceServiceGetTraceArgs) bool { +func (p *TraceServiceCreateManualAnnotationArgs) DeepEqual(ano *TraceServiceCreateManualAnnotationArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -12372,7 +22970,7 @@ func (p *TraceServiceGetTraceArgs) DeepEqual(ano *TraceServiceGetTraceArgs) bool return true } -func (p *TraceServiceGetTraceArgs) Field1DeepEqual(src *GetTraceRequest) bool { +func (p *TraceServiceCreateManualAnnotationArgs) Field1DeepEqual(src *CreateManualAnnotationRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -12380,41 +22978,41 @@ func (p *TraceServiceGetTraceArgs) Field1DeepEqual(src *GetTraceRequest) bool { return true } -type TraceServiceGetTraceResult struct { - Success *GetTraceResponse `thrift:"success,0,optional" frugal:"0,optional,GetTraceResponse"` +type TraceServiceCreateManualAnnotationResult struct { + Success *CreateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,CreateManualAnnotationResponse"` } -func NewTraceServiceGetTraceResult() *TraceServiceGetTraceResult { - return &TraceServiceGetTraceResult{} +func NewTraceServiceCreateManualAnnotationResult() *TraceServiceCreateManualAnnotationResult { + return &TraceServiceCreateManualAnnotationResult{} } -func (p *TraceServiceGetTraceResult) InitDefault() { +func (p *TraceServiceCreateManualAnnotationResult) InitDefault() { } -var TraceServiceGetTraceResult_Success_DEFAULT *GetTraceResponse +var TraceServiceCreateManualAnnotationResult_Success_DEFAULT *CreateManualAnnotationResponse -func (p *TraceServiceGetTraceResult) GetSuccess() (v *GetTraceResponse) { +func (p *TraceServiceCreateManualAnnotationResult) GetSuccess() (v *CreateManualAnnotationResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceGetTraceResult_Success_DEFAULT + return TraceServiceCreateManualAnnotationResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceGetTraceResult) SetSuccess(x interface{}) { - p.Success = x.(*GetTraceResponse) +func (p *TraceServiceCreateManualAnnotationResult) SetSuccess(x interface{}) { + p.Success = x.(*CreateManualAnnotationResponse) } -var fieldIDToName_TraceServiceGetTraceResult = map[int16]string{ +var fieldIDToName_TraceServiceCreateManualAnnotationResult = map[int16]string{ 0: "success", } -func (p *TraceServiceGetTraceResult) IsSetSuccess() bool { +func (p *TraceServiceCreateManualAnnotationResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceGetTraceResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -12459,7 +23057,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12469,8 +23067,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceGetTraceResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewGetTraceResponse() +func (p *TraceServiceCreateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCreateManualAnnotationResponse() if err := _field.Read(iprot); err != nil { return err } @@ -12478,9 +23076,9 @@ func (p *TraceServiceGetTraceResult) ReadField0(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceGetTraceResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetTrace_result"); err != nil { + if err = oprot.WriteStructBegin("CreateManualAnnotation_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -12506,7 +23104,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceGetTraceResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -12525,15 +23123,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceGetTraceResult) String() string { +func (p *TraceServiceCreateManualAnnotationResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceGetTraceResult(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateManualAnnotationResult(%+v)", *p) } -func (p *TraceServiceGetTraceResult) DeepEqual(ano *TraceServiceGetTraceResult) bool { +func (p *TraceServiceCreateManualAnnotationResult) DeepEqual(ano *TraceServiceCreateManualAnnotationResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -12545,7 +23143,7 @@ func (p *TraceServiceGetTraceResult) DeepEqual(ano *TraceServiceGetTraceResult) return true } -func (p *TraceServiceGetTraceResult) Field0DeepEqual(src *GetTraceResponse) bool { +func (p *TraceServiceCreateManualAnnotationResult) Field0DeepEqual(src *CreateManualAnnotationResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -12553,41 +23151,41 @@ func (p *TraceServiceGetTraceResult) Field0DeepEqual(src *GetTraceResponse) bool return true } -type TraceServiceBatchGetTracesAdvanceInfoArgs struct { - Req *BatchGetTracesAdvanceInfoRequest `thrift:"req,1" frugal:"1,default,BatchGetTracesAdvanceInfoRequest"` +type TraceServiceUpdateManualAnnotationArgs struct { + Req *UpdateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,UpdateManualAnnotationRequest"` } -func NewTraceServiceBatchGetTracesAdvanceInfoArgs() *TraceServiceBatchGetTracesAdvanceInfoArgs { - return &TraceServiceBatchGetTracesAdvanceInfoArgs{} +func NewTraceServiceUpdateManualAnnotationArgs() *TraceServiceUpdateManualAnnotationArgs { + return &TraceServiceUpdateManualAnnotationArgs{} } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) InitDefault() { +func (p *TraceServiceUpdateManualAnnotationArgs) InitDefault() { } -var TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT *BatchGetTracesAdvanceInfoRequest +var TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT *UpdateManualAnnotationRequest -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) GetReq() (v *BatchGetTracesAdvanceInfoRequest) { +func (p *TraceServiceUpdateManualAnnotationArgs) GetReq() (v *UpdateManualAnnotationRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT + return TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) SetReq(val *BatchGetTracesAdvanceInfoRequest) { +func (p *TraceServiceUpdateManualAnnotationArgs) SetReq(val *UpdateManualAnnotationRequest) { p.Req = val } -var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs = map[int16]string{ +var fieldIDToName_TraceServiceUpdateManualAnnotationArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) IsSetReq() bool { +func (p *TraceServiceUpdateManualAnnotationArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -12632,7 +23230,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12642,8 +23240,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewBatchGetTracesAdvanceInfoRequest() +func (p *TraceServiceUpdateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewUpdateManualAnnotationRequest() if err := _field.Read(iprot); err != nil { return err } @@ -12651,9 +23249,9 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) ReadField1(iprot thrift.TPro return nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_args"); err != nil { + if err = oprot.WriteStructBegin("UpdateManualAnnotation_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -12679,7 +23277,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -12696,15 +23294,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) String() string { +func (p *TraceServiceUpdateManualAnnotationArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateManualAnnotationArgs(%+v)", *p) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoArgs) bool { +func (p *TraceServiceUpdateManualAnnotationArgs) DeepEqual(ano *TraceServiceUpdateManualAnnotationArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -12716,7 +23314,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepEqual(ano *TraceServiceB return true } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Field1DeepEqual(src *BatchGetTracesAdvanceInfoRequest) bool { +func (p *TraceServiceUpdateManualAnnotationArgs) Field1DeepEqual(src *UpdateManualAnnotationRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -12724,41 +23322,41 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Field1DeepEqual(src *BatchGe return true } -type TraceServiceBatchGetTracesAdvanceInfoResult struct { - Success *BatchGetTracesAdvanceInfoResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetTracesAdvanceInfoResponse"` +type TraceServiceUpdateManualAnnotationResult struct { + Success *UpdateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateManualAnnotationResponse"` } -func NewTraceServiceBatchGetTracesAdvanceInfoResult() *TraceServiceBatchGetTracesAdvanceInfoResult { - return &TraceServiceBatchGetTracesAdvanceInfoResult{} +func NewTraceServiceUpdateManualAnnotationResult() *TraceServiceUpdateManualAnnotationResult { + return &TraceServiceUpdateManualAnnotationResult{} } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) InitDefault() { +func (p *TraceServiceUpdateManualAnnotationResult) InitDefault() { } -var TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT *BatchGetTracesAdvanceInfoResponse +var TraceServiceUpdateManualAnnotationResult_Success_DEFAULT *UpdateManualAnnotationResponse -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) GetSuccess() (v *BatchGetTracesAdvanceInfoResponse) { +func (p *TraceServiceUpdateManualAnnotationResult) GetSuccess() (v *UpdateManualAnnotationResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT + return TraceServiceUpdateManualAnnotationResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) SetSuccess(x interface{}) { - p.Success = x.(*BatchGetTracesAdvanceInfoResponse) +func (p *TraceServiceUpdateManualAnnotationResult) SetSuccess(x interface{}) { + p.Success = x.(*UpdateManualAnnotationResponse) } -var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult = map[int16]string{ +var fieldIDToName_TraceServiceUpdateManualAnnotationResult = map[int16]string{ 0: "success", } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) IsSetSuccess() bool { +func (p *TraceServiceUpdateManualAnnotationResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -12803,7 +23401,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12813,8 +23411,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewBatchGetTracesAdvanceInfoResponse() +func (p *TraceServiceUpdateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewUpdateManualAnnotationResponse() if err := _field.Read(iprot); err != nil { return err } @@ -12822,9 +23420,9 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) ReadField0(iprot thrift.TP return nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_result"); err != nil { + if err = oprot.WriteStructBegin("UpdateManualAnnotation_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -12850,7 +23448,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -12869,15 +23467,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) String() string { +func (p *TraceServiceUpdateManualAnnotationResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoResult(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateManualAnnotationResult(%+v)", *p) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoResult) bool { +func (p *TraceServiceUpdateManualAnnotationResult) DeepEqual(ano *TraceServiceUpdateManualAnnotationResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -12889,7 +23487,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepEqual(ano *TraceServic return true } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Field0DeepEqual(src *BatchGetTracesAdvanceInfoResponse) bool { +func (p *TraceServiceUpdateManualAnnotationResult) Field0DeepEqual(src *UpdateManualAnnotationResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -12897,41 +23495,41 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Field0DeepEqual(src *Batch return true } -type TraceServiceIngestTracesInnerArgs struct { - Req *IngestTracesRequest `thrift:"req,1" frugal:"1,default,IngestTracesRequest"` +type TraceServiceDeleteManualAnnotationArgs struct { + Req *DeleteManualAnnotationRequest `thrift:"req,1" frugal:"1,default,DeleteManualAnnotationRequest"` } -func NewTraceServiceIngestTracesInnerArgs() *TraceServiceIngestTracesInnerArgs { - return &TraceServiceIngestTracesInnerArgs{} +func NewTraceServiceDeleteManualAnnotationArgs() *TraceServiceDeleteManualAnnotationArgs { + return &TraceServiceDeleteManualAnnotationArgs{} } -func (p *TraceServiceIngestTracesInnerArgs) InitDefault() { +func (p *TraceServiceDeleteManualAnnotationArgs) InitDefault() { } -var TraceServiceIngestTracesInnerArgs_Req_DEFAULT *IngestTracesRequest +var TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT *DeleteManualAnnotationRequest -func (p *TraceServiceIngestTracesInnerArgs) GetReq() (v *IngestTracesRequest) { +func (p *TraceServiceDeleteManualAnnotationArgs) GetReq() (v *DeleteManualAnnotationRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceIngestTracesInnerArgs_Req_DEFAULT + return TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceIngestTracesInnerArgs) SetReq(val *IngestTracesRequest) { +func (p *TraceServiceDeleteManualAnnotationArgs) SetReq(val *DeleteManualAnnotationRequest) { p.Req = val } -var fieldIDToName_TraceServiceIngestTracesInnerArgs = map[int16]string{ +var fieldIDToName_TraceServiceDeleteManualAnnotationArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceIngestTracesInnerArgs) IsSetReq() bool { +func (p *TraceServiceDeleteManualAnnotationArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceIngestTracesInnerArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -12976,7 +23574,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12986,8 +23584,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewIngestTracesRequest() +func (p *TraceServiceDeleteManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewDeleteManualAnnotationRequest() if err := _field.Read(iprot); err != nil { return err } @@ -12995,9 +23593,9 @@ func (p *TraceServiceIngestTracesInnerArgs) ReadField1(iprot thrift.TProtocol) e return nil } -func (p *TraceServiceIngestTracesInnerArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("IngestTracesInner_args"); err != nil { + if err = oprot.WriteStructBegin("DeleteManualAnnotation_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13023,7 +23621,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -13040,15 +23638,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerArgs) String() string { +func (p *TraceServiceDeleteManualAnnotationArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceIngestTracesInnerArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceDeleteManualAnnotationArgs(%+v)", *p) } -func (p *TraceServiceIngestTracesInnerArgs) DeepEqual(ano *TraceServiceIngestTracesInnerArgs) bool { +func (p *TraceServiceDeleteManualAnnotationArgs) DeepEqual(ano *TraceServiceDeleteManualAnnotationArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -13060,7 +23658,7 @@ func (p *TraceServiceIngestTracesInnerArgs) DeepEqual(ano *TraceServiceIngestTra return true } -func (p *TraceServiceIngestTracesInnerArgs) Field1DeepEqual(src *IngestTracesRequest) bool { +func (p *TraceServiceDeleteManualAnnotationArgs) Field1DeepEqual(src *DeleteManualAnnotationRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -13068,41 +23666,41 @@ func (p *TraceServiceIngestTracesInnerArgs) Field1DeepEqual(src *IngestTracesReq return true } -type TraceServiceIngestTracesInnerResult struct { - Success *IngestTracesResponse `thrift:"success,0,optional" frugal:"0,optional,IngestTracesResponse"` +type TraceServiceDeleteManualAnnotationResult struct { + Success *DeleteManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteManualAnnotationResponse"` } -func NewTraceServiceIngestTracesInnerResult() *TraceServiceIngestTracesInnerResult { - return &TraceServiceIngestTracesInnerResult{} +func NewTraceServiceDeleteManualAnnotationResult() *TraceServiceDeleteManualAnnotationResult { + return &TraceServiceDeleteManualAnnotationResult{} } -func (p *TraceServiceIngestTracesInnerResult) InitDefault() { +func (p *TraceServiceDeleteManualAnnotationResult) InitDefault() { } -var TraceServiceIngestTracesInnerResult_Success_DEFAULT *IngestTracesResponse +var TraceServiceDeleteManualAnnotationResult_Success_DEFAULT *DeleteManualAnnotationResponse -func (p *TraceServiceIngestTracesInnerResult) GetSuccess() (v *IngestTracesResponse) { +func (p *TraceServiceDeleteManualAnnotationResult) GetSuccess() (v *DeleteManualAnnotationResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceIngestTracesInnerResult_Success_DEFAULT + return TraceServiceDeleteManualAnnotationResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceIngestTracesInnerResult) SetSuccess(x interface{}) { - p.Success = x.(*IngestTracesResponse) +func (p *TraceServiceDeleteManualAnnotationResult) SetSuccess(x interface{}) { + p.Success = x.(*DeleteManualAnnotationResponse) } -var fieldIDToName_TraceServiceIngestTracesInnerResult = map[int16]string{ +var fieldIDToName_TraceServiceDeleteManualAnnotationResult = map[int16]string{ 0: "success", } -func (p *TraceServiceIngestTracesInnerResult) IsSetSuccess() bool { +func (p *TraceServiceDeleteManualAnnotationResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceIngestTracesInnerResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -13147,7 +23745,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -13157,8 +23755,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewIngestTracesResponse() +func (p *TraceServiceDeleteManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewDeleteManualAnnotationResponse() if err := _field.Read(iprot); err != nil { return err } @@ -13166,9 +23764,9 @@ func (p *TraceServiceIngestTracesInnerResult) ReadField0(iprot thrift.TProtocol) return nil } -func (p *TraceServiceIngestTracesInnerResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("IngestTracesInner_result"); err != nil { + if err = oprot.WriteStructBegin("DeleteManualAnnotation_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13194,7 +23792,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -13213,15 +23811,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerResult) String() string { +func (p *TraceServiceDeleteManualAnnotationResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceIngestTracesInnerResult(%+v)", *p) + return fmt.Sprintf("TraceServiceDeleteManualAnnotationResult(%+v)", *p) } -func (p *TraceServiceIngestTracesInnerResult) DeepEqual(ano *TraceServiceIngestTracesInnerResult) bool { +func (p *TraceServiceDeleteManualAnnotationResult) DeepEqual(ano *TraceServiceDeleteManualAnnotationResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -13233,7 +23831,7 @@ func (p *TraceServiceIngestTracesInnerResult) DeepEqual(ano *TraceServiceIngestT return true } -func (p *TraceServiceIngestTracesInnerResult) Field0DeepEqual(src *IngestTracesResponse) bool { +func (p *TraceServiceDeleteManualAnnotationResult) Field0DeepEqual(src *DeleteManualAnnotationResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -13241,41 +23839,41 @@ func (p *TraceServiceIngestTracesInnerResult) Field0DeepEqual(src *IngestTracesR return true } -type TraceServiceGetTracesMetaInfoArgs struct { - Req *GetTracesMetaInfoRequest `thrift:"req,1" frugal:"1,default,GetTracesMetaInfoRequest"` +type TraceServiceListAnnotationsArgs struct { + Req *ListAnnotationsRequest `thrift:"req,1" frugal:"1,default,ListAnnotationsRequest"` } -func NewTraceServiceGetTracesMetaInfoArgs() *TraceServiceGetTracesMetaInfoArgs { - return &TraceServiceGetTracesMetaInfoArgs{} +func NewTraceServiceListAnnotationsArgs() *TraceServiceListAnnotationsArgs { + return &TraceServiceListAnnotationsArgs{} } -func (p *TraceServiceGetTracesMetaInfoArgs) InitDefault() { +func (p *TraceServiceListAnnotationsArgs) InitDefault() { } -var TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT *GetTracesMetaInfoRequest +var TraceServiceListAnnotationsArgs_Req_DEFAULT *ListAnnotationsRequest -func (p *TraceServiceGetTracesMetaInfoArgs) GetReq() (v *GetTracesMetaInfoRequest) { +func (p *TraceServiceListAnnotationsArgs) GetReq() (v *ListAnnotationsRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT + return TraceServiceListAnnotationsArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceGetTracesMetaInfoArgs) SetReq(val *GetTracesMetaInfoRequest) { +func (p *TraceServiceListAnnotationsArgs) SetReq(val *ListAnnotationsRequest) { p.Req = val } -var fieldIDToName_TraceServiceGetTracesMetaInfoArgs = map[int16]string{ +var fieldIDToName_TraceServiceListAnnotationsArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceGetTracesMetaInfoArgs) IsSetReq() bool { +func (p *TraceServiceListAnnotationsArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceGetTracesMetaInfoArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -13320,7 +23918,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -13330,8 +23928,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewGetTracesMetaInfoRequest() +func (p *TraceServiceListAnnotationsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListAnnotationsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -13339,9 +23937,9 @@ func (p *TraceServiceGetTracesMetaInfoArgs) ReadField1(iprot thrift.TProtocol) e return nil } -func (p *TraceServiceGetTracesMetaInfoArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetTracesMetaInfo_args"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotations_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13367,7 +23965,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -13384,15 +23982,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoArgs) String() string { +func (p *TraceServiceListAnnotationsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceGetTracesMetaInfoArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceListAnnotationsArgs(%+v)", *p) } -func (p *TraceServiceGetTracesMetaInfoArgs) DeepEqual(ano *TraceServiceGetTracesMetaInfoArgs) bool { +func (p *TraceServiceListAnnotationsArgs) DeepEqual(ano *TraceServiceListAnnotationsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -13404,7 +24002,7 @@ func (p *TraceServiceGetTracesMetaInfoArgs) DeepEqual(ano *TraceServiceGetTraces return true } -func (p *TraceServiceGetTracesMetaInfoArgs) Field1DeepEqual(src *GetTracesMetaInfoRequest) bool { +func (p *TraceServiceListAnnotationsArgs) Field1DeepEqual(src *ListAnnotationsRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -13412,41 +24010,41 @@ func (p *TraceServiceGetTracesMetaInfoArgs) Field1DeepEqual(src *GetTracesMetaIn return true } -type TraceServiceGetTracesMetaInfoResult struct { - Success *GetTracesMetaInfoResponse `thrift:"success,0,optional" frugal:"0,optional,GetTracesMetaInfoResponse"` +type TraceServiceListAnnotationsResult struct { + Success *ListAnnotationsResponse `thrift:"success,0,optional" frugal:"0,optional,ListAnnotationsResponse"` } -func NewTraceServiceGetTracesMetaInfoResult() *TraceServiceGetTracesMetaInfoResult { - return &TraceServiceGetTracesMetaInfoResult{} +func NewTraceServiceListAnnotationsResult() *TraceServiceListAnnotationsResult { + return &TraceServiceListAnnotationsResult{} } -func (p *TraceServiceGetTracesMetaInfoResult) InitDefault() { +func (p *TraceServiceListAnnotationsResult) InitDefault() { } -var TraceServiceGetTracesMetaInfoResult_Success_DEFAULT *GetTracesMetaInfoResponse +var TraceServiceListAnnotationsResult_Success_DEFAULT *ListAnnotationsResponse -func (p *TraceServiceGetTracesMetaInfoResult) GetSuccess() (v *GetTracesMetaInfoResponse) { +func (p *TraceServiceListAnnotationsResult) GetSuccess() (v *ListAnnotationsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceGetTracesMetaInfoResult_Success_DEFAULT + return TraceServiceListAnnotationsResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceGetTracesMetaInfoResult) SetSuccess(x interface{}) { - p.Success = x.(*GetTracesMetaInfoResponse) +func (p *TraceServiceListAnnotationsResult) SetSuccess(x interface{}) { + p.Success = x.(*ListAnnotationsResponse) } -var fieldIDToName_TraceServiceGetTracesMetaInfoResult = map[int16]string{ +var fieldIDToName_TraceServiceListAnnotationsResult = map[int16]string{ 0: "success", } -func (p *TraceServiceGetTracesMetaInfoResult) IsSetSuccess() bool { +func (p *TraceServiceListAnnotationsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceGetTracesMetaInfoResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -13491,7 +24089,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -13501,8 +24099,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewGetTracesMetaInfoResponse() +func (p *TraceServiceListAnnotationsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListAnnotationsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -13510,9 +24108,9 @@ func (p *TraceServiceGetTracesMetaInfoResult) ReadField0(iprot thrift.TProtocol) return nil } -func (p *TraceServiceGetTracesMetaInfoResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetTracesMetaInfo_result"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotations_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13538,7 +24136,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -13557,15 +24155,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoResult) String() string { +func (p *TraceServiceListAnnotationsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceGetTracesMetaInfoResult(%+v)", *p) + return fmt.Sprintf("TraceServiceListAnnotationsResult(%+v)", *p) } -func (p *TraceServiceGetTracesMetaInfoResult) DeepEqual(ano *TraceServiceGetTracesMetaInfoResult) bool { +func (p *TraceServiceListAnnotationsResult) DeepEqual(ano *TraceServiceListAnnotationsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -13577,7 +24175,7 @@ func (p *TraceServiceGetTracesMetaInfoResult) DeepEqual(ano *TraceServiceGetTrac return true } -func (p *TraceServiceGetTracesMetaInfoResult) Field0DeepEqual(src *GetTracesMetaInfoResponse) bool { +func (p *TraceServiceListAnnotationsResult) Field0DeepEqual(src *ListAnnotationsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -13585,41 +24183,41 @@ func (p *TraceServiceGetTracesMetaInfoResult) Field0DeepEqual(src *GetTracesMeta return true } -type TraceServiceCreateViewArgs struct { - Req *CreateViewRequest `thrift:"req,1" frugal:"1,default,CreateViewRequest"` +type TraceServiceChangeEvaluatorScoreArgs struct { + Req *ChangeEvaluatorScoreRequest `thrift:"req,1" frugal:"1,default,ChangeEvaluatorScoreRequest"` } -func NewTraceServiceCreateViewArgs() *TraceServiceCreateViewArgs { - return &TraceServiceCreateViewArgs{} +func NewTraceServiceChangeEvaluatorScoreArgs() *TraceServiceChangeEvaluatorScoreArgs { + return &TraceServiceChangeEvaluatorScoreArgs{} } -func (p *TraceServiceCreateViewArgs) InitDefault() { +func (p *TraceServiceChangeEvaluatorScoreArgs) InitDefault() { } -var TraceServiceCreateViewArgs_Req_DEFAULT *CreateViewRequest +var TraceServiceChangeEvaluatorScoreArgs_Req_DEFAULT *ChangeEvaluatorScoreRequest -func (p *TraceServiceCreateViewArgs) GetReq() (v *CreateViewRequest) { +func (p *TraceServiceChangeEvaluatorScoreArgs) GetReq() (v *ChangeEvaluatorScoreRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceCreateViewArgs_Req_DEFAULT + return TraceServiceChangeEvaluatorScoreArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceCreateViewArgs) SetReq(val *CreateViewRequest) { +func (p *TraceServiceChangeEvaluatorScoreArgs) SetReq(val *ChangeEvaluatorScoreRequest) { p.Req = val } -var fieldIDToName_TraceServiceCreateViewArgs = map[int16]string{ +var fieldIDToName_TraceServiceChangeEvaluatorScoreArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceCreateViewArgs) IsSetReq() bool { +func (p *TraceServiceChangeEvaluatorScoreArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceCreateViewArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -13664,7 +24262,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -13674,8 +24272,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateViewArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewCreateViewRequest() +func (p *TraceServiceChangeEvaluatorScoreArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewChangeEvaluatorScoreRequest() if err := _field.Read(iprot); err != nil { return err } @@ -13683,9 +24281,9 @@ func (p *TraceServiceCreateViewArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceCreateViewArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateView_args"); err != nil { + if err = oprot.WriteStructBegin("ChangeEvaluatorScore_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13711,7 +24309,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -13728,15 +24326,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceCreateViewArgs) String() string { +func (p *TraceServiceChangeEvaluatorScoreArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateViewArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceChangeEvaluatorScoreArgs(%+v)", *p) } -func (p *TraceServiceCreateViewArgs) DeepEqual(ano *TraceServiceCreateViewArgs) bool { +func (p *TraceServiceChangeEvaluatorScoreArgs) DeepEqual(ano *TraceServiceChangeEvaluatorScoreArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -13748,7 +24346,7 @@ func (p *TraceServiceCreateViewArgs) DeepEqual(ano *TraceServiceCreateViewArgs) return true } -func (p *TraceServiceCreateViewArgs) Field1DeepEqual(src *CreateViewRequest) bool { +func (p *TraceServiceChangeEvaluatorScoreArgs) Field1DeepEqual(src *ChangeEvaluatorScoreRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -13756,41 +24354,41 @@ func (p *TraceServiceCreateViewArgs) Field1DeepEqual(src *CreateViewRequest) boo return true } -type TraceServiceCreateViewResult struct { - Success *CreateViewResponse `thrift:"success,0,optional" frugal:"0,optional,CreateViewResponse"` +type TraceServiceChangeEvaluatorScoreResult struct { + Success *ChangeEvaluatorScoreResponse `thrift:"success,0,optional" frugal:"0,optional,ChangeEvaluatorScoreResponse"` } -func NewTraceServiceCreateViewResult() *TraceServiceCreateViewResult { - return &TraceServiceCreateViewResult{} +func NewTraceServiceChangeEvaluatorScoreResult() *TraceServiceChangeEvaluatorScoreResult { + return &TraceServiceChangeEvaluatorScoreResult{} } -func (p *TraceServiceCreateViewResult) InitDefault() { +func (p *TraceServiceChangeEvaluatorScoreResult) InitDefault() { } -var TraceServiceCreateViewResult_Success_DEFAULT *CreateViewResponse +var TraceServiceChangeEvaluatorScoreResult_Success_DEFAULT *ChangeEvaluatorScoreResponse -func (p *TraceServiceCreateViewResult) GetSuccess() (v *CreateViewResponse) { +func (p *TraceServiceChangeEvaluatorScoreResult) GetSuccess() (v *ChangeEvaluatorScoreResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceCreateViewResult_Success_DEFAULT + return TraceServiceChangeEvaluatorScoreResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceCreateViewResult) SetSuccess(x interface{}) { - p.Success = x.(*CreateViewResponse) +func (p *TraceServiceChangeEvaluatorScoreResult) SetSuccess(x interface{}) { + p.Success = x.(*ChangeEvaluatorScoreResponse) } -var fieldIDToName_TraceServiceCreateViewResult = map[int16]string{ +var fieldIDToName_TraceServiceChangeEvaluatorScoreResult = map[int16]string{ 0: "success", } -func (p *TraceServiceCreateViewResult) IsSetSuccess() bool { +func (p *TraceServiceChangeEvaluatorScoreResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceCreateViewResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -13835,7 +24433,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -13845,8 +24443,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateViewResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewCreateViewResponse() +func (p *TraceServiceChangeEvaluatorScoreResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewChangeEvaluatorScoreResponse() if err := _field.Read(iprot); err != nil { return err } @@ -13854,9 +24452,9 @@ func (p *TraceServiceCreateViewResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceCreateViewResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateView_result"); err != nil { + if err = oprot.WriteStructBegin("ChangeEvaluatorScore_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13882,7 +24480,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateViewResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -13901,15 +24499,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceCreateViewResult) String() string { +func (p *TraceServiceChangeEvaluatorScoreResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateViewResult(%+v)", *p) + return fmt.Sprintf("TraceServiceChangeEvaluatorScoreResult(%+v)", *p) } -func (p *TraceServiceCreateViewResult) DeepEqual(ano *TraceServiceCreateViewResult) bool { +func (p *TraceServiceChangeEvaluatorScoreResult) DeepEqual(ano *TraceServiceChangeEvaluatorScoreResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -13921,7 +24519,7 @@ func (p *TraceServiceCreateViewResult) DeepEqual(ano *TraceServiceCreateViewResu return true } -func (p *TraceServiceCreateViewResult) Field0DeepEqual(src *CreateViewResponse) bool { +func (p *TraceServiceChangeEvaluatorScoreResult) Field0DeepEqual(src *ChangeEvaluatorScoreResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -13929,41 +24527,41 @@ func (p *TraceServiceCreateViewResult) Field0DeepEqual(src *CreateViewResponse) return true } -type TraceServiceUpdateViewArgs struct { - Req *UpdateViewRequest `thrift:"req,1" frugal:"1,default,UpdateViewRequest"` +type TraceServiceListAnnotationEvaluatorsArgs struct { + Req *ListAnnotationEvaluatorsRequest `thrift:"req,1" frugal:"1,default,ListAnnotationEvaluatorsRequest"` } -func NewTraceServiceUpdateViewArgs() *TraceServiceUpdateViewArgs { - return &TraceServiceUpdateViewArgs{} +func NewTraceServiceListAnnotationEvaluatorsArgs() *TraceServiceListAnnotationEvaluatorsArgs { + return &TraceServiceListAnnotationEvaluatorsArgs{} } -func (p *TraceServiceUpdateViewArgs) InitDefault() { +func (p *TraceServiceListAnnotationEvaluatorsArgs) InitDefault() { } -var TraceServiceUpdateViewArgs_Req_DEFAULT *UpdateViewRequest +var TraceServiceListAnnotationEvaluatorsArgs_Req_DEFAULT *ListAnnotationEvaluatorsRequest -func (p *TraceServiceUpdateViewArgs) GetReq() (v *UpdateViewRequest) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) GetReq() (v *ListAnnotationEvaluatorsRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceUpdateViewArgs_Req_DEFAULT + return TraceServiceListAnnotationEvaluatorsArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceUpdateViewArgs) SetReq(val *UpdateViewRequest) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) SetReq(val *ListAnnotationEvaluatorsRequest) { p.Req = val } -var fieldIDToName_TraceServiceUpdateViewArgs = map[int16]string{ +var fieldIDToName_TraceServiceListAnnotationEvaluatorsArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceUpdateViewArgs) IsSetReq() bool { +func (p *TraceServiceListAnnotationEvaluatorsArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceUpdateViewArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -14008,7 +24606,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14018,8 +24616,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateViewArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewUpdateViewRequest() +func (p *TraceServiceListAnnotationEvaluatorsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListAnnotationEvaluatorsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -14027,9 +24625,9 @@ func (p *TraceServiceUpdateViewArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceUpdateViewArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateView_args"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotationEvaluators_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14055,7 +24653,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -14072,15 +24670,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceUpdateViewArgs) String() string { +func (p *TraceServiceListAnnotationEvaluatorsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateViewArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceListAnnotationEvaluatorsArgs(%+v)", *p) } -func (p *TraceServiceUpdateViewArgs) DeepEqual(ano *TraceServiceUpdateViewArgs) bool { +func (p *TraceServiceListAnnotationEvaluatorsArgs) DeepEqual(ano *TraceServiceListAnnotationEvaluatorsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -14092,7 +24690,7 @@ func (p *TraceServiceUpdateViewArgs) DeepEqual(ano *TraceServiceUpdateViewArgs) return true } -func (p *TraceServiceUpdateViewArgs) Field1DeepEqual(src *UpdateViewRequest) bool { +func (p *TraceServiceListAnnotationEvaluatorsArgs) Field1DeepEqual(src *ListAnnotationEvaluatorsRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -14100,41 +24698,41 @@ func (p *TraceServiceUpdateViewArgs) Field1DeepEqual(src *UpdateViewRequest) boo return true } -type TraceServiceUpdateViewResult struct { - Success *UpdateViewResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateViewResponse"` +type TraceServiceListAnnotationEvaluatorsResult struct { + Success *ListAnnotationEvaluatorsResponse `thrift:"success,0,optional" frugal:"0,optional,ListAnnotationEvaluatorsResponse"` } -func NewTraceServiceUpdateViewResult() *TraceServiceUpdateViewResult { - return &TraceServiceUpdateViewResult{} +func NewTraceServiceListAnnotationEvaluatorsResult() *TraceServiceListAnnotationEvaluatorsResult { + return &TraceServiceListAnnotationEvaluatorsResult{} } -func (p *TraceServiceUpdateViewResult) InitDefault() { +func (p *TraceServiceListAnnotationEvaluatorsResult) InitDefault() { } -var TraceServiceUpdateViewResult_Success_DEFAULT *UpdateViewResponse +var TraceServiceListAnnotationEvaluatorsResult_Success_DEFAULT *ListAnnotationEvaluatorsResponse -func (p *TraceServiceUpdateViewResult) GetSuccess() (v *UpdateViewResponse) { +func (p *TraceServiceListAnnotationEvaluatorsResult) GetSuccess() (v *ListAnnotationEvaluatorsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceUpdateViewResult_Success_DEFAULT + return TraceServiceListAnnotationEvaluatorsResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceUpdateViewResult) SetSuccess(x interface{}) { - p.Success = x.(*UpdateViewResponse) +func (p *TraceServiceListAnnotationEvaluatorsResult) SetSuccess(x interface{}) { + p.Success = x.(*ListAnnotationEvaluatorsResponse) } -var fieldIDToName_TraceServiceUpdateViewResult = map[int16]string{ +var fieldIDToName_TraceServiceListAnnotationEvaluatorsResult = map[int16]string{ 0: "success", } -func (p *TraceServiceUpdateViewResult) IsSetSuccess() bool { +func (p *TraceServiceListAnnotationEvaluatorsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceUpdateViewResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -14179,7 +24777,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14189,8 +24787,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateViewResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewUpdateViewResponse() +func (p *TraceServiceListAnnotationEvaluatorsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListAnnotationEvaluatorsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -14198,9 +24796,9 @@ func (p *TraceServiceUpdateViewResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceUpdateViewResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateView_result"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotationEvaluators_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14226,7 +24824,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateViewResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -14245,15 +24843,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceUpdateViewResult) String() string { +func (p *TraceServiceListAnnotationEvaluatorsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateViewResult(%+v)", *p) + return fmt.Sprintf("TraceServiceListAnnotationEvaluatorsResult(%+v)", *p) } -func (p *TraceServiceUpdateViewResult) DeepEqual(ano *TraceServiceUpdateViewResult) bool { +func (p *TraceServiceListAnnotationEvaluatorsResult) DeepEqual(ano *TraceServiceListAnnotationEvaluatorsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -14265,7 +24863,7 @@ func (p *TraceServiceUpdateViewResult) DeepEqual(ano *TraceServiceUpdateViewResu return true } -func (p *TraceServiceUpdateViewResult) Field0DeepEqual(src *UpdateViewResponse) bool { +func (p *TraceServiceListAnnotationEvaluatorsResult) Field0DeepEqual(src *ListAnnotationEvaluatorsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -14273,41 +24871,41 @@ func (p *TraceServiceUpdateViewResult) Field0DeepEqual(src *UpdateViewResponse) return true } -type TraceServiceDeleteViewArgs struct { - Req *DeleteViewRequest `thrift:"req,1" frugal:"1,default,DeleteViewRequest"` +type TraceServiceExtractSpanInfoArgs struct { + Req *ExtractSpanInfoRequest `thrift:"req,1" frugal:"1,default,ExtractSpanInfoRequest"` } -func NewTraceServiceDeleteViewArgs() *TraceServiceDeleteViewArgs { - return &TraceServiceDeleteViewArgs{} +func NewTraceServiceExtractSpanInfoArgs() *TraceServiceExtractSpanInfoArgs { + return &TraceServiceExtractSpanInfoArgs{} } -func (p *TraceServiceDeleteViewArgs) InitDefault() { +func (p *TraceServiceExtractSpanInfoArgs) InitDefault() { } -var TraceServiceDeleteViewArgs_Req_DEFAULT *DeleteViewRequest +var TraceServiceExtractSpanInfoArgs_Req_DEFAULT *ExtractSpanInfoRequest -func (p *TraceServiceDeleteViewArgs) GetReq() (v *DeleteViewRequest) { +func (p *TraceServiceExtractSpanInfoArgs) GetReq() (v *ExtractSpanInfoRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceDeleteViewArgs_Req_DEFAULT + return TraceServiceExtractSpanInfoArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceDeleteViewArgs) SetReq(val *DeleteViewRequest) { +func (p *TraceServiceExtractSpanInfoArgs) SetReq(val *ExtractSpanInfoRequest) { p.Req = val } -var fieldIDToName_TraceServiceDeleteViewArgs = map[int16]string{ +var fieldIDToName_TraceServiceExtractSpanInfoArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceDeleteViewArgs) IsSetReq() bool { +func (p *TraceServiceExtractSpanInfoArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceDeleteViewArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -14352,7 +24950,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14361,9 +24959,9 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } - -func (p *TraceServiceDeleteViewArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewDeleteViewRequest() + +func (p *TraceServiceExtractSpanInfoArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewExtractSpanInfoRequest() if err := _field.Read(iprot); err != nil { return err } @@ -14371,9 +24969,9 @@ func (p *TraceServiceDeleteViewArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceDeleteViewArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteView_args"); err != nil { + if err = oprot.WriteStructBegin("ExtractSpanInfo_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14399,7 +24997,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteViewArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -14416,15 +25014,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceDeleteViewArgs) String() string { +func (p *TraceServiceExtractSpanInfoArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteViewArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceExtractSpanInfoArgs(%+v)", *p) } -func (p *TraceServiceDeleteViewArgs) DeepEqual(ano *TraceServiceDeleteViewArgs) bool { +func (p *TraceServiceExtractSpanInfoArgs) DeepEqual(ano *TraceServiceExtractSpanInfoArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -14436,7 +25034,7 @@ func (p *TraceServiceDeleteViewArgs) DeepEqual(ano *TraceServiceDeleteViewArgs) return true } -func (p *TraceServiceDeleteViewArgs) Field1DeepEqual(src *DeleteViewRequest) bool { +func (p *TraceServiceExtractSpanInfoArgs) Field1DeepEqual(src *ExtractSpanInfoRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -14444,41 +25042,41 @@ func (p *TraceServiceDeleteViewArgs) Field1DeepEqual(src *DeleteViewRequest) boo return true } -type TraceServiceDeleteViewResult struct { - Success *DeleteViewResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteViewResponse"` +type TraceServiceExtractSpanInfoResult struct { + Success *ExtractSpanInfoResponse `thrift:"success,0,optional" frugal:"0,optional,ExtractSpanInfoResponse"` } -func NewTraceServiceDeleteViewResult() *TraceServiceDeleteViewResult { - return &TraceServiceDeleteViewResult{} +func NewTraceServiceExtractSpanInfoResult() *TraceServiceExtractSpanInfoResult { + return &TraceServiceExtractSpanInfoResult{} } -func (p *TraceServiceDeleteViewResult) InitDefault() { +func (p *TraceServiceExtractSpanInfoResult) InitDefault() { } -var TraceServiceDeleteViewResult_Success_DEFAULT *DeleteViewResponse +var TraceServiceExtractSpanInfoResult_Success_DEFAULT *ExtractSpanInfoResponse -func (p *TraceServiceDeleteViewResult) GetSuccess() (v *DeleteViewResponse) { +func (p *TraceServiceExtractSpanInfoResult) GetSuccess() (v *ExtractSpanInfoResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceDeleteViewResult_Success_DEFAULT + return TraceServiceExtractSpanInfoResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceDeleteViewResult) SetSuccess(x interface{}) { - p.Success = x.(*DeleteViewResponse) +func (p *TraceServiceExtractSpanInfoResult) SetSuccess(x interface{}) { + p.Success = x.(*ExtractSpanInfoResponse) } -var fieldIDToName_TraceServiceDeleteViewResult = map[int16]string{ +var fieldIDToName_TraceServiceExtractSpanInfoResult = map[int16]string{ 0: "success", } -func (p *TraceServiceDeleteViewResult) IsSetSuccess() bool { +func (p *TraceServiceExtractSpanInfoResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceDeleteViewResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -14523,7 +25121,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14533,8 +25131,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteViewResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewDeleteViewResponse() +func (p *TraceServiceExtractSpanInfoResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewExtractSpanInfoResponse() if err := _field.Read(iprot); err != nil { return err } @@ -14542,9 +25140,9 @@ func (p *TraceServiceDeleteViewResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceDeleteViewResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteView_result"); err != nil { + if err = oprot.WriteStructBegin("ExtractSpanInfo_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14570,7 +25168,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteViewResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -14589,15 +25187,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceDeleteViewResult) String() string { +func (p *TraceServiceExtractSpanInfoResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteViewResult(%+v)", *p) + return fmt.Sprintf("TraceServiceExtractSpanInfoResult(%+v)", *p) } -func (p *TraceServiceDeleteViewResult) DeepEqual(ano *TraceServiceDeleteViewResult) bool { +func (p *TraceServiceExtractSpanInfoResult) DeepEqual(ano *TraceServiceExtractSpanInfoResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -14609,7 +25207,7 @@ func (p *TraceServiceDeleteViewResult) DeepEqual(ano *TraceServiceDeleteViewResu return true } -func (p *TraceServiceDeleteViewResult) Field0DeepEqual(src *DeleteViewResponse) bool { +func (p *TraceServiceExtractSpanInfoResult) Field0DeepEqual(src *ExtractSpanInfoResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -14617,41 +25215,41 @@ func (p *TraceServiceDeleteViewResult) Field0DeepEqual(src *DeleteViewResponse) return true } -type TraceServiceListViewsArgs struct { - Req *ListViewsRequest `thrift:"req,1" frugal:"1,default,ListViewsRequest"` +type TraceServiceCheckTaskNameArgs struct { + Req *CheckTaskNameRequest `thrift:"req,1" frugal:"1,default,CheckTaskNameRequest"` } -func NewTraceServiceListViewsArgs() *TraceServiceListViewsArgs { - return &TraceServiceListViewsArgs{} +func NewTraceServiceCheckTaskNameArgs() *TraceServiceCheckTaskNameArgs { + return &TraceServiceCheckTaskNameArgs{} } -func (p *TraceServiceListViewsArgs) InitDefault() { +func (p *TraceServiceCheckTaskNameArgs) InitDefault() { } -var TraceServiceListViewsArgs_Req_DEFAULT *ListViewsRequest +var TraceServiceCheckTaskNameArgs_Req_DEFAULT *CheckTaskNameRequest -func (p *TraceServiceListViewsArgs) GetReq() (v *ListViewsRequest) { +func (p *TraceServiceCheckTaskNameArgs) GetReq() (v *CheckTaskNameRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceListViewsArgs_Req_DEFAULT + return TraceServiceCheckTaskNameArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceListViewsArgs) SetReq(val *ListViewsRequest) { +func (p *TraceServiceCheckTaskNameArgs) SetReq(val *CheckTaskNameRequest) { p.Req = val } -var fieldIDToName_TraceServiceListViewsArgs = map[int16]string{ +var fieldIDToName_TraceServiceCheckTaskNameArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceListViewsArgs) IsSetReq() bool { +func (p *TraceServiceCheckTaskNameArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceListViewsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCheckTaskNameArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -14696,7 +25294,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCheckTaskNameArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14706,8 +25304,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListViewsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListViewsRequest() +func (p *TraceServiceCheckTaskNameArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCheckTaskNameRequest() if err := _field.Read(iprot); err != nil { return err } @@ -14715,9 +25313,9 @@ func (p *TraceServiceListViewsArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListViewsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCheckTaskNameArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListViews_args"); err != nil { + if err = oprot.WriteStructBegin("CheckTaskName_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14743,7 +25341,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListViewsArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCheckTaskNameArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -14760,15 +25358,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceListViewsArgs) String() string { +func (p *TraceServiceCheckTaskNameArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListViewsArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceCheckTaskNameArgs(%+v)", *p) } -func (p *TraceServiceListViewsArgs) DeepEqual(ano *TraceServiceListViewsArgs) bool { +func (p *TraceServiceCheckTaskNameArgs) DeepEqual(ano *TraceServiceCheckTaskNameArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -14780,7 +25378,7 @@ func (p *TraceServiceListViewsArgs) DeepEqual(ano *TraceServiceListViewsArgs) bo return true } -func (p *TraceServiceListViewsArgs) Field1DeepEqual(src *ListViewsRequest) bool { +func (p *TraceServiceCheckTaskNameArgs) Field1DeepEqual(src *CheckTaskNameRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -14788,41 +25386,41 @@ func (p *TraceServiceListViewsArgs) Field1DeepEqual(src *ListViewsRequest) bool return true } -type TraceServiceListViewsResult struct { - Success *ListViewsResponse `thrift:"success,0,optional" frugal:"0,optional,ListViewsResponse"` +type TraceServiceCheckTaskNameResult struct { + Success *CheckTaskNameResponse `thrift:"success,0,optional" frugal:"0,optional,CheckTaskNameResponse"` } -func NewTraceServiceListViewsResult() *TraceServiceListViewsResult { - return &TraceServiceListViewsResult{} +func NewTraceServiceCheckTaskNameResult() *TraceServiceCheckTaskNameResult { + return &TraceServiceCheckTaskNameResult{} } -func (p *TraceServiceListViewsResult) InitDefault() { +func (p *TraceServiceCheckTaskNameResult) InitDefault() { } -var TraceServiceListViewsResult_Success_DEFAULT *ListViewsResponse +var TraceServiceCheckTaskNameResult_Success_DEFAULT *CheckTaskNameResponse -func (p *TraceServiceListViewsResult) GetSuccess() (v *ListViewsResponse) { +func (p *TraceServiceCheckTaskNameResult) GetSuccess() (v *CheckTaskNameResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceListViewsResult_Success_DEFAULT + return TraceServiceCheckTaskNameResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceListViewsResult) SetSuccess(x interface{}) { - p.Success = x.(*ListViewsResponse) +func (p *TraceServiceCheckTaskNameResult) SetSuccess(x interface{}) { + p.Success = x.(*CheckTaskNameResponse) } -var fieldIDToName_TraceServiceListViewsResult = map[int16]string{ +var fieldIDToName_TraceServiceCheckTaskNameResult = map[int16]string{ 0: "success", } -func (p *TraceServiceListViewsResult) IsSetSuccess() bool { +func (p *TraceServiceCheckTaskNameResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceListViewsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCheckTaskNameResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -14867,7 +25465,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCheckTaskNameResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14877,8 +25475,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListViewsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListViewsResponse() +func (p *TraceServiceCheckTaskNameResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCheckTaskNameResponse() if err := _field.Read(iprot); err != nil { return err } @@ -14886,9 +25484,9 @@ func (p *TraceServiceListViewsResult) ReadField0(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListViewsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCheckTaskNameResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListViews_result"); err != nil { + if err = oprot.WriteStructBegin("CheckTaskName_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14914,7 +25512,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListViewsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCheckTaskNameResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -14933,15 +25531,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceListViewsResult) String() string { +func (p *TraceServiceCheckTaskNameResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListViewsResult(%+v)", *p) + return fmt.Sprintf("TraceServiceCheckTaskNameResult(%+v)", *p) } -func (p *TraceServiceListViewsResult) DeepEqual(ano *TraceServiceListViewsResult) bool { +func (p *TraceServiceCheckTaskNameResult) DeepEqual(ano *TraceServiceCheckTaskNameResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -14953,7 +25551,7 @@ func (p *TraceServiceListViewsResult) DeepEqual(ano *TraceServiceListViewsResult return true } -func (p *TraceServiceListViewsResult) Field0DeepEqual(src *ListViewsResponse) bool { +func (p *TraceServiceCheckTaskNameResult) Field0DeepEqual(src *CheckTaskNameResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -14961,41 +25559,41 @@ func (p *TraceServiceListViewsResult) Field0DeepEqual(src *ListViewsResponse) bo return true } -type TraceServiceCreateManualAnnotationArgs struct { - Req *CreateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,CreateManualAnnotationRequest"` +type TraceServiceCreateTaskArgs struct { + Req *CreateTaskRequest `thrift:"req,1" frugal:"1,default,CreateTaskRequest"` } -func NewTraceServiceCreateManualAnnotationArgs() *TraceServiceCreateManualAnnotationArgs { - return &TraceServiceCreateManualAnnotationArgs{} +func NewTraceServiceCreateTaskArgs() *TraceServiceCreateTaskArgs { + return &TraceServiceCreateTaskArgs{} } -func (p *TraceServiceCreateManualAnnotationArgs) InitDefault() { +func (p *TraceServiceCreateTaskArgs) InitDefault() { } -var TraceServiceCreateManualAnnotationArgs_Req_DEFAULT *CreateManualAnnotationRequest +var TraceServiceCreateTaskArgs_Req_DEFAULT *CreateTaskRequest -func (p *TraceServiceCreateManualAnnotationArgs) GetReq() (v *CreateManualAnnotationRequest) { +func (p *TraceServiceCreateTaskArgs) GetReq() (v *CreateTaskRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceCreateManualAnnotationArgs_Req_DEFAULT + return TraceServiceCreateTaskArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceCreateManualAnnotationArgs) SetReq(val *CreateManualAnnotationRequest) { +func (p *TraceServiceCreateTaskArgs) SetReq(val *CreateTaskRequest) { p.Req = val } -var fieldIDToName_TraceServiceCreateManualAnnotationArgs = map[int16]string{ +var fieldIDToName_TraceServiceCreateTaskArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceCreateManualAnnotationArgs) IsSetReq() bool { +func (p *TraceServiceCreateTaskArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceCreateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateTaskArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15040,7 +25638,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateTaskArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15050,8 +25648,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewCreateManualAnnotationRequest() +func (p *TraceServiceCreateTaskArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCreateTaskRequest() if err := _field.Read(iprot); err != nil { return err } @@ -15059,9 +25657,9 @@ func (p *TraceServiceCreateManualAnnotationArgs) ReadField1(iprot thrift.TProtoc return nil } -func (p *TraceServiceCreateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateTaskArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateManualAnnotation_args"); err != nil { + if err = oprot.WriteStructBegin("CreateTask_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15087,7 +25685,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateTaskArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -15104,15 +25702,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationArgs) String() string { +func (p *TraceServiceCreateTaskArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateManualAnnotationArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateTaskArgs(%+v)", *p) } -func (p *TraceServiceCreateManualAnnotationArgs) DeepEqual(ano *TraceServiceCreateManualAnnotationArgs) bool { +func (p *TraceServiceCreateTaskArgs) DeepEqual(ano *TraceServiceCreateTaskArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15124,7 +25722,7 @@ func (p *TraceServiceCreateManualAnnotationArgs) DeepEqual(ano *TraceServiceCrea return true } -func (p *TraceServiceCreateManualAnnotationArgs) Field1DeepEqual(src *CreateManualAnnotationRequest) bool { +func (p *TraceServiceCreateTaskArgs) Field1DeepEqual(src *CreateTaskRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -15132,41 +25730,41 @@ func (p *TraceServiceCreateManualAnnotationArgs) Field1DeepEqual(src *CreateManu return true } -type TraceServiceCreateManualAnnotationResult struct { - Success *CreateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,CreateManualAnnotationResponse"` +type TraceServiceCreateTaskResult struct { + Success *CreateTaskResponse `thrift:"success,0,optional" frugal:"0,optional,CreateTaskResponse"` } -func NewTraceServiceCreateManualAnnotationResult() *TraceServiceCreateManualAnnotationResult { - return &TraceServiceCreateManualAnnotationResult{} +func NewTraceServiceCreateTaskResult() *TraceServiceCreateTaskResult { + return &TraceServiceCreateTaskResult{} } -func (p *TraceServiceCreateManualAnnotationResult) InitDefault() { +func (p *TraceServiceCreateTaskResult) InitDefault() { } -var TraceServiceCreateManualAnnotationResult_Success_DEFAULT *CreateManualAnnotationResponse +var TraceServiceCreateTaskResult_Success_DEFAULT *CreateTaskResponse -func (p *TraceServiceCreateManualAnnotationResult) GetSuccess() (v *CreateManualAnnotationResponse) { +func (p *TraceServiceCreateTaskResult) GetSuccess() (v *CreateTaskResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceCreateManualAnnotationResult_Success_DEFAULT + return TraceServiceCreateTaskResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceCreateManualAnnotationResult) SetSuccess(x interface{}) { - p.Success = x.(*CreateManualAnnotationResponse) +func (p *TraceServiceCreateTaskResult) SetSuccess(x interface{}) { + p.Success = x.(*CreateTaskResponse) } -var fieldIDToName_TraceServiceCreateManualAnnotationResult = map[int16]string{ +var fieldIDToName_TraceServiceCreateTaskResult = map[int16]string{ 0: "success", } -func (p *TraceServiceCreateManualAnnotationResult) IsSetSuccess() bool { +func (p *TraceServiceCreateTaskResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceCreateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateTaskResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15211,7 +25809,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateTaskResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15221,8 +25819,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewCreateManualAnnotationResponse() +func (p *TraceServiceCreateTaskResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCreateTaskResponse() if err := _field.Read(iprot); err != nil { return err } @@ -15230,9 +25828,9 @@ func (p *TraceServiceCreateManualAnnotationResult) ReadField0(iprot thrift.TProt return nil } -func (p *TraceServiceCreateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateTaskResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateManualAnnotation_result"); err != nil { + if err = oprot.WriteStructBegin("CreateTask_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15258,7 +25856,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateTaskResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -15277,15 +25875,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationResult) String() string { +func (p *TraceServiceCreateTaskResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateManualAnnotationResult(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateTaskResult(%+v)", *p) } -func (p *TraceServiceCreateManualAnnotationResult) DeepEqual(ano *TraceServiceCreateManualAnnotationResult) bool { +func (p *TraceServiceCreateTaskResult) DeepEqual(ano *TraceServiceCreateTaskResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15297,7 +25895,7 @@ func (p *TraceServiceCreateManualAnnotationResult) DeepEqual(ano *TraceServiceCr return true } -func (p *TraceServiceCreateManualAnnotationResult) Field0DeepEqual(src *CreateManualAnnotationResponse) bool { +func (p *TraceServiceCreateTaskResult) Field0DeepEqual(src *CreateTaskResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -15305,41 +25903,41 @@ func (p *TraceServiceCreateManualAnnotationResult) Field0DeepEqual(src *CreateMa return true } -type TraceServiceUpdateManualAnnotationArgs struct { - Req *UpdateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,UpdateManualAnnotationRequest"` +type TraceServiceUpdateTaskArgs struct { + Req *UpdateTaskRequest `thrift:"req,1" frugal:"1,default,UpdateTaskRequest"` } -func NewTraceServiceUpdateManualAnnotationArgs() *TraceServiceUpdateManualAnnotationArgs { - return &TraceServiceUpdateManualAnnotationArgs{} +func NewTraceServiceUpdateTaskArgs() *TraceServiceUpdateTaskArgs { + return &TraceServiceUpdateTaskArgs{} } -func (p *TraceServiceUpdateManualAnnotationArgs) InitDefault() { +func (p *TraceServiceUpdateTaskArgs) InitDefault() { } -var TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT *UpdateManualAnnotationRequest +var TraceServiceUpdateTaskArgs_Req_DEFAULT *UpdateTaskRequest -func (p *TraceServiceUpdateManualAnnotationArgs) GetReq() (v *UpdateManualAnnotationRequest) { +func (p *TraceServiceUpdateTaskArgs) GetReq() (v *UpdateTaskRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT + return TraceServiceUpdateTaskArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceUpdateManualAnnotationArgs) SetReq(val *UpdateManualAnnotationRequest) { +func (p *TraceServiceUpdateTaskArgs) SetReq(val *UpdateTaskRequest) { p.Req = val } -var fieldIDToName_TraceServiceUpdateManualAnnotationArgs = map[int16]string{ +var fieldIDToName_TraceServiceUpdateTaskArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceUpdateManualAnnotationArgs) IsSetReq() bool { +func (p *TraceServiceUpdateTaskArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceUpdateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateTaskArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15384,7 +25982,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateTaskArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15394,8 +25992,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewUpdateManualAnnotationRequest() +func (p *TraceServiceUpdateTaskArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewUpdateTaskRequest() if err := _field.Read(iprot); err != nil { return err } @@ -15403,9 +26001,9 @@ func (p *TraceServiceUpdateManualAnnotationArgs) ReadField1(iprot thrift.TProtoc return nil } -func (p *TraceServiceUpdateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateTaskArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateManualAnnotation_args"); err != nil { + if err = oprot.WriteStructBegin("UpdateTask_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15431,7 +26029,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateTaskArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -15448,15 +26046,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) String() string { +func (p *TraceServiceUpdateTaskArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateManualAnnotationArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateTaskArgs(%+v)", *p) } -func (p *TraceServiceUpdateManualAnnotationArgs) DeepEqual(ano *TraceServiceUpdateManualAnnotationArgs) bool { +func (p *TraceServiceUpdateTaskArgs) DeepEqual(ano *TraceServiceUpdateTaskArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15468,7 +26066,7 @@ func (p *TraceServiceUpdateManualAnnotationArgs) DeepEqual(ano *TraceServiceUpda return true } -func (p *TraceServiceUpdateManualAnnotationArgs) Field1DeepEqual(src *UpdateManualAnnotationRequest) bool { +func (p *TraceServiceUpdateTaskArgs) Field1DeepEqual(src *UpdateTaskRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -15476,41 +26074,41 @@ func (p *TraceServiceUpdateManualAnnotationArgs) Field1DeepEqual(src *UpdateManu return true } -type TraceServiceUpdateManualAnnotationResult struct { - Success *UpdateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateManualAnnotationResponse"` +type TraceServiceUpdateTaskResult struct { + Success *UpdateTaskResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateTaskResponse"` } -func NewTraceServiceUpdateManualAnnotationResult() *TraceServiceUpdateManualAnnotationResult { - return &TraceServiceUpdateManualAnnotationResult{} +func NewTraceServiceUpdateTaskResult() *TraceServiceUpdateTaskResult { + return &TraceServiceUpdateTaskResult{} } -func (p *TraceServiceUpdateManualAnnotationResult) InitDefault() { +func (p *TraceServiceUpdateTaskResult) InitDefault() { } -var TraceServiceUpdateManualAnnotationResult_Success_DEFAULT *UpdateManualAnnotationResponse +var TraceServiceUpdateTaskResult_Success_DEFAULT *UpdateTaskResponse -func (p *TraceServiceUpdateManualAnnotationResult) GetSuccess() (v *UpdateManualAnnotationResponse) { +func (p *TraceServiceUpdateTaskResult) GetSuccess() (v *UpdateTaskResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceUpdateManualAnnotationResult_Success_DEFAULT + return TraceServiceUpdateTaskResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceUpdateManualAnnotationResult) SetSuccess(x interface{}) { - p.Success = x.(*UpdateManualAnnotationResponse) +func (p *TraceServiceUpdateTaskResult) SetSuccess(x interface{}) { + p.Success = x.(*UpdateTaskResponse) } -var fieldIDToName_TraceServiceUpdateManualAnnotationResult = map[int16]string{ +var fieldIDToName_TraceServiceUpdateTaskResult = map[int16]string{ 0: "success", } -func (p *TraceServiceUpdateManualAnnotationResult) IsSetSuccess() bool { +func (p *TraceServiceUpdateTaskResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceUpdateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateTaskResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15555,7 +26153,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateTaskResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15565,8 +26163,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewUpdateManualAnnotationResponse() +func (p *TraceServiceUpdateTaskResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewUpdateTaskResponse() if err := _field.Read(iprot); err != nil { return err } @@ -15574,9 +26172,9 @@ func (p *TraceServiceUpdateManualAnnotationResult) ReadField0(iprot thrift.TProt return nil } -func (p *TraceServiceUpdateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateTaskResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateManualAnnotation_result"); err != nil { + if err = oprot.WriteStructBegin("UpdateTask_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15602,7 +26200,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateTaskResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -15621,15 +26219,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationResult) String() string { +func (p *TraceServiceUpdateTaskResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateManualAnnotationResult(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateTaskResult(%+v)", *p) } -func (p *TraceServiceUpdateManualAnnotationResult) DeepEqual(ano *TraceServiceUpdateManualAnnotationResult) bool { +func (p *TraceServiceUpdateTaskResult) DeepEqual(ano *TraceServiceUpdateTaskResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15641,7 +26239,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) DeepEqual(ano *TraceServiceUp return true } -func (p *TraceServiceUpdateManualAnnotationResult) Field0DeepEqual(src *UpdateManualAnnotationResponse) bool { +func (p *TraceServiceUpdateTaskResult) Field0DeepEqual(src *UpdateTaskResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -15649,41 +26247,41 @@ func (p *TraceServiceUpdateManualAnnotationResult) Field0DeepEqual(src *UpdateMa return true } -type TraceServiceDeleteManualAnnotationArgs struct { - Req *DeleteManualAnnotationRequest `thrift:"req,1" frugal:"1,default,DeleteManualAnnotationRequest"` +type TraceServiceListTasksArgs struct { + Req *ListTasksRequest `thrift:"req,1" frugal:"1,default,ListTasksRequest"` } -func NewTraceServiceDeleteManualAnnotationArgs() *TraceServiceDeleteManualAnnotationArgs { - return &TraceServiceDeleteManualAnnotationArgs{} +func NewTraceServiceListTasksArgs() *TraceServiceListTasksArgs { + return &TraceServiceListTasksArgs{} } -func (p *TraceServiceDeleteManualAnnotationArgs) InitDefault() { +func (p *TraceServiceListTasksArgs) InitDefault() { } -var TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT *DeleteManualAnnotationRequest +var TraceServiceListTasksArgs_Req_DEFAULT *ListTasksRequest -func (p *TraceServiceDeleteManualAnnotationArgs) GetReq() (v *DeleteManualAnnotationRequest) { +func (p *TraceServiceListTasksArgs) GetReq() (v *ListTasksRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT + return TraceServiceListTasksArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceDeleteManualAnnotationArgs) SetReq(val *DeleteManualAnnotationRequest) { +func (p *TraceServiceListTasksArgs) SetReq(val *ListTasksRequest) { p.Req = val } -var fieldIDToName_TraceServiceDeleteManualAnnotationArgs = map[int16]string{ +var fieldIDToName_TraceServiceListTasksArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceDeleteManualAnnotationArgs) IsSetReq() bool { +func (p *TraceServiceListTasksArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceDeleteManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListTasksArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15728,7 +26326,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListTasksArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15738,8 +26336,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewDeleteManualAnnotationRequest() +func (p *TraceServiceListTasksArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListTasksRequest() if err := _field.Read(iprot); err != nil { return err } @@ -15747,9 +26345,9 @@ func (p *TraceServiceDeleteManualAnnotationArgs) ReadField1(iprot thrift.TProtoc return nil } -func (p *TraceServiceDeleteManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListTasksArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteManualAnnotation_args"); err != nil { + if err = oprot.WriteStructBegin("ListTasks_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15775,7 +26373,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListTasksArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -15792,15 +26390,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) String() string { +func (p *TraceServiceListTasksArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteManualAnnotationArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceListTasksArgs(%+v)", *p) } -func (p *TraceServiceDeleteManualAnnotationArgs) DeepEqual(ano *TraceServiceDeleteManualAnnotationArgs) bool { +func (p *TraceServiceListTasksArgs) DeepEqual(ano *TraceServiceListTasksArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15812,7 +26410,7 @@ func (p *TraceServiceDeleteManualAnnotationArgs) DeepEqual(ano *TraceServiceDele return true } -func (p *TraceServiceDeleteManualAnnotationArgs) Field1DeepEqual(src *DeleteManualAnnotationRequest) bool { +func (p *TraceServiceListTasksArgs) Field1DeepEqual(src *ListTasksRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -15820,41 +26418,41 @@ func (p *TraceServiceDeleteManualAnnotationArgs) Field1DeepEqual(src *DeleteManu return true } -type TraceServiceDeleteManualAnnotationResult struct { - Success *DeleteManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteManualAnnotationResponse"` +type TraceServiceListTasksResult struct { + Success *ListTasksResponse `thrift:"success,0,optional" frugal:"0,optional,ListTasksResponse"` } -func NewTraceServiceDeleteManualAnnotationResult() *TraceServiceDeleteManualAnnotationResult { - return &TraceServiceDeleteManualAnnotationResult{} +func NewTraceServiceListTasksResult() *TraceServiceListTasksResult { + return &TraceServiceListTasksResult{} } -func (p *TraceServiceDeleteManualAnnotationResult) InitDefault() { +func (p *TraceServiceListTasksResult) InitDefault() { } -var TraceServiceDeleteManualAnnotationResult_Success_DEFAULT *DeleteManualAnnotationResponse +var TraceServiceListTasksResult_Success_DEFAULT *ListTasksResponse -func (p *TraceServiceDeleteManualAnnotationResult) GetSuccess() (v *DeleteManualAnnotationResponse) { +func (p *TraceServiceListTasksResult) GetSuccess() (v *ListTasksResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceDeleteManualAnnotationResult_Success_DEFAULT + return TraceServiceListTasksResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceDeleteManualAnnotationResult) SetSuccess(x interface{}) { - p.Success = x.(*DeleteManualAnnotationResponse) +func (p *TraceServiceListTasksResult) SetSuccess(x interface{}) { + p.Success = x.(*ListTasksResponse) } -var fieldIDToName_TraceServiceDeleteManualAnnotationResult = map[int16]string{ +var fieldIDToName_TraceServiceListTasksResult = map[int16]string{ 0: "success", } -func (p *TraceServiceDeleteManualAnnotationResult) IsSetSuccess() bool { +func (p *TraceServiceListTasksResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceDeleteManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListTasksResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15899,7 +26497,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListTasksResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15909,8 +26507,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewDeleteManualAnnotationResponse() +func (p *TraceServiceListTasksResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListTasksResponse() if err := _field.Read(iprot); err != nil { return err } @@ -15918,9 +26516,9 @@ func (p *TraceServiceDeleteManualAnnotationResult) ReadField0(iprot thrift.TProt return nil } -func (p *TraceServiceDeleteManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListTasksResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteManualAnnotation_result"); err != nil { + if err = oprot.WriteStructBegin("ListTasks_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15946,7 +26544,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListTasksResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -15965,15 +26563,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationResult) String() string { +func (p *TraceServiceListTasksResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteManualAnnotationResult(%+v)", *p) + return fmt.Sprintf("TraceServiceListTasksResult(%+v)", *p) } -func (p *TraceServiceDeleteManualAnnotationResult) DeepEqual(ano *TraceServiceDeleteManualAnnotationResult) bool { +func (p *TraceServiceListTasksResult) DeepEqual(ano *TraceServiceListTasksResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15985,7 +26583,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) DeepEqual(ano *TraceServiceDe return true } -func (p *TraceServiceDeleteManualAnnotationResult) Field0DeepEqual(src *DeleteManualAnnotationResponse) bool { +func (p *TraceServiceListTasksResult) Field0DeepEqual(src *ListTasksResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -15993,41 +26591,41 @@ func (p *TraceServiceDeleteManualAnnotationResult) Field0DeepEqual(src *DeleteMa return true } -type TraceServiceListAnnotationsArgs struct { - Req *ListAnnotationsRequest `thrift:"req,1" frugal:"1,default,ListAnnotationsRequest"` +type TraceServiceGetTaskArgs struct { + Req *GetTaskRequest `thrift:"req,1" frugal:"1,default,GetTaskRequest"` } -func NewTraceServiceListAnnotationsArgs() *TraceServiceListAnnotationsArgs { - return &TraceServiceListAnnotationsArgs{} +func NewTraceServiceGetTaskArgs() *TraceServiceGetTaskArgs { + return &TraceServiceGetTaskArgs{} } -func (p *TraceServiceListAnnotationsArgs) InitDefault() { +func (p *TraceServiceGetTaskArgs) InitDefault() { } -var TraceServiceListAnnotationsArgs_Req_DEFAULT *ListAnnotationsRequest +var TraceServiceGetTaskArgs_Req_DEFAULT *GetTaskRequest -func (p *TraceServiceListAnnotationsArgs) GetReq() (v *ListAnnotationsRequest) { +func (p *TraceServiceGetTaskArgs) GetReq() (v *GetTaskRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceListAnnotationsArgs_Req_DEFAULT + return TraceServiceGetTaskArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceListAnnotationsArgs) SetReq(val *ListAnnotationsRequest) { +func (p *TraceServiceGetTaskArgs) SetReq(val *GetTaskRequest) { p.Req = val } -var fieldIDToName_TraceServiceListAnnotationsArgs = map[int16]string{ +var fieldIDToName_TraceServiceGetTaskArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceListAnnotationsArgs) IsSetReq() bool { +func (p *TraceServiceGetTaskArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceListAnnotationsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTaskArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16072,7 +26670,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTaskArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16082,8 +26680,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListAnnotationsRequest() +func (p *TraceServiceGetTaskArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewGetTaskRequest() if err := _field.Read(iprot); err != nil { return err } @@ -16091,9 +26689,9 @@ func (p *TraceServiceListAnnotationsArgs) ReadField1(iprot thrift.TProtocol) err return nil } -func (p *TraceServiceListAnnotationsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTaskArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListAnnotations_args"); err != nil { + if err = oprot.WriteStructBegin("GetTask_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16119,7 +26717,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTaskArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -16136,15 +26734,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceListAnnotationsArgs) String() string { +func (p *TraceServiceGetTaskArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListAnnotationsArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceGetTaskArgs(%+v)", *p) } -func (p *TraceServiceListAnnotationsArgs) DeepEqual(ano *TraceServiceListAnnotationsArgs) bool { +func (p *TraceServiceGetTaskArgs) DeepEqual(ano *TraceServiceGetTaskArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16156,7 +26754,7 @@ func (p *TraceServiceListAnnotationsArgs) DeepEqual(ano *TraceServiceListAnnotat return true } -func (p *TraceServiceListAnnotationsArgs) Field1DeepEqual(src *ListAnnotationsRequest) bool { +func (p *TraceServiceGetTaskArgs) Field1DeepEqual(src *GetTaskRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -16164,41 +26762,41 @@ func (p *TraceServiceListAnnotationsArgs) Field1DeepEqual(src *ListAnnotationsRe return true } -type TraceServiceListAnnotationsResult struct { - Success *ListAnnotationsResponse `thrift:"success,0,optional" frugal:"0,optional,ListAnnotationsResponse"` +type TraceServiceGetTaskResult struct { + Success *GetTaskResponse `thrift:"success,0,optional" frugal:"0,optional,GetTaskResponse"` } -func NewTraceServiceListAnnotationsResult() *TraceServiceListAnnotationsResult { - return &TraceServiceListAnnotationsResult{} +func NewTraceServiceGetTaskResult() *TraceServiceGetTaskResult { + return &TraceServiceGetTaskResult{} } -func (p *TraceServiceListAnnotationsResult) InitDefault() { +func (p *TraceServiceGetTaskResult) InitDefault() { } -var TraceServiceListAnnotationsResult_Success_DEFAULT *ListAnnotationsResponse +var TraceServiceGetTaskResult_Success_DEFAULT *GetTaskResponse -func (p *TraceServiceListAnnotationsResult) GetSuccess() (v *ListAnnotationsResponse) { +func (p *TraceServiceGetTaskResult) GetSuccess() (v *GetTaskResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceListAnnotationsResult_Success_DEFAULT + return TraceServiceGetTaskResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceListAnnotationsResult) SetSuccess(x interface{}) { - p.Success = x.(*ListAnnotationsResponse) +func (p *TraceServiceGetTaskResult) SetSuccess(x interface{}) { + p.Success = x.(*GetTaskResponse) } -var fieldIDToName_TraceServiceListAnnotationsResult = map[int16]string{ +var fieldIDToName_TraceServiceGetTaskResult = map[int16]string{ 0: "success", } -func (p *TraceServiceListAnnotationsResult) IsSetSuccess() bool { +func (p *TraceServiceGetTaskResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceListAnnotationsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTaskResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16243,7 +26841,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTaskResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16253,8 +26851,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListAnnotationsResponse() +func (p *TraceServiceGetTaskResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewGetTaskResponse() if err := _field.Read(iprot); err != nil { return err } @@ -16262,9 +26860,9 @@ func (p *TraceServiceListAnnotationsResult) ReadField0(iprot thrift.TProtocol) e return nil } -func (p *TraceServiceListAnnotationsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTaskResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListAnnotations_result"); err != nil { + if err = oprot.WriteStructBegin("GetTask_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16290,7 +26888,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTaskResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -16309,15 +26907,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceListAnnotationsResult) String() string { +func (p *TraceServiceGetTaskResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListAnnotationsResult(%+v)", *p) + return fmt.Sprintf("TraceServiceGetTaskResult(%+v)", *p) } -func (p *TraceServiceListAnnotationsResult) DeepEqual(ano *TraceServiceListAnnotationsResult) bool { +func (p *TraceServiceGetTaskResult) DeepEqual(ano *TraceServiceGetTaskResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16329,7 +26927,7 @@ func (p *TraceServiceListAnnotationsResult) DeepEqual(ano *TraceServiceListAnnot return true } -func (p *TraceServiceListAnnotationsResult) Field0DeepEqual(src *ListAnnotationsResponse) bool { +func (p *TraceServiceGetTaskResult) Field0DeepEqual(src *GetTaskResponse) bool { if !p.Success.DeepEqual(src) { return false diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go index 2cde9484d..fa8feb311 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go @@ -298,3 +298,241 @@ func (p *ListAnnotationsResponse) IsValid() error { } return nil } +func (p *ChangeEvaluatorScoreRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if p.EvaluatorRecordID <= int64(0) { + return fmt.Errorf("field EvaluatorRecordID gt rule failed, current value: %v", p.EvaluatorRecordID) + } + if len(p.SpanID) < int(1) { + return fmt.Errorf("field SpanID min_len rule failed, current value: %d", len(p.SpanID)) + } + if p.StartTime <= int64(0) { + return fmt.Errorf("field StartTime gt rule failed, current value: %v", p.StartTime) + } + if p.Correction != nil { + if err := p.Correction.IsValid(); err != nil { + return fmt.Errorf("field Correction not valid, %w", err) + } + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *ChangeEvaluatorScoreResponse) IsValid() error { + if p.Annotation != nil { + if err := p.Annotation.IsValid(); err != nil { + return fmt.Errorf("field Annotation not valid, %w", err) + } + } + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *AnnotationEvaluator) IsValid() error { + return nil +} +func (p *ListAnnotationEvaluatorsRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *ListAnnotationEvaluatorsResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *ExtractSpanInfoRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if len(p.TraceID) < int(1) { + return fmt.Errorf("field TraceID min_len rule failed, current value: %d", len(p.TraceID)) + } + if len(p.SpanIds) < int(1) { + return fmt.Errorf("field SpanIds MinLen rule failed, current value: %v", p.SpanIds) + } + if len(p.SpanIds) > int(500) { + return fmt.Errorf("field SpanIds MaxLen rule failed, current value: %v", p.SpanIds) + } + if p.StartTime != nil { + if *p.StartTime <= int64(0) { + return fmt.Errorf("field StartTime gt rule failed, current value: %v", *p.StartTime) + } + } + if p.EndTime != nil { + if *p.EndTime <= int64(0) { + return fmt.Errorf("field EndTime gt rule failed, current value: %v", *p.EndTime) + } + } + if len(p.FieldMappings) < int(1) { + return fmt.Errorf("field FieldMappings MinLen rule failed, current value: %v", p.FieldMappings) + } + if len(p.FieldMappings) > int(100) { + return fmt.Errorf("field FieldMappings MaxLen rule failed, current value: %v", p.FieldMappings) + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *FieldData) IsValid() error { + if p.Content != nil { + if err := p.Content.IsValid(); err != nil { + return fmt.Errorf("field Content not valid, %w", err) + } + } + return nil +} +func (p *Content) IsValid() error { + if p.Image != nil { + if err := p.Image.IsValid(); err != nil { + return fmt.Errorf("field Image not valid, %w", err) + } + } + return nil +} +func (p *Image) IsValid() error { + return nil +} +func (p *SpanInfo) IsValid() error { + return nil +} +func (p *ExtractSpanInfoResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *CreateTaskRequest) IsValid() error { + if p.Task != nil { + if err := p.Task.IsValid(); err != nil { + return fmt.Errorf("field Task not valid, %w", err) + } + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *CreateTaskResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *UpdateTaskRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if p.EffectiveTime != nil { + if err := p.EffectiveTime.IsValid(); err != nil { + return fmt.Errorf("field EffectiveTime not valid, %w", err) + } + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *UpdateTaskResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *ListTasksRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if p.TaskFilters != nil { + if err := p.TaskFilters.IsValid(); err != nil { + return fmt.Errorf("field TaskFilters not valid, %w", err) + } + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *ListTasksResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *GetTaskRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *GetTaskResponse) IsValid() error { + if p.Task != nil { + if err := p.Task.IsValid(); err != nil { + return fmt.Errorf("field Task not valid, %w", err) + } + } + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *CheckTaskNameRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *CheckTaskNameResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go index 43f8832fa..958685abb 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go @@ -16,6 +16,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/view" ) @@ -25,6 +26,7 @@ var ( _ = common.KitexUnusedProtection _ = filter.KitexUnusedProtection _ = span.KitexUnusedProtection + _ = task.KitexUnusedProtection _ = view.KitexUnusedProtection ) @@ -8149,6 +8151,5342 @@ func (p *ListAnnotationsResponse) DeepCopy(s interface{}) error { return nil } +func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + var issetEvaluatorRecordID bool = false + var issetSpanID bool = false + var issetStartTime bool = false + var issetCorrection bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorRecordID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetSpanID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetStartTime = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetCorrection = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorRecordID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetSpanID { + fieldId = 3 + goto RequiredFieldNotSetError + } + + if !issetStartTime { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetCorrection { + fieldId = 5 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreRequest[fieldId])) +} + +func (p *ChangeEvaluatorScoreRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *ChangeEvaluatorScoreRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorRecordID = _field + return offset, nil +} + +func (p *ChangeEvaluatorScoreRequest) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.SpanID = _field + return offset, nil +} + +func (p *ChangeEvaluatorScoreRequest) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.StartTime = _field + return offset, nil +} + +func (p *ChangeEvaluatorScoreRequest) FastReadField5(buf []byte) (int, error) { + offset := 0 + _field := annotation.NewCorrection() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Correction = _field + return offset, nil +} + +func (p *ChangeEvaluatorScoreRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *ChangeEvaluatorScoreRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ChangeEvaluatorScoreRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ChangeEvaluatorScoreRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ChangeEvaluatorScoreRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *ChangeEvaluatorScoreRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorRecordID) + return offset +} + +func (p *ChangeEvaluatorScoreRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.SpanID) + return offset +} + +func (p *ChangeEvaluatorScoreRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 4) + offset += thrift.Binary.WriteI64(buf[offset:], p.StartTime) + return offset +} + +func (p *ChangeEvaluatorScoreRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 5) + offset += p.Correction.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *ChangeEvaluatorScoreRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ChangeEvaluatorScoreRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *ChangeEvaluatorScoreRequest) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *ChangeEvaluatorScoreRequest) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.SpanID) + return l +} + +func (p *ChangeEvaluatorScoreRequest) field4Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *ChangeEvaluatorScoreRequest) field5Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Correction.BLength() + return l +} + +func (p *ChangeEvaluatorScoreRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *ChangeEvaluatorScoreRequest) DeepCopy(s interface{}) error { + src, ok := s.(*ChangeEvaluatorScoreRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.WorkspaceID = src.WorkspaceID + + p.EvaluatorRecordID = src.EvaluatorRecordID + + if src.SpanID != "" { + p.SpanID = kutils.StringDeepCopy(src.SpanID) + } + + p.StartTime = src.StartTime + + var _correction *annotation.Correction + if src.Correction != nil { + _correction = &annotation.Correction{} + if err := _correction.DeepCopy(src.Correction); err != nil { + return err + } + } + p.Correction = _correction + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *ChangeEvaluatorScoreResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetAnnotation bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetAnnotation = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetAnnotation { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreResponse[fieldId])) +} + +func (p *ChangeEvaluatorScoreResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := annotation.NewAnnotation() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Annotation = _field + return offset, nil +} + +func (p *ChangeEvaluatorScoreResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *ChangeEvaluatorScoreResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ChangeEvaluatorScoreResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ChangeEvaluatorScoreResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ChangeEvaluatorScoreResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Annotation.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *ChangeEvaluatorScoreResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ChangeEvaluatorScoreResponse) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Annotation.BLength() + return l +} + +func (p *ChangeEvaluatorScoreResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *ChangeEvaluatorScoreResponse) DeepCopy(s interface{}) error { + src, ok := s.(*ChangeEvaluatorScoreResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _annotation *annotation.Annotation + if src.Annotation != nil { + _annotation = &annotation.Annotation{} + if err := _annotation.DeepCopy(src.Annotation); err != nil { + return err + } + } + p.Annotation = _annotation + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *AnnotationEvaluator) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluatorVersionID bool = false + var issetEvaluatorName bool = false + var issetEvaluatorVersion bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorVersionID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorName = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorVersion = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetEvaluatorVersionID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorName { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorVersion { + fieldId = 3 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AnnotationEvaluator[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_AnnotationEvaluator[fieldId])) +} + +func (p *AnnotationEvaluator) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorVersionID = _field + return offset, nil +} + +func (p *AnnotationEvaluator) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorName = _field + return offset, nil +} + +func (p *AnnotationEvaluator) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorVersion = _field + return offset, nil +} + +func (p *AnnotationEvaluator) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *AnnotationEvaluator) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *AnnotationEvaluator) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *AnnotationEvaluator) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorVersionID) + return offset +} + +func (p *AnnotationEvaluator) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.EvaluatorName) + return offset +} + +func (p *AnnotationEvaluator) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.EvaluatorVersion) + return offset +} + +func (p *AnnotationEvaluator) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AnnotationEvaluator) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.EvaluatorName) + return l +} + +func (p *AnnotationEvaluator) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.EvaluatorVersion) + return l +} + +func (p *AnnotationEvaluator) DeepCopy(s interface{}) error { + src, ok := s.(*AnnotationEvaluator) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.EvaluatorVersionID = src.EvaluatorVersionID + + if src.EvaluatorName != "" { + p.EvaluatorName = kutils.StringDeepCopy(src.EvaluatorName) + } + + if src.EvaluatorVersion != "" { + p.EvaluatorVersion = kutils.StringDeepCopy(src.EvaluatorVersion) + } + + return nil +} + +func (p *ListAnnotationEvaluatorsRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId])) +} + +func (p *ListAnnotationEvaluatorsRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *ListAnnotationEvaluatorsRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Name = _field + return offset, nil +} + +func (p *ListAnnotationEvaluatorsRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *ListAnnotationEvaluatorsRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ListAnnotationEvaluatorsRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ListAnnotationEvaluatorsRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ListAnnotationEvaluatorsRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *ListAnnotationEvaluatorsRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + } + return offset +} + +func (p *ListAnnotationEvaluatorsRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ListAnnotationEvaluatorsRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *ListAnnotationEvaluatorsRequest) field2Length() int { + l := 0 + if p.IsSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Name) + } + return l +} + +func (p *ListAnnotationEvaluatorsRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *ListAnnotationEvaluatorsRequest) DeepCopy(s interface{}) error { + src, ok := s.(*ListAnnotationEvaluatorsRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.WorkspaceID = src.WorkspaceID + + if src.Name != nil { + var tmp string + if *src.Name != "" { + tmp = kutils.StringDeepCopy(*src.Name) + } + p.Name = &tmp + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *ListAnnotationEvaluatorsResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluators bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluators = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetEvaluators { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId])) +} + +func (p *ListAnnotationEvaluatorsResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*AnnotationEvaluator, 0, size) + values := make([]AnnotationEvaluator, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.Evaluators = _field + return offset, nil +} + +func (p *ListAnnotationEvaluatorsResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *ListAnnotationEvaluatorsResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ListAnnotationEvaluatorsResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ListAnnotationEvaluatorsResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ListAnnotationEvaluatorsResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.Evaluators { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + return offset +} + +func (p *ListAnnotationEvaluatorsResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ListAnnotationEvaluatorsResponse) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.Evaluators { + _ = v + l += v.BLength() + } + return l +} + +func (p *ListAnnotationEvaluatorsResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *ListAnnotationEvaluatorsResponse) DeepCopy(s interface{}) error { + src, ok := s.(*ListAnnotationEvaluatorsResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Evaluators != nil { + p.Evaluators = make([]*AnnotationEvaluator, 0, len(src.Evaluators)) + for _, elem := range src.Evaluators { + var _elem *AnnotationEvaluator + if elem != nil { + _elem = &AnnotationEvaluator{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.Evaluators = append(p.Evaluators, _elem) + } + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + var issetTraceID bool = false + var issetSpanIds bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTraceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetSpanIds = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 7: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField7(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetTraceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetSpanIds { + fieldId = 3 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ExtractSpanInfoRequest[fieldId])) +} + +func (p *ExtractSpanInfoRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TraceID = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField3(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]string, 0, size) + for i := 0; i < size; i++ { + var _elem string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _elem = v + } + + _field = append(_field, _elem) + } + p.SpanIds = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.StartTime = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField5(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.EndTime = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field *common.PlatformType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.PlatformType = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField7(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*task.FieldMapping, 0, size) + values := make([]task.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldMappings = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ExtractSpanInfoRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField7(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ExtractSpanInfoRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field6Length() + l += p.field7Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ExtractSpanInfoRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TraceID) + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 3) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.SpanIds { + length++ + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, v) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRING, length) + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetStartTime() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 4) + offset += thrift.Binary.WriteI64(buf[offset:], *p.StartTime) + } + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEndTime() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 5) + offset += thrift.Binary.WriteI64(buf[offset:], *p.EndTime) + } + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetPlatformType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 6) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.PlatformType) + } + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFieldMappings() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 7) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldMappings { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ExtractSpanInfoRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *ExtractSpanInfoRequest) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.TraceID) + return l +} + +func (p *ExtractSpanInfoRequest) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.SpanIds { + _ = v + l += thrift.Binary.StringLengthNocopy(v) + } + return l +} + +func (p *ExtractSpanInfoRequest) field4Length() int { + l := 0 + if p.IsSetStartTime() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *ExtractSpanInfoRequest) field5Length() int { + l := 0 + if p.IsSetEndTime() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *ExtractSpanInfoRequest) field6Length() int { + l := 0 + if p.IsSetPlatformType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.PlatformType) + } + return l +} + +func (p *ExtractSpanInfoRequest) field7Length() int { + l := 0 + if p.IsSetFieldMappings() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldMappings { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *ExtractSpanInfoRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *ExtractSpanInfoRequest) DeepCopy(s interface{}) error { + src, ok := s.(*ExtractSpanInfoRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.WorkspaceID = src.WorkspaceID + + if src.TraceID != "" { + p.TraceID = kutils.StringDeepCopy(src.TraceID) + } + + if src.SpanIds != nil { + p.SpanIds = make([]string, 0, len(src.SpanIds)) + for _, elem := range src.SpanIds { + var _elem string + if elem != "" { + _elem = kutils.StringDeepCopy(elem) + } + p.SpanIds = append(p.SpanIds, _elem) + } + } + + if src.StartTime != nil { + tmp := *src.StartTime + p.StartTime = &tmp + } + + if src.EndTime != nil { + tmp := *src.EndTime + p.EndTime = &tmp + } + + if src.PlatformType != nil { + tmp := *src.PlatformType + p.PlatformType = &tmp + } + + if src.FieldMappings != nil { + p.FieldMappings = make([]*task.FieldMapping, 0, len(src.FieldMappings)) + for _, elem := range src.FieldMappings { + var _elem *task.FieldMapping + if elem != nil { + _elem = &task.FieldMapping{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldMappings = append(p.FieldMappings, _elem) + } + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *FieldData) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldData[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *FieldData) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Key = _field + return offset, nil +} + +func (p *FieldData) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Name = _field + return offset, nil +} + +func (p *FieldData) FastReadField3(buf []byte) (int, error) { + offset := 0 + _field := NewContent() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Content = _field + return offset, nil +} + +func (p *FieldData) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *FieldData) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *FieldData) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *FieldData) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetKey() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Key) + } + return offset +} + +func (p *FieldData) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + } + return offset +} + +func (p *FieldData) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetContent() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 3) + offset += p.Content.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *FieldData) field1Length() int { + l := 0 + if p.IsSetKey() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Key) + } + return l +} + +func (p *FieldData) field2Length() int { + l := 0 + if p.IsSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Name) + } + return l +} + +func (p *FieldData) field3Length() int { + l := 0 + if p.IsSetContent() { + l += thrift.Binary.FieldBeginLength() + l += p.Content.BLength() + } + return l +} + +func (p *FieldData) DeepCopy(s interface{}) error { + src, ok := s.(*FieldData) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Key != nil { + var tmp string + if *src.Key != "" { + tmp = kutils.StringDeepCopy(*src.Key) + } + p.Key = &tmp + } + + if src.Name != nil { + var tmp string + if *src.Name != "" { + tmp = kutils.StringDeepCopy(*src.Name) + } + p.Name = &tmp + } + + var _content *Content + if src.Content != nil { + _content = &Content{} + if err := _content.DeepCopy(src.Content); err != nil { + return err + } + } + p.Content = _content + + return nil +} + +func (p *Content) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 10: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField10(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 11: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField11(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 12: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField12(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Content[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *Content) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *ContentType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ContentType = _field + return offset, nil +} + +func (p *Content) FastReadField10(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Text = _field + return offset, nil +} + +func (p *Content) FastReadField11(buf []byte) (int, error) { + offset := 0 + _field := NewImage() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Image = _field + return offset, nil +} + +func (p *Content) FastReadField12(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*Content, 0, size) + values := make([]Content, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.MultiPart = _field + return offset, nil +} + +func (p *Content) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *Content) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField10(buf[offset:], w) + offset += p.fastWriteField11(buf[offset:], w) + offset += p.fastWriteField12(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *Content) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field10Length() + l += p.field11Length() + l += p.field12Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *Content) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetContentType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ContentType) + } + return offset +} + +func (p *Content) fastWriteField10(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetText() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 10) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Text) + } + return offset +} + +func (p *Content) fastWriteField11(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetImage() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 11) + offset += p.Image.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *Content) fastWriteField12(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetMultiPart() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 12) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.MultiPart { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *Content) field1Length() int { + l := 0 + if p.IsSetContentType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.ContentType) + } + return l +} + +func (p *Content) field10Length() int { + l := 0 + if p.IsSetText() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Text) + } + return l +} + +func (p *Content) field11Length() int { + l := 0 + if p.IsSetImage() { + l += thrift.Binary.FieldBeginLength() + l += p.Image.BLength() + } + return l +} + +func (p *Content) field12Length() int { + l := 0 + if p.IsSetMultiPart() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.MultiPart { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *Content) DeepCopy(s interface{}) error { + src, ok := s.(*Content) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.ContentType != nil { + tmp := *src.ContentType + p.ContentType = &tmp + } + + if src.Text != nil { + var tmp string + if *src.Text != "" { + tmp = kutils.StringDeepCopy(*src.Text) + } + p.Text = &tmp + } + + var _image *Image + if src.Image != nil { + _image = &Image{} + if err := _image.DeepCopy(src.Image); err != nil { + return err + } + } + p.Image = _image + + if src.MultiPart != nil { + p.MultiPart = make([]*Content, 0, len(src.MultiPart)) + for _, elem := range src.MultiPart { + var _elem *Content + if elem != nil { + _elem = &Content{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.MultiPart = append(p.MultiPart, _elem) + } + } + + return nil +} + +func (p *Image) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Image[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *Image) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Name = _field + return offset, nil +} + +func (p *Image) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.URL = _field + return offset, nil +} + +func (p *Image) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *Image) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *Image) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *Image) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + } + return offset +} + +func (p *Image) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetURL() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.URL) + } + return offset +} + +func (p *Image) field1Length() int { + l := 0 + if p.IsSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Name) + } + return l +} + +func (p *Image) field2Length() int { + l := 0 + if p.IsSetURL() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.URL) + } + return l +} + +func (p *Image) DeepCopy(s interface{}) error { + src, ok := s.(*Image) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Name != nil { + var tmp string + if *src.Name != "" { + tmp = kutils.StringDeepCopy(*src.Name) + } + p.Name = &tmp + } + + if src.URL != nil { + var tmp string + if *src.URL != "" { + tmp = kutils.StringDeepCopy(*src.URL) + } + p.URL = &tmp + } + + return nil +} + +func (p *SpanInfo) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetSpanID bool = false + var issetFieldList bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetSpanID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetFieldList = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetSpanID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetFieldList { + fieldId = 2 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanInfo[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_SpanInfo[fieldId])) +} + +func (p *SpanInfo) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.SpanID = _field + return offset, nil +} + +func (p *SpanInfo) FastReadField2(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*FieldData, 0, size) + values := make([]FieldData, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldList = _field + return offset, nil +} + +func (p *SpanInfo) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *SpanInfo) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *SpanInfo) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *SpanInfo) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.SpanID) + return offset +} + +func (p *SpanInfo) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldList { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + return offset +} + +func (p *SpanInfo) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.SpanID) + return l +} + +func (p *SpanInfo) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldList { + _ = v + l += v.BLength() + } + return l +} + +func (p *SpanInfo) DeepCopy(s interface{}) error { + src, ok := s.(*SpanInfo) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.SpanID != "" { + p.SpanID = kutils.StringDeepCopy(src.SpanID) + } + + if src.FieldList != nil { + p.FieldList = make([]*FieldData, 0, len(src.FieldList)) + for _, elem := range src.FieldList { + var _elem *FieldData + if elem != nil { + _elem = &FieldData{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldList = append(p.FieldList, _elem) + } + } + + return nil +} + +func (p *ExtractSpanInfoResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetSpanInfos bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetSpanInfos = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetSpanInfos { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ExtractSpanInfoResponse[fieldId])) +} + +func (p *ExtractSpanInfoResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*SpanInfo, 0, size) + values := make([]SpanInfo, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.SpanInfos = _field + return offset, nil +} + +func (p *ExtractSpanInfoResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *ExtractSpanInfoResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ExtractSpanInfoResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ExtractSpanInfoResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ExtractSpanInfoResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.SpanInfos { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + return offset +} + +func (p *ExtractSpanInfoResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ExtractSpanInfoResponse) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.SpanInfos { + _ = v + l += v.BLength() + } + return l +} + +func (p *ExtractSpanInfoResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *ExtractSpanInfoResponse) DeepCopy(s interface{}) error { + src, ok := s.(*ExtractSpanInfoResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.SpanInfos != nil { + p.SpanInfos = make([]*SpanInfo, 0, len(src.SpanInfos)) + for _, elem := range src.SpanInfos { + var _elem *SpanInfo + if elem != nil { + _elem = &SpanInfo{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.SpanInfos = append(p.SpanInfos, _elem) + } + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *CreateTaskRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetTask bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTask = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetTask { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_CreateTaskRequest[fieldId])) +} + +func (p *CreateTaskRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := task.NewTask() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Task = _field + return offset, nil +} + +func (p *CreateTaskRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *CreateTaskRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *CreateTaskRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *CreateTaskRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *CreateTaskRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Task.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *CreateTaskRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *CreateTaskRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Task.BLength() + return l +} + +func (p *CreateTaskRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *CreateTaskRequest) DeepCopy(s interface{}) error { + src, ok := s.(*CreateTaskRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _task *task.Task + if src.Task != nil { + _task = &task.Task{} + if err := _task.DeepCopy(src.Task); err != nil { + return err + } + } + p.Task = _task + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *CreateTaskResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *CreateTaskResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TaskID = _field + return offset, nil +} + +func (p *CreateTaskResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *CreateTaskResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *CreateTaskResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *CreateTaskResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *CreateTaskResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], *p.TaskID) + } + return offset +} + +func (p *CreateTaskResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *CreateTaskResponse) field1Length() int { + l := 0 + if p.IsSetTaskID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *CreateTaskResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *CreateTaskResponse) DeepCopy(s interface{}) error { + src, ok := s.(*CreateTaskResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.TaskID != nil { + tmp := *src.TaskID + p.TaskID = &tmp + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *UpdateTaskRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetTaskID bool = false + var issetWorkspaceID bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTaskID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.DOUBLE { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetTaskID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetWorkspaceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_UpdateTaskRequest[fieldId])) +} + +func (p *UpdateTaskRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TaskID = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *task.TaskStatus + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TaskStatus = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Description = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField5(buf []byte) (int, error) { + offset := 0 + _field := task.NewEffectiveTime() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.EffectiveTime = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field *float64 + if v, l, err := thrift.Binary.ReadDouble(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SampleRate = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *UpdateTaskRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *UpdateTaskRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field6Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *UpdateTaskRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.TaskID) + return offset +} + +func (p *UpdateTaskRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *UpdateTaskRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskStatus() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.TaskStatus) + } + return offset +} + +func (p *UpdateTaskRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDescription() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Description) + } + return offset +} + +func (p *UpdateTaskRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEffectiveTime() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 5) + offset += p.EffectiveTime.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *UpdateTaskRequest) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSampleRate() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.DOUBLE, 6) + offset += thrift.Binary.WriteDouble(buf[offset:], *p.SampleRate) + } + return offset +} + +func (p *UpdateTaskRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *UpdateTaskRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *UpdateTaskRequest) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *UpdateTaskRequest) field3Length() int { + l := 0 + if p.IsSetTaskStatus() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.TaskStatus) + } + return l +} + +func (p *UpdateTaskRequest) field4Length() int { + l := 0 + if p.IsSetDescription() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Description) + } + return l +} + +func (p *UpdateTaskRequest) field5Length() int { + l := 0 + if p.IsSetEffectiveTime() { + l += thrift.Binary.FieldBeginLength() + l += p.EffectiveTime.BLength() + } + return l +} + +func (p *UpdateTaskRequest) field6Length() int { + l := 0 + if p.IsSetSampleRate() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.DoubleLength() + } + return l +} + +func (p *UpdateTaskRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *UpdateTaskRequest) DeepCopy(s interface{}) error { + src, ok := s.(*UpdateTaskRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.TaskID = src.TaskID + + p.WorkspaceID = src.WorkspaceID + + if src.TaskStatus != nil { + tmp := *src.TaskStatus + p.TaskStatus = &tmp + } + + if src.Description != nil { + var tmp string + if *src.Description != "" { + tmp = kutils.StringDeepCopy(*src.Description) + } + p.Description = &tmp + } + + var _effectiveTime *task.EffectiveTime + if src.EffectiveTime != nil { + _effectiveTime = &task.EffectiveTime{} + if err := _effectiveTime.DeepCopy(src.EffectiveTime); err != nil { + return err + } + } + p.EffectiveTime = _effectiveTime + + if src.SampleRate != nil { + tmp := *src.SampleRate + p.SampleRate = &tmp + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *UpdateTaskResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *UpdateTaskResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *UpdateTaskResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *UpdateTaskResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *UpdateTaskResponse) BLength() int { + l := 0 + if p != nil { + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *UpdateTaskResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *UpdateTaskResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *UpdateTaskResponse) DeepCopy(s interface{}) error { + src, ok := s.(*UpdateTaskResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *ListTasksRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 101: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField101(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 102: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField102(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 103: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField103(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ListTasksRequest[fieldId])) +} + +func (p *ListTasksRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *ListTasksRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + _field := filter.NewTaskFilterFields() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.TaskFilters = _field + return offset, nil +} + +func (p *ListTasksRequest) FastReadField101(buf []byte) (int, error) { + offset := 0 + + var _field *int32 + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Limit = _field + return offset, nil +} + +func (p *ListTasksRequest) FastReadField102(buf []byte) (int, error) { + offset := 0 + + var _field *int32 + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Offset = _field + return offset, nil +} + +func (p *ListTasksRequest) FastReadField103(buf []byte) (int, error) { + offset := 0 + + var _field *OrderType + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + + tmp := OrderType(v) + _field = &tmp + } + p.OrderBy = _field + return offset, nil +} + +func (p *ListTasksRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *ListTasksRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ListTasksRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField101(buf[offset:], w) + offset += p.fastWriteField102(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField103(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ListTasksRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field101Length() + l += p.field102Length() + l += p.field103Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ListTasksRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *ListTasksRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskFilters() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 2) + offset += p.TaskFilters.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ListTasksRequest) fastWriteField101(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetLimit() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 101) + offset += thrift.Binary.WriteI32(buf[offset:], *p.Limit) + } + return offset +} + +func (p *ListTasksRequest) fastWriteField102(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetOffset() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 102) + offset += thrift.Binary.WriteI32(buf[offset:], *p.Offset) + } + return offset +} + +func (p *ListTasksRequest) fastWriteField103(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetOrderBy() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 103) + offset += thrift.Binary.WriteI32(buf[offset:], int32(*p.OrderBy)) + } + return offset +} + +func (p *ListTasksRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ListTasksRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *ListTasksRequest) field2Length() int { + l := 0 + if p.IsSetTaskFilters() { + l += thrift.Binary.FieldBeginLength() + l += p.TaskFilters.BLength() + } + return l +} + +func (p *ListTasksRequest) field101Length() int { + l := 0 + if p.IsSetLimit() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *ListTasksRequest) field102Length() int { + l := 0 + if p.IsSetOffset() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *ListTasksRequest) field103Length() int { + l := 0 + if p.IsSetOrderBy() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *ListTasksRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *ListTasksRequest) DeepCopy(s interface{}) error { + src, ok := s.(*ListTasksRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.WorkspaceID = src.WorkspaceID + + var _taskFilters *filter.TaskFilterFields + if src.TaskFilters != nil { + _taskFilters = &filter.TaskFilterFields{} + if err := _taskFilters.DeepCopy(src.TaskFilters); err != nil { + return err + } + } + p.TaskFilters = _taskFilters + + if src.Limit != nil { + tmp := *src.Limit + p.Limit = &tmp + } + + if src.Offset != nil { + tmp := *src.Offset + p.Offset = &tmp + } + + if src.OrderBy != nil { + tmp := *src.OrderBy + p.OrderBy = &tmp + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *ListTasksResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 100: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField100(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *ListTasksResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*task.Task, 0, size) + values := make([]task.Task, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.Tasks = _field + return offset, nil +} + +func (p *ListTasksResponse) FastReadField100(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Total = _field + return offset, nil +} + +func (p *ListTasksResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *ListTasksResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ListTasksResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField100(buf[offset:], w) + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ListTasksResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field100Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ListTasksResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTasks() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.Tasks { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *ListTasksResponse) fastWriteField100(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTotal() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 100) + offset += thrift.Binary.WriteI64(buf[offset:], *p.Total) + } + return offset +} + +func (p *ListTasksResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ListTasksResponse) field1Length() int { + l := 0 + if p.IsSetTasks() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.Tasks { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *ListTasksResponse) field100Length() int { + l := 0 + if p.IsSetTotal() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *ListTasksResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *ListTasksResponse) DeepCopy(s interface{}) error { + src, ok := s.(*ListTasksResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Tasks != nil { + p.Tasks = make([]*task.Task, 0, len(src.Tasks)) + for _, elem := range src.Tasks { + var _elem *task.Task + if elem != nil { + _elem = &task.Task{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.Tasks = append(p.Tasks, _elem) + } + } + + if src.Total != nil { + tmp := *src.Total + p.Total = &tmp + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *GetTaskRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetTaskID bool = false + var issetWorkspaceID bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTaskID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetTaskID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetWorkspaceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_GetTaskRequest[fieldId])) +} + +func (p *GetTaskRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TaskID = _field + return offset, nil +} + +func (p *GetTaskRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *GetTaskRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *GetTaskRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *GetTaskRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *GetTaskRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *GetTaskRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.TaskID) + return offset +} + +func (p *GetTaskRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *GetTaskRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *GetTaskRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *GetTaskRequest) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *GetTaskRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *GetTaskRequest) DeepCopy(s interface{}) error { + src, ok := s.(*GetTaskRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.TaskID = src.TaskID + + p.WorkspaceID = src.WorkspaceID + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *GetTaskResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *GetTaskResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := task.NewTask() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Task = _field + return offset, nil +} + +func (p *GetTaskResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *GetTaskResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *GetTaskResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *GetTaskResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *GetTaskResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTask() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Task.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *GetTaskResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *GetTaskResponse) field1Length() int { + l := 0 + if p.IsSetTask() { + l += thrift.Binary.FieldBeginLength() + l += p.Task.BLength() + } + return l +} + +func (p *GetTaskResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *GetTaskResponse) DeepCopy(s interface{}) error { + src, ok := s.(*GetTaskResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _task *task.Task + if src.Task != nil { + _task = &task.Task{} + if err := _task.DeepCopy(src.Task); err != nil { + return err + } + } + p.Task = _task + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *CheckTaskNameRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + var issetName bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetName = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetName { + fieldId = 2 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_CheckTaskNameRequest[fieldId])) +} + +func (p *CheckTaskNameRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *CheckTaskNameRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.Name = _field + return offset, nil +} + +func (p *CheckTaskNameRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *CheckTaskNameRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *CheckTaskNameRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *CheckTaskNameRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *CheckTaskNameRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *CheckTaskNameRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.Name) + return offset +} + +func (p *CheckTaskNameRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *CheckTaskNameRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *CheckTaskNameRequest) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.Name) + return l +} + +func (p *CheckTaskNameRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *CheckTaskNameRequest) DeepCopy(s interface{}) error { + src, ok := s.(*CheckTaskNameRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.WorkspaceID = src.WorkspaceID + + if src.Name != "" { + p.Name = kutils.StringDeepCopy(src.Name) + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *CheckTaskNameResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.BOOL { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *CheckTaskNameResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *bool + if v, l, err := thrift.Binary.ReadBool(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Pass = _field + return offset, nil +} + +func (p *CheckTaskNameResponse) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Message = _field + return offset, nil +} + +func (p *CheckTaskNameResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *CheckTaskNameResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *CheckTaskNameResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *CheckTaskNameResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *CheckTaskNameResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetPass() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.BOOL, 1) + offset += thrift.Binary.WriteBool(buf[offset:], *p.Pass) + } + return offset +} + +func (p *CheckTaskNameResponse) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetMessage() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Message) + } + return offset +} + +func (p *CheckTaskNameResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *CheckTaskNameResponse) field1Length() int { + l := 0 + if p.IsSetPass() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.BoolLength() + } + return l +} + +func (p *CheckTaskNameResponse) field2Length() int { + l := 0 + if p.IsSetMessage() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Message) + } + return l +} + +func (p *CheckTaskNameResponse) field255Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + return l +} + +func (p *CheckTaskNameResponse) DeepCopy(s interface{}) error { + src, ok := s.(*CheckTaskNameResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Pass != nil { + tmp := *src.Pass + p.Pass = &tmp + } + + if src.Message != nil { + var tmp string + if *src.Message != "" { + tmp = kutils.StringDeepCopy(*src.Message) + } + p.Message = &tmp + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + func (p *TraceServiceListSpansArgs) FastRead(buf []byte) (int, error) { var err error @@ -8193,14 +13531,1886 @@ func (p *TraceServiceListSpansArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceListSpansArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewListSpansRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TraceServiceListSpansArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceListSpansArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceListSpansArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceListSpansArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TraceServiceListSpansArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TraceServiceListSpansArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListSpansArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *ListSpansRequest + if src.Req != nil { + _req = &ListSpansRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TraceServiceListSpansResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceListSpansResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewListSpansResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TraceServiceListSpansResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceListSpansResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceListSpansResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceListSpansResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TraceServiceListSpansResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TraceServiceListSpansResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListSpansResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *ListSpansResponse + if src.Success != nil { + _success = &ListSpansResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TraceServiceGetTraceArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceGetTraceArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewGetTraceRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TraceServiceGetTraceArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceGetTraceArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceGetTraceArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceGetTraceArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TraceServiceGetTraceArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TraceServiceGetTraceArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTraceArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *GetTraceRequest + if src.Req != nil { + _req = &GetTraceRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TraceServiceGetTraceResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceGetTraceResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewGetTraceResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TraceServiceGetTraceResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceGetTraceResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceGetTraceResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceGetTraceResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TraceServiceGetTraceResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TraceServiceGetTraceResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTraceResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *GetTraceResponse + if src.Success != nil { + _success = &GetTraceResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewBatchGetTracesAdvanceInfoRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *BatchGetTracesAdvanceInfoRequest + if src.Req != nil { + _req = &BatchGetTracesAdvanceInfoRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewBatchGetTracesAdvanceInfoResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *BatchGetTracesAdvanceInfoResponse + if src.Success != nil { + _success = &BatchGetTracesAdvanceInfoResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TraceServiceIngestTracesInnerArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceIngestTracesInnerArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewIngestTracesRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TraceServiceIngestTracesInnerArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceIngestTracesInnerArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceIngestTracesInnerArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceIngestTracesInnerArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TraceServiceIngestTracesInnerArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TraceServiceIngestTracesInnerArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceIngestTracesInnerArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *IngestTracesRequest + if src.Req != nil { + _req = &IngestTracesRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TraceServiceIngestTracesInnerResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceIngestTracesInnerResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewIngestTracesResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TraceServiceIngestTracesInnerResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceIngestTracesInnerResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceIngestTracesInnerResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceIngestTracesInnerResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TraceServiceIngestTracesInnerResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TraceServiceIngestTracesInnerResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceIngestTracesInnerResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *IngestTracesResponse + if src.Success != nil { + _success = &IngestTracesResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TraceServiceGetTracesMetaInfoArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceGetTracesMetaInfoArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewGetTracesMetaInfoRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TraceServiceGetTracesMetaInfoArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceGetTracesMetaInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceGetTracesMetaInfoArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceGetTracesMetaInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TraceServiceGetTracesMetaInfoArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TraceServiceGetTracesMetaInfoArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTracesMetaInfoArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *GetTracesMetaInfoRequest + if src.Req != nil { + _req = &GetTracesMetaInfoRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TraceServiceGetTracesMetaInfoResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceGetTracesMetaInfoResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewGetTracesMetaInfoResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TraceServiceGetTracesMetaInfoResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceGetTracesMetaInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceGetTracesMetaInfoResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceGetTracesMetaInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TraceServiceGetTracesMetaInfoResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TraceServiceGetTracesMetaInfoResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTracesMetaInfoResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *GetTracesMetaInfoResponse + if src.Success != nil { + _success = &GetTracesMetaInfoResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TraceServiceCreateViewArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceCreateViewArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewCreateViewRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TraceServiceCreateViewArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceCreateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceCreateViewArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceCreateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TraceServiceCreateViewArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TraceServiceCreateViewArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateViewArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *CreateViewRequest + if src.Req != nil { + _req = &CreateViewRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TraceServiceCreateViewResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceCreateViewResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewCreateViewResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TraceServiceCreateViewResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceCreateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceCreateViewResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceCreateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TraceServiceCreateViewResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TraceServiceCreateViewResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateViewResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *CreateViewResponse + if src.Success != nil { + _success = &CreateViewResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TraceServiceUpdateViewArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceUpdateViewArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewUpdateViewRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TraceServiceUpdateViewArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceUpdateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceUpdateViewArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceUpdateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TraceServiceUpdateViewArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TraceServiceUpdateViewArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateViewArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *UpdateViewRequest + if src.Req != nil { + _req = &UpdateViewRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TraceServiceUpdateViewResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceUpdateViewResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewUpdateViewResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TraceServiceUpdateViewResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceUpdateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceUpdateViewResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceUpdateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TraceServiceUpdateViewResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TraceServiceUpdateViewResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateViewResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *UpdateViewResponse + if src.Success != nil { + _success = &UpdateViewResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TraceServiceDeleteViewArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceDeleteViewArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewDeleteViewRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TraceServiceDeleteViewArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceDeleteViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceDeleteViewArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceDeleteViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TraceServiceDeleteViewArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TraceServiceDeleteViewArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteViewArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *DeleteViewRequest + if src.Req != nil { + _req = &DeleteViewRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TraceServiceDeleteViewResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceDeleteViewResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewDeleteViewResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TraceServiceDeleteViewResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceDeleteViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceDeleteViewResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceDeleteViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TraceServiceDeleteViewResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TraceServiceDeleteViewResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteViewResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *DeleteViewResponse + if src.Success != nil { + _success = &DeleteViewResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TraceServiceListViewsArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListSpansArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceListViewsArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewListSpansRequest() + _field := NewListViewsRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -8210,11 +15420,11 @@ func (p *TraceServiceListSpansArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListSpansArgs) FastWrite(buf []byte) int { +func (p *TraceServiceListViewsArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListSpansArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -8223,7 +15433,7 @@ func (p *TraceServiceListSpansArgs) FastWriteNocopy(buf []byte, w thrift.NocopyW return offset } -func (p *TraceServiceListSpansArgs) BLength() int { +func (p *TraceServiceListViewsArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -8232,29 +15442,29 @@ func (p *TraceServiceListSpansArgs) BLength() int { return l } -func (p *TraceServiceListSpansArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceListSpansArgs) field1Length() int { +func (p *TraceServiceListViewsArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceListSpansArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListSpansArgs) +func (p *TraceServiceListViewsArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListViewsArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ListSpansRequest + var _req *ListViewsRequest if src.Req != nil { - _req = &ListSpansRequest{} + _req = &ListViewsRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -8264,7 +15474,7 @@ func (p *TraceServiceListSpansArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListSpansResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListViewsResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -8308,14 +15518,14 @@ func (p *TraceServiceListSpansResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListSpansResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceListViewsResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewListSpansResponse() + _field := NewListViewsResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -8325,11 +15535,11 @@ func (p *TraceServiceListSpansResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListSpansResult) FastWrite(buf []byte) int { +func (p *TraceServiceListViewsResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListSpansResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -8338,7 +15548,7 @@ func (p *TraceServiceListSpansResult) FastWriteNocopy(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListSpansResult) BLength() int { +func (p *TraceServiceListViewsResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -8347,7 +15557,7 @@ func (p *TraceServiceListSpansResult) BLength() int { return l } -func (p *TraceServiceListSpansResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -8356,7 +15566,7 @@ func (p *TraceServiceListSpansResult) fastWriteField0(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListSpansResult) field0Length() int { +func (p *TraceServiceListViewsResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -8365,15 +15575,15 @@ func (p *TraceServiceListSpansResult) field0Length() int { return l } -func (p *TraceServiceListSpansResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListSpansResult) +func (p *TraceServiceListViewsResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListViewsResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ListSpansResponse + var _success *ListViewsResponse if src.Success != nil { - _success = &ListSpansResponse{} + _success = &ListViewsResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -8383,7 +15593,7 @@ func (p *TraceServiceListSpansResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceGetTraceArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -8427,14 +15637,14 @@ func (p *TraceServiceGetTraceArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceGetTraceArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewGetTraceRequest() + _field := NewCreateManualAnnotationRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -8444,11 +15654,11 @@ func (p *TraceServiceGetTraceArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceGetTraceArgs) FastWrite(buf []byte) int { +func (p *TraceServiceCreateManualAnnotationArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceGetTraceArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -8457,7 +15667,7 @@ func (p *TraceServiceGetTraceArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWr return offset } -func (p *TraceServiceGetTraceArgs) BLength() int { +func (p *TraceServiceCreateManualAnnotationArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -8466,29 +15676,29 @@ func (p *TraceServiceGetTraceArgs) BLength() int { return l } -func (p *TraceServiceGetTraceArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceGetTraceArgs) field1Length() int { +func (p *TraceServiceCreateManualAnnotationArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceGetTraceArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTraceArgs) +func (p *TraceServiceCreateManualAnnotationArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateManualAnnotationArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *GetTraceRequest + var _req *CreateManualAnnotationRequest if src.Req != nil { - _req = &GetTraceRequest{} + _req = &CreateManualAnnotationRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -8498,7 +15708,7 @@ func (p *TraceServiceGetTraceArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceGetTraceResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -8542,14 +15752,14 @@ func (p *TraceServiceGetTraceResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceGetTraceResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewGetTraceResponse() + _field := NewCreateManualAnnotationResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -8559,11 +15769,11 @@ func (p *TraceServiceGetTraceResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceGetTraceResult) FastWrite(buf []byte) int { +func (p *TraceServiceCreateManualAnnotationResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceGetTraceResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -8572,7 +15782,7 @@ func (p *TraceServiceGetTraceResult) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceGetTraceResult) BLength() int { +func (p *TraceServiceCreateManualAnnotationResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -8581,7 +15791,7 @@ func (p *TraceServiceGetTraceResult) BLength() int { return l } -func (p *TraceServiceGetTraceResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -8590,7 +15800,7 @@ func (p *TraceServiceGetTraceResult) fastWriteField0(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceGetTraceResult) field0Length() int { +func (p *TraceServiceCreateManualAnnotationResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -8599,15 +15809,15 @@ func (p *TraceServiceGetTraceResult) field0Length() int { return l } -func (p *TraceServiceGetTraceResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTraceResult) +func (p *TraceServiceCreateManualAnnotationResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateManualAnnotationResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *GetTraceResponse + var _success *CreateManualAnnotationResponse if src.Success != nil { - _success = &GetTraceResponse{} + _success = &CreateManualAnnotationResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -8617,7 +15827,7 @@ func (p *TraceServiceGetTraceResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -8661,14 +15871,14 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastRead(buf []byte) (int, e ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewBatchGetTracesAdvanceInfoRequest() + _field := NewUpdateManualAnnotationRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -8678,11 +15888,11 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastReadField1(buf []byte) ( return offset, nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateManualAnnotationArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -8691,7 +15901,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWriteNocopy(buf []byte, return offset } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) BLength() int { +func (p *TraceServiceUpdateManualAnnotationArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -8700,29 +15910,29 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) BLength() int { return l } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) field1Length() int { +func (p *TraceServiceUpdateManualAnnotationArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoArgs) +func (p *TraceServiceUpdateManualAnnotationArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateManualAnnotationArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *BatchGetTracesAdvanceInfoRequest + var _req *UpdateManualAnnotationRequest if src.Req != nil { - _req = &BatchGetTracesAdvanceInfoRequest{} + _req = &UpdateManualAnnotationRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -8732,7 +15942,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepCopy(s interface{}) erro return nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -8776,14 +15986,14 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastRead(buf []byte) (int, ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewBatchGetTracesAdvanceInfoResponse() + _field := NewUpdateManualAnnotationResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -8793,11 +16003,11 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastReadField0(buf []byte) return offset, nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateManualAnnotationResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -8806,7 +16016,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWriteNocopy(buf []byte return offset } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) BLength() int { +func (p *TraceServiceUpdateManualAnnotationResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -8815,7 +16025,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) BLength() int { return l } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -8824,7 +16034,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) fastWriteField0(buf []byte return offset } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) field0Length() int { +func (p *TraceServiceUpdateManualAnnotationResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -8833,15 +16043,15 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) field0Length() int { return l } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoResult) +func (p *TraceServiceUpdateManualAnnotationResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateManualAnnotationResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *BatchGetTracesAdvanceInfoResponse + var _success *UpdateManualAnnotationResponse if src.Success != nil { - _success = &BatchGetTracesAdvanceInfoResponse{} + _success = &UpdateManualAnnotationResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -8851,7 +16061,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepCopy(s interface{}) er return nil } -func (p *TraceServiceIngestTracesInnerArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -8895,14 +16105,14 @@ func (p *TraceServiceIngestTracesInnerArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceIngestTracesInnerArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewIngestTracesRequest() + _field := NewDeleteManualAnnotationRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -8912,11 +16122,11 @@ func (p *TraceServiceIngestTracesInnerArgs) FastReadField1(buf []byte) (int, err return offset, nil } -func (p *TraceServiceIngestTracesInnerArgs) FastWrite(buf []byte) int { +func (p *TraceServiceDeleteManualAnnotationArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceIngestTracesInnerArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -8925,7 +16135,7 @@ func (p *TraceServiceIngestTracesInnerArgs) FastWriteNocopy(buf []byte, w thrift return offset } -func (p *TraceServiceIngestTracesInnerArgs) BLength() int { +func (p *TraceServiceDeleteManualAnnotationArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -8934,29 +16144,29 @@ func (p *TraceServiceIngestTracesInnerArgs) BLength() int { return l } -func (p *TraceServiceIngestTracesInnerArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceIngestTracesInnerArgs) field1Length() int { +func (p *TraceServiceDeleteManualAnnotationArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceIngestTracesInnerArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceIngestTracesInnerArgs) +func (p *TraceServiceDeleteManualAnnotationArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteManualAnnotationArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *IngestTracesRequest + var _req *DeleteManualAnnotationRequest if src.Req != nil { - _req = &IngestTracesRequest{} + _req = &DeleteManualAnnotationRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -8966,7 +16176,7 @@ func (p *TraceServiceIngestTracesInnerArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceIngestTracesInnerResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9010,14 +16220,14 @@ func (p *TraceServiceIngestTracesInnerResult) FastRead(buf []byte) (int, error) ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceIngestTracesInnerResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewIngestTracesResponse() + _field := NewDeleteManualAnnotationResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -9027,11 +16237,11 @@ func (p *TraceServiceIngestTracesInnerResult) FastReadField0(buf []byte) (int, e return offset, nil } -func (p *TraceServiceIngestTracesInnerResult) FastWrite(buf []byte) int { +func (p *TraceServiceDeleteManualAnnotationResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceIngestTracesInnerResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -9040,7 +16250,7 @@ func (p *TraceServiceIngestTracesInnerResult) FastWriteNocopy(buf []byte, w thri return offset } -func (p *TraceServiceIngestTracesInnerResult) BLength() int { +func (p *TraceServiceDeleteManualAnnotationResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -9049,7 +16259,7 @@ func (p *TraceServiceIngestTracesInnerResult) BLength() int { return l } -func (p *TraceServiceIngestTracesInnerResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -9058,7 +16268,7 @@ func (p *TraceServiceIngestTracesInnerResult) fastWriteField0(buf []byte, w thri return offset } -func (p *TraceServiceIngestTracesInnerResult) field0Length() int { +func (p *TraceServiceDeleteManualAnnotationResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -9067,15 +16277,15 @@ func (p *TraceServiceIngestTracesInnerResult) field0Length() int { return l } -func (p *TraceServiceIngestTracesInnerResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceIngestTracesInnerResult) +func (p *TraceServiceDeleteManualAnnotationResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteManualAnnotationResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *IngestTracesResponse + var _success *DeleteManualAnnotationResponse if src.Success != nil { - _success = &IngestTracesResponse{} + _success = &DeleteManualAnnotationResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -9085,7 +16295,7 @@ func (p *TraceServiceIngestTracesInnerResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceGetTracesMetaInfoArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9129,14 +16339,14 @@ func (p *TraceServiceGetTracesMetaInfoArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceGetTracesMetaInfoArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewGetTracesMetaInfoRequest() + _field := NewListAnnotationsRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -9146,11 +16356,11 @@ func (p *TraceServiceGetTracesMetaInfoArgs) FastReadField1(buf []byte) (int, err return offset, nil } -func (p *TraceServiceGetTracesMetaInfoArgs) FastWrite(buf []byte) int { +func (p *TraceServiceListAnnotationsArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceGetTracesMetaInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -9159,7 +16369,7 @@ func (p *TraceServiceGetTracesMetaInfoArgs) FastWriteNocopy(buf []byte, w thrift return offset } -func (p *TraceServiceGetTracesMetaInfoArgs) BLength() int { +func (p *TraceServiceListAnnotationsArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -9168,29 +16378,29 @@ func (p *TraceServiceGetTracesMetaInfoArgs) BLength() int { return l } -func (p *TraceServiceGetTracesMetaInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceGetTracesMetaInfoArgs) field1Length() int { +func (p *TraceServiceListAnnotationsArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceGetTracesMetaInfoArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTracesMetaInfoArgs) +func (p *TraceServiceListAnnotationsArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListAnnotationsArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *GetTracesMetaInfoRequest + var _req *ListAnnotationsRequest if src.Req != nil { - _req = &GetTracesMetaInfoRequest{} + _req = &ListAnnotationsRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -9200,7 +16410,7 @@ func (p *TraceServiceGetTracesMetaInfoArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceGetTracesMetaInfoResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9244,14 +16454,14 @@ func (p *TraceServiceGetTracesMetaInfoResult) FastRead(buf []byte) (int, error) ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceGetTracesMetaInfoResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewGetTracesMetaInfoResponse() + _field := NewListAnnotationsResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -9261,11 +16471,11 @@ func (p *TraceServiceGetTracesMetaInfoResult) FastReadField0(buf []byte) (int, e return offset, nil } -func (p *TraceServiceGetTracesMetaInfoResult) FastWrite(buf []byte) int { +func (p *TraceServiceListAnnotationsResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceGetTracesMetaInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -9274,7 +16484,7 @@ func (p *TraceServiceGetTracesMetaInfoResult) FastWriteNocopy(buf []byte, w thri return offset } -func (p *TraceServiceGetTracesMetaInfoResult) BLength() int { +func (p *TraceServiceListAnnotationsResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -9283,7 +16493,7 @@ func (p *TraceServiceGetTracesMetaInfoResult) BLength() int { return l } -func (p *TraceServiceGetTracesMetaInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -9292,7 +16502,7 @@ func (p *TraceServiceGetTracesMetaInfoResult) fastWriteField0(buf []byte, w thri return offset } -func (p *TraceServiceGetTracesMetaInfoResult) field0Length() int { +func (p *TraceServiceListAnnotationsResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -9301,15 +16511,15 @@ func (p *TraceServiceGetTracesMetaInfoResult) field0Length() int { return l } -func (p *TraceServiceGetTracesMetaInfoResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTracesMetaInfoResult) +func (p *TraceServiceListAnnotationsResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListAnnotationsResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *GetTracesMetaInfoResponse + var _success *ListAnnotationsResponse if src.Success != nil { - _success = &GetTracesMetaInfoResponse{} + _success = &ListAnnotationsResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -9319,7 +16529,7 @@ func (p *TraceServiceGetTracesMetaInfoResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateViewArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceChangeEvaluatorScoreArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9363,14 +16573,14 @@ func (p *TraceServiceCreateViewArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateViewArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceChangeEvaluatorScoreArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewCreateViewRequest() + _field := NewChangeEvaluatorScoreRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -9380,11 +16590,11 @@ func (p *TraceServiceCreateViewArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceCreateViewArgs) FastWrite(buf []byte) int { +func (p *TraceServiceChangeEvaluatorScoreArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceChangeEvaluatorScoreArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -9393,7 +16603,7 @@ func (p *TraceServiceCreateViewArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceCreateViewArgs) BLength() int { +func (p *TraceServiceChangeEvaluatorScoreArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -9402,29 +16612,29 @@ func (p *TraceServiceCreateViewArgs) BLength() int { return l } -func (p *TraceServiceCreateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceChangeEvaluatorScoreArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceCreateViewArgs) field1Length() int { +func (p *TraceServiceChangeEvaluatorScoreArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceCreateViewArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateViewArgs) +func (p *TraceServiceChangeEvaluatorScoreArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceChangeEvaluatorScoreArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *CreateViewRequest + var _req *ChangeEvaluatorScoreRequest if src.Req != nil { - _req = &CreateViewRequest{} + _req = &ChangeEvaluatorScoreRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -9434,7 +16644,7 @@ func (p *TraceServiceCreateViewArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateViewResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceChangeEvaluatorScoreResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9478,14 +16688,14 @@ func (p *TraceServiceCreateViewResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateViewResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceChangeEvaluatorScoreResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewCreateViewResponse() + _field := NewChangeEvaluatorScoreResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -9495,11 +16705,11 @@ func (p *TraceServiceCreateViewResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceCreateViewResult) FastWrite(buf []byte) int { +func (p *TraceServiceChangeEvaluatorScoreResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceChangeEvaluatorScoreResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -9508,7 +16718,7 @@ func (p *TraceServiceCreateViewResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceCreateViewResult) BLength() int { +func (p *TraceServiceChangeEvaluatorScoreResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -9517,7 +16727,7 @@ func (p *TraceServiceCreateViewResult) BLength() int { return l } -func (p *TraceServiceCreateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceChangeEvaluatorScoreResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -9526,7 +16736,7 @@ func (p *TraceServiceCreateViewResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceCreateViewResult) field0Length() int { +func (p *TraceServiceChangeEvaluatorScoreResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -9535,15 +16745,15 @@ func (p *TraceServiceCreateViewResult) field0Length() int { return l } -func (p *TraceServiceCreateViewResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateViewResult) +func (p *TraceServiceChangeEvaluatorScoreResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceChangeEvaluatorScoreResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *CreateViewResponse + var _success *ChangeEvaluatorScoreResponse if src.Success != nil { - _success = &CreateViewResponse{} + _success = &ChangeEvaluatorScoreResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -9553,7 +16763,7 @@ func (p *TraceServiceCreateViewResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateViewArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9597,14 +16807,14 @@ func (p *TraceServiceUpdateViewArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateViewArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewUpdateViewRequest() + _field := NewListAnnotationEvaluatorsRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -9614,11 +16824,11 @@ func (p *TraceServiceUpdateViewArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceUpdateViewArgs) FastWrite(buf []byte) int { +func (p *TraceServiceListAnnotationEvaluatorsArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationEvaluatorsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -9627,7 +16837,7 @@ func (p *TraceServiceUpdateViewArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceUpdateViewArgs) BLength() int { +func (p *TraceServiceListAnnotationEvaluatorsArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -9636,29 +16846,29 @@ func (p *TraceServiceUpdateViewArgs) BLength() int { return l } -func (p *TraceServiceUpdateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationEvaluatorsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceUpdateViewArgs) field1Length() int { +func (p *TraceServiceListAnnotationEvaluatorsArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceUpdateViewArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateViewArgs) +func (p *TraceServiceListAnnotationEvaluatorsArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListAnnotationEvaluatorsArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *UpdateViewRequest + var _req *ListAnnotationEvaluatorsRequest if src.Req != nil { - _req = &UpdateViewRequest{} + _req = &ListAnnotationEvaluatorsRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -9668,7 +16878,7 @@ func (p *TraceServiceUpdateViewArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateViewResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationEvaluatorsResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9712,14 +16922,14 @@ func (p *TraceServiceUpdateViewResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateViewResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationEvaluatorsResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewUpdateViewResponse() + _field := NewListAnnotationEvaluatorsResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -9729,11 +16939,11 @@ func (p *TraceServiceUpdateViewResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceUpdateViewResult) FastWrite(buf []byte) int { +func (p *TraceServiceListAnnotationEvaluatorsResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationEvaluatorsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -9742,7 +16952,7 @@ func (p *TraceServiceUpdateViewResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceUpdateViewResult) BLength() int { +func (p *TraceServiceListAnnotationEvaluatorsResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -9751,7 +16961,7 @@ func (p *TraceServiceUpdateViewResult) BLength() int { return l } -func (p *TraceServiceUpdateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationEvaluatorsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -9760,7 +16970,7 @@ func (p *TraceServiceUpdateViewResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceUpdateViewResult) field0Length() int { +func (p *TraceServiceListAnnotationEvaluatorsResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -9769,15 +16979,15 @@ func (p *TraceServiceUpdateViewResult) field0Length() int { return l } -func (p *TraceServiceUpdateViewResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateViewResult) +func (p *TraceServiceListAnnotationEvaluatorsResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListAnnotationEvaluatorsResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *UpdateViewResponse + var _success *ListAnnotationEvaluatorsResponse if src.Success != nil { - _success = &UpdateViewResponse{} + _success = &ListAnnotationEvaluatorsResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -9787,7 +16997,7 @@ func (p *TraceServiceUpdateViewResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceDeleteViewArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceExtractSpanInfoArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9831,14 +17041,14 @@ func (p *TraceServiceDeleteViewArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteViewArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceExtractSpanInfoArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewDeleteViewRequest() + _field := NewExtractSpanInfoRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -9848,11 +17058,11 @@ func (p *TraceServiceDeleteViewArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceDeleteViewArgs) FastWrite(buf []byte) int { +func (p *TraceServiceExtractSpanInfoArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExtractSpanInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -9861,7 +17071,7 @@ func (p *TraceServiceDeleteViewArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceDeleteViewArgs) BLength() int { +func (p *TraceServiceExtractSpanInfoArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -9870,29 +17080,29 @@ func (p *TraceServiceDeleteViewArgs) BLength() int { return l } -func (p *TraceServiceDeleteViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExtractSpanInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceDeleteViewArgs) field1Length() int { +func (p *TraceServiceExtractSpanInfoArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceDeleteViewArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteViewArgs) +func (p *TraceServiceExtractSpanInfoArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceExtractSpanInfoArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *DeleteViewRequest + var _req *ExtractSpanInfoRequest if src.Req != nil { - _req = &DeleteViewRequest{} + _req = &ExtractSpanInfoRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -9902,7 +17112,7 @@ func (p *TraceServiceDeleteViewArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceDeleteViewResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceExtractSpanInfoResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9946,14 +17156,14 @@ func (p *TraceServiceDeleteViewResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteViewResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceExtractSpanInfoResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewDeleteViewResponse() + _field := NewExtractSpanInfoResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -9963,11 +17173,11 @@ func (p *TraceServiceDeleteViewResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceDeleteViewResult) FastWrite(buf []byte) int { +func (p *TraceServiceExtractSpanInfoResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExtractSpanInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -9976,7 +17186,7 @@ func (p *TraceServiceDeleteViewResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceDeleteViewResult) BLength() int { +func (p *TraceServiceExtractSpanInfoResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -9985,7 +17195,7 @@ func (p *TraceServiceDeleteViewResult) BLength() int { return l } -func (p *TraceServiceDeleteViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExtractSpanInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -9994,7 +17204,7 @@ func (p *TraceServiceDeleteViewResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceDeleteViewResult) field0Length() int { +func (p *TraceServiceExtractSpanInfoResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -10003,15 +17213,15 @@ func (p *TraceServiceDeleteViewResult) field0Length() int { return l } -func (p *TraceServiceDeleteViewResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteViewResult) +func (p *TraceServiceExtractSpanInfoResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceExtractSpanInfoResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *DeleteViewResponse + var _success *ExtractSpanInfoResponse if src.Success != nil { - _success = &DeleteViewResponse{} + _success = &ExtractSpanInfoResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -10021,7 +17231,7 @@ func (p *TraceServiceDeleteViewResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListViewsArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCheckTaskNameArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -10065,14 +17275,14 @@ func (p *TraceServiceListViewsArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCheckTaskNameArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListViewsArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceCheckTaskNameArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewListViewsRequest() + _field := NewCheckTaskNameRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -10082,11 +17292,11 @@ func (p *TraceServiceListViewsArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListViewsArgs) FastWrite(buf []byte) int { +func (p *TraceServiceCheckTaskNameArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListViewsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCheckTaskNameArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -10095,7 +17305,7 @@ func (p *TraceServiceListViewsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyW return offset } -func (p *TraceServiceListViewsArgs) BLength() int { +func (p *TraceServiceCheckTaskNameArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -10104,29 +17314,29 @@ func (p *TraceServiceListViewsArgs) BLength() int { return l } -func (p *TraceServiceListViewsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCheckTaskNameArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceListViewsArgs) field1Length() int { +func (p *TraceServiceCheckTaskNameArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceListViewsArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListViewsArgs) +func (p *TraceServiceCheckTaskNameArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCheckTaskNameArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ListViewsRequest + var _req *CheckTaskNameRequest if src.Req != nil { - _req = &ListViewsRequest{} + _req = &CheckTaskNameRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -10136,7 +17346,7 @@ func (p *TraceServiceListViewsArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListViewsResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCheckTaskNameResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -10180,14 +17390,14 @@ func (p *TraceServiceListViewsResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCheckTaskNameResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListViewsResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceCheckTaskNameResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewListViewsResponse() + _field := NewCheckTaskNameResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -10197,11 +17407,11 @@ func (p *TraceServiceListViewsResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListViewsResult) FastWrite(buf []byte) int { +func (p *TraceServiceCheckTaskNameResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListViewsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCheckTaskNameResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -10210,7 +17420,7 @@ func (p *TraceServiceListViewsResult) FastWriteNocopy(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListViewsResult) BLength() int { +func (p *TraceServiceCheckTaskNameResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -10219,7 +17429,7 @@ func (p *TraceServiceListViewsResult) BLength() int { return l } -func (p *TraceServiceListViewsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCheckTaskNameResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -10228,7 +17438,7 @@ func (p *TraceServiceListViewsResult) fastWriteField0(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListViewsResult) field0Length() int { +func (p *TraceServiceCheckTaskNameResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -10237,15 +17447,15 @@ func (p *TraceServiceListViewsResult) field0Length() int { return l } -func (p *TraceServiceListViewsResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListViewsResult) +func (p *TraceServiceCheckTaskNameResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCheckTaskNameResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ListViewsResponse + var _success *CheckTaskNameResponse if src.Success != nil { - _success = &ListViewsResponse{} + _success = &CheckTaskNameResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -10255,7 +17465,7 @@ func (p *TraceServiceListViewsResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateManualAnnotationArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateTaskArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -10299,14 +17509,14 @@ func (p *TraceServiceCreateManualAnnotationArgs) FastRead(buf []byte) (int, erro ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateTaskArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceCreateTaskArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewCreateManualAnnotationRequest() + _field := NewCreateTaskRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -10316,11 +17526,11 @@ func (p *TraceServiceCreateManualAnnotationArgs) FastReadField1(buf []byte) (int return offset, nil } -func (p *TraceServiceCreateManualAnnotationArgs) FastWrite(buf []byte) int { +func (p *TraceServiceCreateTaskArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateTaskArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -10329,7 +17539,7 @@ func (p *TraceServiceCreateManualAnnotationArgs) FastWriteNocopy(buf []byte, w t return offset } -func (p *TraceServiceCreateManualAnnotationArgs) BLength() int { +func (p *TraceServiceCreateTaskArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -10338,29 +17548,29 @@ func (p *TraceServiceCreateManualAnnotationArgs) BLength() int { return l } -func (p *TraceServiceCreateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateTaskArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceCreateManualAnnotationArgs) field1Length() int { +func (p *TraceServiceCreateTaskArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceCreateManualAnnotationArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateManualAnnotationArgs) +func (p *TraceServiceCreateTaskArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateTaskArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *CreateManualAnnotationRequest + var _req *CreateTaskRequest if src.Req != nil { - _req = &CreateManualAnnotationRequest{} + _req = &CreateTaskRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -10370,7 +17580,7 @@ func (p *TraceServiceCreateManualAnnotationArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateManualAnnotationResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateTaskResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -10414,14 +17624,14 @@ func (p *TraceServiceCreateManualAnnotationResult) FastRead(buf []byte) (int, er ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateTaskResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceCreateTaskResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewCreateManualAnnotationResponse() + _field := NewCreateTaskResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -10431,11 +17641,11 @@ func (p *TraceServiceCreateManualAnnotationResult) FastReadField0(buf []byte) (i return offset, nil } -func (p *TraceServiceCreateManualAnnotationResult) FastWrite(buf []byte) int { +func (p *TraceServiceCreateTaskResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateTaskResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -10444,7 +17654,7 @@ func (p *TraceServiceCreateManualAnnotationResult) FastWriteNocopy(buf []byte, w return offset } -func (p *TraceServiceCreateManualAnnotationResult) BLength() int { +func (p *TraceServiceCreateTaskResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -10453,7 +17663,7 @@ func (p *TraceServiceCreateManualAnnotationResult) BLength() int { return l } -func (p *TraceServiceCreateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateTaskResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -10462,7 +17672,7 @@ func (p *TraceServiceCreateManualAnnotationResult) fastWriteField0(buf []byte, w return offset } -func (p *TraceServiceCreateManualAnnotationResult) field0Length() int { +func (p *TraceServiceCreateTaskResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -10471,15 +17681,15 @@ func (p *TraceServiceCreateManualAnnotationResult) field0Length() int { return l } -func (p *TraceServiceCreateManualAnnotationResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateManualAnnotationResult) +func (p *TraceServiceCreateTaskResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateTaskResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *CreateManualAnnotationResponse + var _success *CreateTaskResponse if src.Success != nil { - _success = &CreateManualAnnotationResponse{} + _success = &CreateTaskResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -10489,7 +17699,7 @@ func (p *TraceServiceCreateManualAnnotationResult) DeepCopy(s interface{}) error return nil } -func (p *TraceServiceUpdateManualAnnotationArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateTaskArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -10533,14 +17743,14 @@ func (p *TraceServiceUpdateManualAnnotationArgs) FastRead(buf []byte) (int, erro ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateTaskArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceUpdateTaskArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewUpdateManualAnnotationRequest() + _field := NewUpdateTaskRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -10550,11 +17760,11 @@ func (p *TraceServiceUpdateManualAnnotationArgs) FastReadField1(buf []byte) (int return offset, nil } -func (p *TraceServiceUpdateManualAnnotationArgs) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateTaskArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateTaskArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -10563,7 +17773,7 @@ func (p *TraceServiceUpdateManualAnnotationArgs) FastWriteNocopy(buf []byte, w t return offset } -func (p *TraceServiceUpdateManualAnnotationArgs) BLength() int { +func (p *TraceServiceUpdateTaskArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -10572,29 +17782,29 @@ func (p *TraceServiceUpdateManualAnnotationArgs) BLength() int { return l } -func (p *TraceServiceUpdateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateTaskArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceUpdateManualAnnotationArgs) field1Length() int { +func (p *TraceServiceUpdateTaskArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceUpdateManualAnnotationArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateManualAnnotationArgs) +func (p *TraceServiceUpdateTaskArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateTaskArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *UpdateManualAnnotationRequest + var _req *UpdateTaskRequest if src.Req != nil { - _req = &UpdateManualAnnotationRequest{} + _req = &UpdateTaskRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -10604,7 +17814,7 @@ func (p *TraceServiceUpdateManualAnnotationArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateManualAnnotationResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateTaskResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -10648,14 +17858,14 @@ func (p *TraceServiceUpdateManualAnnotationResult) FastRead(buf []byte) (int, er ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateTaskResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceUpdateTaskResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewUpdateManualAnnotationResponse() + _field := NewUpdateTaskResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -10665,11 +17875,11 @@ func (p *TraceServiceUpdateManualAnnotationResult) FastReadField0(buf []byte) (i return offset, nil } -func (p *TraceServiceUpdateManualAnnotationResult) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateTaskResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateTaskResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -10678,7 +17888,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) FastWriteNocopy(buf []byte, w return offset } -func (p *TraceServiceUpdateManualAnnotationResult) BLength() int { +func (p *TraceServiceUpdateTaskResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -10687,7 +17897,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) BLength() int { return l } -func (p *TraceServiceUpdateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateTaskResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -10696,7 +17906,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) fastWriteField0(buf []byte, w return offset } -func (p *TraceServiceUpdateManualAnnotationResult) field0Length() int { +func (p *TraceServiceUpdateTaskResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -10705,15 +17915,15 @@ func (p *TraceServiceUpdateManualAnnotationResult) field0Length() int { return l } -func (p *TraceServiceUpdateManualAnnotationResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateManualAnnotationResult) +func (p *TraceServiceUpdateTaskResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateTaskResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *UpdateManualAnnotationResponse + var _success *UpdateTaskResponse if src.Success != nil { - _success = &UpdateManualAnnotationResponse{} + _success = &UpdateTaskResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -10723,7 +17933,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) DeepCopy(s interface{}) error return nil } -func (p *TraceServiceDeleteManualAnnotationArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListTasksArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -10767,14 +17977,14 @@ func (p *TraceServiceDeleteManualAnnotationArgs) FastRead(buf []byte) (int, erro ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListTasksArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceListTasksArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewDeleteManualAnnotationRequest() + _field := NewListTasksRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -10784,11 +17994,11 @@ func (p *TraceServiceDeleteManualAnnotationArgs) FastReadField1(buf []byte) (int return offset, nil } -func (p *TraceServiceDeleteManualAnnotationArgs) FastWrite(buf []byte) int { +func (p *TraceServiceListTasksArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListTasksArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -10797,7 +18007,7 @@ func (p *TraceServiceDeleteManualAnnotationArgs) FastWriteNocopy(buf []byte, w t return offset } -func (p *TraceServiceDeleteManualAnnotationArgs) BLength() int { +func (p *TraceServiceListTasksArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -10806,29 +18016,29 @@ func (p *TraceServiceDeleteManualAnnotationArgs) BLength() int { return l } -func (p *TraceServiceDeleteManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListTasksArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceDeleteManualAnnotationArgs) field1Length() int { +func (p *TraceServiceListTasksArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceDeleteManualAnnotationArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteManualAnnotationArgs) +func (p *TraceServiceListTasksArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListTasksArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *DeleteManualAnnotationRequest + var _req *ListTasksRequest if src.Req != nil { - _req = &DeleteManualAnnotationRequest{} + _req = &ListTasksRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -10838,7 +18048,7 @@ func (p *TraceServiceDeleteManualAnnotationArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceDeleteManualAnnotationResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListTasksResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -10882,14 +18092,14 @@ func (p *TraceServiceDeleteManualAnnotationResult) FastRead(buf []byte) (int, er ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListTasksResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteManualAnnotationResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceListTasksResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewDeleteManualAnnotationResponse() + _field := NewListTasksResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -10899,11 +18109,11 @@ func (p *TraceServiceDeleteManualAnnotationResult) FastReadField0(buf []byte) (i return offset, nil } -func (p *TraceServiceDeleteManualAnnotationResult) FastWrite(buf []byte) int { +func (p *TraceServiceListTasksResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListTasksResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -10912,7 +18122,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) FastWriteNocopy(buf []byte, w return offset } -func (p *TraceServiceDeleteManualAnnotationResult) BLength() int { +func (p *TraceServiceListTasksResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -10921,7 +18131,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) BLength() int { return l } -func (p *TraceServiceDeleteManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListTasksResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -10930,7 +18140,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) fastWriteField0(buf []byte, w return offset } -func (p *TraceServiceDeleteManualAnnotationResult) field0Length() int { +func (p *TraceServiceListTasksResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -10939,15 +18149,15 @@ func (p *TraceServiceDeleteManualAnnotationResult) field0Length() int { return l } -func (p *TraceServiceDeleteManualAnnotationResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteManualAnnotationResult) +func (p *TraceServiceListTasksResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListTasksResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *DeleteManualAnnotationResponse + var _success *ListTasksResponse if src.Success != nil { - _success = &DeleteManualAnnotationResponse{} + _success = &ListTasksResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -10957,7 +18167,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) DeepCopy(s interface{}) error return nil } -func (p *TraceServiceListAnnotationsArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceGetTaskArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -11001,14 +18211,14 @@ func (p *TraceServiceListAnnotationsArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTaskArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListAnnotationsArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceGetTaskArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewListAnnotationsRequest() + _field := NewGetTaskRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -11018,11 +18228,11 @@ func (p *TraceServiceListAnnotationsArgs) FastReadField1(buf []byte) (int, error return offset, nil } -func (p *TraceServiceListAnnotationsArgs) FastWrite(buf []byte) int { +func (p *TraceServiceGetTaskArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListAnnotationsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTaskArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -11031,7 +18241,7 @@ func (p *TraceServiceListAnnotationsArgs) FastWriteNocopy(buf []byte, w thrift.N return offset } -func (p *TraceServiceListAnnotationsArgs) BLength() int { +func (p *TraceServiceGetTaskArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -11040,29 +18250,29 @@ func (p *TraceServiceListAnnotationsArgs) BLength() int { return l } -func (p *TraceServiceListAnnotationsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTaskArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceListAnnotationsArgs) field1Length() int { +func (p *TraceServiceGetTaskArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceListAnnotationsArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListAnnotationsArgs) +func (p *TraceServiceGetTaskArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTaskArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ListAnnotationsRequest + var _req *GetTaskRequest if src.Req != nil { - _req = &ListAnnotationsRequest{} + _req = &GetTaskRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -11072,7 +18282,7 @@ func (p *TraceServiceListAnnotationsArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListAnnotationsResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceGetTaskResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -11116,14 +18326,14 @@ func (p *TraceServiceListAnnotationsResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTaskResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListAnnotationsResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceGetTaskResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewListAnnotationsResponse() + _field := NewGetTaskResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -11133,11 +18343,11 @@ func (p *TraceServiceListAnnotationsResult) FastReadField0(buf []byte) (int, err return offset, nil } -func (p *TraceServiceListAnnotationsResult) FastWrite(buf []byte) int { +func (p *TraceServiceGetTaskResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListAnnotationsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTaskResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -11146,7 +18356,7 @@ func (p *TraceServiceListAnnotationsResult) FastWriteNocopy(buf []byte, w thrift return offset } -func (p *TraceServiceListAnnotationsResult) BLength() int { +func (p *TraceServiceGetTaskResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -11155,7 +18365,7 @@ func (p *TraceServiceListAnnotationsResult) BLength() int { return l } -func (p *TraceServiceListAnnotationsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTaskResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -11164,7 +18374,7 @@ func (p *TraceServiceListAnnotationsResult) fastWriteField0(buf []byte, w thrift return offset } -func (p *TraceServiceListAnnotationsResult) field0Length() int { +func (p *TraceServiceGetTaskResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -11173,15 +18383,15 @@ func (p *TraceServiceListAnnotationsResult) field0Length() int { return l } -func (p *TraceServiceListAnnotationsResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListAnnotationsResult) +func (p *TraceServiceGetTaskResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTaskResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ListAnnotationsResponse + var _success *GetTaskResponse if src.Success != nil { - _success = &ListAnnotationsResponse{} + _success = &GetTaskResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -11294,3 +18504,67 @@ func (p *TraceServiceListAnnotationsArgs) GetFirstArgument() interface{} { func (p *TraceServiceListAnnotationsResult) GetResult() interface{} { return p.Success } + +func (p *TraceServiceChangeEvaluatorScoreArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TraceServiceChangeEvaluatorScoreResult) GetResult() interface{} { + return p.Success +} + +func (p *TraceServiceListAnnotationEvaluatorsArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TraceServiceListAnnotationEvaluatorsResult) GetResult() interface{} { + return p.Success +} + +func (p *TraceServiceExtractSpanInfoArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TraceServiceExtractSpanInfoResult) GetResult() interface{} { + return p.Success +} + +func (p *TraceServiceCheckTaskNameArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TraceServiceCheckTaskNameResult) GetResult() interface{} { + return p.Success +} + +func (p *TraceServiceCreateTaskArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TraceServiceCreateTaskResult) GetResult() interface{} { + return p.Success +} + +func (p *TraceServiceUpdateTaskArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TraceServiceUpdateTaskResult) GetResult() interface{} { + return p.Success +} + +func (p *TraceServiceListTasksArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TraceServiceListTasksResult) GetResult() interface{} { + return p.Success +} + +func (p *TraceServiceGetTaskArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TraceServiceGetTaskResult) GetResult() interface{} { + return p.Success +} diff --git a/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go b/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go index 15ba6d0a7..e0f65e5cf 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go +++ b/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go @@ -24,6 +24,14 @@ type Client interface { UpdateManualAnnotation(ctx context.Context, req *trace.UpdateManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.UpdateManualAnnotationResponse, err error) DeleteManualAnnotation(ctx context.Context, req *trace.DeleteManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.DeleteManualAnnotationResponse, err error) ListAnnotations(ctx context.Context, req *trace.ListAnnotationsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationsResponse, err error) + ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) + ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) + ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) + CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) + CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) + UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) + ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) + GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) } // NewClient creates a client for the service defined in IDL. @@ -119,3 +127,43 @@ func (p *kTraceServiceClient) ListAnnotations(ctx context.Context, req *trace.Li ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.ListAnnotations(ctx, req) } + +func (p *kTraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ChangeEvaluatorScore(ctx, req) +} + +func (p *kTraceServiceClient) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ListAnnotationEvaluators(ctx, req) +} + +func (p *kTraceServiceClient) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ExtractSpanInfo(ctx, req) +} + +func (p *kTraceServiceClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CheckTaskName(ctx, req) +} + +func (p *kTraceServiceClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CreateTask(ctx, req) +} + +func (p *kTraceServiceClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.UpdateTask(ctx, req) +} + +func (p *kTraceServiceClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ListTasks(ctx, req) +} + +func (p *kTraceServiceClient) GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.GetTask(ctx, req) +} diff --git a/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go b/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go index 637a9c56b..1c1c1476f 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go +++ b/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go @@ -104,6 +104,62 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), + "ChangeEvaluatorScore": kitex.NewMethodInfo( + changeEvaluatorScoreHandler, + newTraceServiceChangeEvaluatorScoreArgs, + newTraceServiceChangeEvaluatorScoreResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ListAnnotationEvaluators": kitex.NewMethodInfo( + listAnnotationEvaluatorsHandler, + newTraceServiceListAnnotationEvaluatorsArgs, + newTraceServiceListAnnotationEvaluatorsResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ExtractSpanInfo": kitex.NewMethodInfo( + extractSpanInfoHandler, + newTraceServiceExtractSpanInfoArgs, + newTraceServiceExtractSpanInfoResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "CheckTaskName": kitex.NewMethodInfo( + checkTaskNameHandler, + newTraceServiceCheckTaskNameArgs, + newTraceServiceCheckTaskNameResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "CreateTask": kitex.NewMethodInfo( + createTaskHandler, + newTraceServiceCreateTaskArgs, + newTraceServiceCreateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "UpdateTask": kitex.NewMethodInfo( + updateTaskHandler, + newTraceServiceUpdateTaskArgs, + newTraceServiceUpdateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ListTasks": kitex.NewMethodInfo( + listTasksHandler, + newTraceServiceListTasksArgs, + newTraceServiceListTasksResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "GetTask": kitex.NewMethodInfo( + getTaskHandler, + newTraceServiceGetTaskArgs, + newTraceServiceGetTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), } var ( @@ -384,6 +440,158 @@ func newTraceServiceListAnnotationsResult() interface{} { return trace.NewTraceServiceListAnnotationsResult() } +func changeEvaluatorScoreHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceChangeEvaluatorScoreArgs) + realResult := result.(*trace.TraceServiceChangeEvaluatorScoreResult) + success, err := handler.(trace.TraceService).ChangeEvaluatorScore(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceChangeEvaluatorScoreArgs() interface{} { + return trace.NewTraceServiceChangeEvaluatorScoreArgs() +} + +func newTraceServiceChangeEvaluatorScoreResult() interface{} { + return trace.NewTraceServiceChangeEvaluatorScoreResult() +} + +func listAnnotationEvaluatorsHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceListAnnotationEvaluatorsArgs) + realResult := result.(*trace.TraceServiceListAnnotationEvaluatorsResult) + success, err := handler.(trace.TraceService).ListAnnotationEvaluators(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceListAnnotationEvaluatorsArgs() interface{} { + return trace.NewTraceServiceListAnnotationEvaluatorsArgs() +} + +func newTraceServiceListAnnotationEvaluatorsResult() interface{} { + return trace.NewTraceServiceListAnnotationEvaluatorsResult() +} + +func extractSpanInfoHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceExtractSpanInfoArgs) + realResult := result.(*trace.TraceServiceExtractSpanInfoResult) + success, err := handler.(trace.TraceService).ExtractSpanInfo(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceExtractSpanInfoArgs() interface{} { + return trace.NewTraceServiceExtractSpanInfoArgs() +} + +func newTraceServiceExtractSpanInfoResult() interface{} { + return trace.NewTraceServiceExtractSpanInfoResult() +} + +func checkTaskNameHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceCheckTaskNameArgs) + realResult := result.(*trace.TraceServiceCheckTaskNameResult) + success, err := handler.(trace.TraceService).CheckTaskName(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceCheckTaskNameArgs() interface{} { + return trace.NewTraceServiceCheckTaskNameArgs() +} + +func newTraceServiceCheckTaskNameResult() interface{} { + return trace.NewTraceServiceCheckTaskNameResult() +} + +func createTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceCreateTaskArgs) + realResult := result.(*trace.TraceServiceCreateTaskResult) + success, err := handler.(trace.TraceService).CreateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceCreateTaskArgs() interface{} { + return trace.NewTraceServiceCreateTaskArgs() +} + +func newTraceServiceCreateTaskResult() interface{} { + return trace.NewTraceServiceCreateTaskResult() +} + +func updateTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceUpdateTaskArgs) + realResult := result.(*trace.TraceServiceUpdateTaskResult) + success, err := handler.(trace.TraceService).UpdateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceUpdateTaskArgs() interface{} { + return trace.NewTraceServiceUpdateTaskArgs() +} + +func newTraceServiceUpdateTaskResult() interface{} { + return trace.NewTraceServiceUpdateTaskResult() +} + +func listTasksHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceListTasksArgs) + realResult := result.(*trace.TraceServiceListTasksResult) + success, err := handler.(trace.TraceService).ListTasks(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceListTasksArgs() interface{} { + return trace.NewTraceServiceListTasksArgs() +} + +func newTraceServiceListTasksResult() interface{} { + return trace.NewTraceServiceListTasksResult() +} + +func getTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceGetTaskArgs) + realResult := result.(*trace.TraceServiceGetTaskResult) + success, err := handler.(trace.TraceService).GetTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceGetTaskArgs() interface{} { + return trace.NewTraceServiceGetTaskArgs() +} + +func newTraceServiceGetTaskResult() interface{} { + return trace.NewTraceServiceGetTaskResult() +} + type kClient struct { c client.Client sc client.Streaming @@ -525,3 +733,83 @@ func (p *kClient) ListAnnotations(ctx context.Context, req *trace.ListAnnotation } return _result.GetSuccess(), nil } + +func (p *kClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) (r *trace.ChangeEvaluatorScoreResponse, err error) { + var _args trace.TraceServiceChangeEvaluatorScoreArgs + _args.Req = req + var _result trace.TraceServiceChangeEvaluatorScoreResult + if err = p.c.Call(ctx, "ChangeEvaluatorScore", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest) (r *trace.ListAnnotationEvaluatorsResponse, err error) { + var _args trace.TraceServiceListAnnotationEvaluatorsArgs + _args.Req = req + var _result trace.TraceServiceListAnnotationEvaluatorsResult + if err = p.c.Call(ctx, "ListAnnotationEvaluators", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest) (r *trace.ExtractSpanInfoResponse, err error) { + var _args trace.TraceServiceExtractSpanInfoArgs + _args.Req = req + var _result trace.TraceServiceExtractSpanInfoResult + if err = p.c.Call(ctx, "ExtractSpanInfo", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest) (r *trace.CheckTaskNameResponse, err error) { + var _args trace.TraceServiceCheckTaskNameArgs + _args.Req = req + var _result trace.TraceServiceCheckTaskNameResult + if err = p.c.Call(ctx, "CheckTaskName", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest) (r *trace.CreateTaskResponse, err error) { + var _args trace.TraceServiceCreateTaskArgs + _args.Req = req + var _result trace.TraceServiceCreateTaskResult + if err = p.c.Call(ctx, "CreateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest) (r *trace.UpdateTaskResponse, err error) { + var _args trace.TraceServiceUpdateTaskArgs + _args.Req = req + var _result trace.TraceServiceUpdateTaskResult + if err = p.c.Call(ctx, "UpdateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest) (r *trace.ListTasksResponse, err error) { + var _args trace.TraceServiceListTasksArgs + _args.Req = req + var _result trace.TraceServiceListTasksResult + if err = p.c.Call(ctx, "ListTasks", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) GetTask(ctx context.Context, req *trace.GetTaskRequest) (r *trace.GetTaskResponse, err error) { + var _args trace.TraceServiceGetTaskArgs + _args.Req = req + var _result trace.TraceServiceGetTaskResult + if err = p.c.Call(ctx, "GetTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} diff --git a/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go b/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go index 71ce701a1..aa3b3401b 100644 --- a/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go +++ b/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go @@ -295,6 +295,174 @@ func (l *LocalTraceService) ListAnnotations(ctx context.Context, req *trace.List return result.GetSuccess(), nil } +func (l *LocalTraceService) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (*trace.ChangeEvaluatorScoreResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*trace.TraceServiceChangeEvaluatorScoreArgs) + result := out.(*trace.TraceServiceChangeEvaluatorScoreResult) + resp, err := l.impl.ChangeEvaluatorScore(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &trace.TraceServiceChangeEvaluatorScoreArgs{Req: req} + result := &trace.TraceServiceChangeEvaluatorScoreResult{} + ctx = l.injectRPCInfo(ctx, "ChangeEvaluatorScore") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTraceService) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (*trace.ListAnnotationEvaluatorsResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*trace.TraceServiceListAnnotationEvaluatorsArgs) + result := out.(*trace.TraceServiceListAnnotationEvaluatorsResult) + resp, err := l.impl.ListAnnotationEvaluators(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &trace.TraceServiceListAnnotationEvaluatorsArgs{Req: req} + result := &trace.TraceServiceListAnnotationEvaluatorsResult{} + ctx = l.injectRPCInfo(ctx, "ListAnnotationEvaluators") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTraceService) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (*trace.ExtractSpanInfoResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*trace.TraceServiceExtractSpanInfoArgs) + result := out.(*trace.TraceServiceExtractSpanInfoResult) + resp, err := l.impl.ExtractSpanInfo(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &trace.TraceServiceExtractSpanInfoArgs{Req: req} + result := &trace.TraceServiceExtractSpanInfoResult{} + ctx = l.injectRPCInfo(ctx, "ExtractSpanInfo") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTraceService) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (*trace.CheckTaskNameResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*trace.TraceServiceCheckTaskNameArgs) + result := out.(*trace.TraceServiceCheckTaskNameResult) + resp, err := l.impl.CheckTaskName(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &trace.TraceServiceCheckTaskNameArgs{Req: req} + result := &trace.TraceServiceCheckTaskNameResult{} + ctx = l.injectRPCInfo(ctx, "CheckTaskName") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTraceService) CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (*trace.CreateTaskResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*trace.TraceServiceCreateTaskArgs) + result := out.(*trace.TraceServiceCreateTaskResult) + resp, err := l.impl.CreateTask(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &trace.TraceServiceCreateTaskArgs{Req: req} + result := &trace.TraceServiceCreateTaskResult{} + ctx = l.injectRPCInfo(ctx, "CreateTask") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTraceService) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (*trace.UpdateTaskResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*trace.TraceServiceUpdateTaskArgs) + result := out.(*trace.TraceServiceUpdateTaskResult) + resp, err := l.impl.UpdateTask(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &trace.TraceServiceUpdateTaskArgs{Req: req} + result := &trace.TraceServiceUpdateTaskResult{} + ctx = l.injectRPCInfo(ctx, "UpdateTask") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTraceService) ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (*trace.ListTasksResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*trace.TraceServiceListTasksArgs) + result := out.(*trace.TraceServiceListTasksResult) + resp, err := l.impl.ListTasks(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &trace.TraceServiceListTasksArgs{Req: req} + result := &trace.TraceServiceListTasksResult{} + ctx = l.injectRPCInfo(ctx, "ListTasks") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTraceService) GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (*trace.GetTaskResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*trace.TraceServiceGetTaskArgs) + result := out.(*trace.TraceServiceGetTaskResult) + resp, err := l.impl.GetTask(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &trace.TraceServiceGetTaskArgs{Req: req} + result := &trace.TraceServiceGetTaskResult{} + ctx = l.injectRPCInfo(ctx, "GetTask") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + func (l *LocalTraceService) injectRPCInfo(ctx context.Context, method string) context.Context { rpcStats := rpcinfo.AsMutableRPCStats(rpcinfo.NewRPCStats()) ri := rpcinfo.NewRPCInfo( diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index 6548534f2..aece22397 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -6,6 +6,7 @@ include "./domain/common.thrift" include "./domain/filter.thrift" include "./domain/view.thrift" include "./domain/annotation.thrift" +include "./domain/task.thrift" struct ListSpansRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id") @@ -227,6 +228,160 @@ struct ListAnnotationsResponse { 255: optional base.BaseResp BaseResp } +struct ChangeEvaluatorScoreRequest { + 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 2: required i64 evaluator_record_id (api.query="evaluator_record_id", vt.gt="0") + 3: required string span_id (api.query="span_id", vt.min_size="1") + 4: required i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.query="start_time", vt.gt="0") + 5: required annotation.Correction correction (api.query="correction") + + 255: optional base.Base Base +} + +struct ChangeEvaluatorScoreResponse { + 1: required annotation.Annotation annotation + + 255: optional base.BaseResp BaseResp +} + +struct AnnotationEvaluator { + 1: required i64 evaluator_version_id, + 2: required string evaluator_name, + 3: required string evaluator_version, +} + +struct ListAnnotationEvaluatorsRequest { + 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 2: optional string name (api.query = "name") + + 255: optional base.Base Base (api.none="true") +} + +struct ListAnnotationEvaluatorsResponse { + 1: required list evaluators + + 255: optional base.BaseResp BaseResp +} + +struct ExtractSpanInfoRequest { + 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 2: required string trace_id (api.query = "trace_id" vt.min_size = "1") + 3: required list span_ids (api.query="span_ids", vt.min_size="1", vt.max_size="500") + 4: optional i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.query="start_time", vt.gt="0") + 5: optional i64 end_time (api.js_conv='true', go.tag='json:"end_time"', api.query="end_time", vt.gt="0") + 6: optional common.PlatformType platform_type (api.body="platform_type") + 7: optional list field_mappings (vt.min_size="1", vt.max_size="100") + + 255: optional base.Base Base (api.none="true") +} + +struct FieldData { + 1: optional string key, + 2: optional string name, + 3: optional Content content, +} +typedef string ContentType + +const ContentType ContentType_Text = "Text" // 空间 +const ContentType ContentType_Image = "Image" +const ContentType ContentType_Audio = "Audio" +const ContentType ContentType_MultiPart = "MultiPart" + +struct Content { + 1: optional ContentType contentType (agw.key = "content_type" go.tag = "json:\"content_type\""), + 10: optional string text (agw.key = "text" go.tag = "json:\"text\""), + 11: optional Image image (agw.key = "image" go.tag = "json:\"image\""), // 图片内容 + 12: optional list multiPart (agw.key = "multi_part" go.tag = "json:\"multi_part\""), // 图文混排时,图文内容 +} + +struct Image { + 1: optional string name (agw.key = "name" go.tag = "json:\"name\"") + 2: optional string url (agw.key = "url" go.tag = "json:\"url\"") +} + +struct SpanInfo { + 1: required string span_id + 2: required list field_list +} +struct ExtractSpanInfoResponse { + 1: required list span_infos + + 255: optional base.BaseResp BaseResp +} + +struct CreateTaskRequest { + 1: required task.Task task (api.body = "task"), + + 255: optional base.Base base, +} + +struct CreateTaskResponse { + 1: optional i64 task_id (api.js_conv="true" api.body = "task_id"), + + 255: optional base.BaseResp BaseResp +} + +struct UpdateTaskRequest { + 1: required i64 task_id (api.js_conv="true" api.path = "task_id"), + 2: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 3: optional task.TaskStatus task_status (api.body = "task_status"), + 4: optional string description (api.body = "description"), + 5: optional task.EffectiveTime effective_time (api.body = "effective_time"), + 6: optional double sample_rate (api.body = "sample_rate"), + + 255: optional base.Base base, +} + +struct UpdateTaskResponse { + 255: optional base.BaseResp BaseResp +} +enum OrderType { + Unknown = 0 + Asc = 1 + Desc = 2 +} +struct ListTasksRequest { + 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 2: optional filter.TaskFilterFields task_filters (api.body = "task_filters"), + + 101: optional i32 limit (api.body = "limit") /* default 20 max 200 */ + 102: optional i32 offset (api.body = "offset") + 103: optional OrderType order_by (api.body = "order_by") + 255: optional base.Base base, +} + +struct ListTasksResponse { + 1: optional list tasks (api.body = "tasks"), + + 100: optional i64 total (api.js_conv="true" api.body = "total"), + 255: optional base.BaseResp BaseResp +} + +struct GetTaskRequest { + 1: required i64 task_id (api.path = "task_id" api.js_conv="true"), + 2: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + + 255: optional base.Base base, +} + +struct GetTaskResponse { + 1: optional task.Task task (api.body = "task"), + + 255: optional base.BaseResp BaseResp +} + +struct CheckTaskNameRequest { + 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 2: required string name (api.body='name') + 255: optional base.Base Base +} + +struct CheckTaskNameResponse { + 1: optional bool Pass (agw.key = 'pass') + 2: optional string Message (agw.key ='message') + 255: base.BaseResp BaseResp +} + service TraceService { ListSpansResponse ListSpans(1: ListSpansRequest req) (api.post = '/api/observability/v1/spans/list') GetTraceResponse GetTrace(1: GetTraceRequest req) (api.get = '/api/observability/v1/traces/:trace_id') @@ -241,4 +396,13 @@ service TraceService { UpdateManualAnnotationResponse UpdateManualAnnotation(1: UpdateManualAnnotationRequest req) (api.put = '/api/observability/v1/annotations/:annotation_id') DeleteManualAnnotationResponse DeleteManualAnnotation(1: DeleteManualAnnotationRequest req) (api.delete = '/api/observability/v1/annotations/:annotation_id') ListAnnotationsResponse ListAnnotations(1: ListAnnotationsRequest req) (api.post = '/api/observability/v1/annotations/list') + + ChangeEvaluatorScoreResponse ChangeEvaluatorScore(1: ChangeEvaluatorScoreRequest req) (api.post = '/api/observability/v1/annotations/change_eEvaluator_sScore') + ListAnnotationEvaluatorsResponse ListAnnotationEvaluators(1: ListAnnotationEvaluatorsRequest req) (api.post = '/api/observability/v1/annotations/lis_annotation_evaluators') + ExtractSpanInfoResponse ExtractSpanInfo(1: ExtractSpanInfoRequest req) (api.post = '/api/observability/v1/traces/extract_span_info') + CheckTaskNameResponse CheckTaskName(1: CheckTaskNameRequest req) (api.get = '/api/observability/v1/tasks/check_name') + CreateTaskResponse CreateTask(1: CreateTaskRequest req) (api.post = '/api/observability/v1/tasks') + UpdateTaskResponse UpdateTask(1: UpdateTaskRequest req) (api.put = '/api/observability/v1/tasks/:task_id') + ListTasksResponse ListTasks(1: ListTasksRequest req) (api.post = '/api/observability/v1/tasks/list') + GetTaskResponse GetTask(1: GetTaskRequest req) (api.get = '/api/observability/v1/tasks/:task_id') } diff --git a/idl/thrift/coze/loop/observability/domain/filter.thrift b/idl/thrift/coze/loop/observability/domain/filter.thrift index 6c355da30..fb9bf3dcb 100644 --- a/idl/thrift/coze/loop/observability/domain/filter.thrift +++ b/idl/thrift/coze/loop/observability/domain/filter.thrift @@ -23,6 +23,14 @@ const FieldType FieldType_Long = "long" const FieldType FieldType_Double = "double" const FieldType FieldType_Bool = "bool" +typedef string TaskFieldName +const TaskFieldName TaskFieldName_TaskStatus = "task_status" +const TaskFieldName TaskFieldName_TaskName = "task_name" +const TaskFieldName TaskFieldName_TaskType = "task_type" +const TaskFieldName TaskFieldName_SampleRate = "sample_rate" +const TaskFieldName TaskFieldName_CreatedBy = "created_by" + + struct FilterFields { 1: optional QueryRelation query_and_or 2: required list filter_fields @@ -42,3 +50,17 @@ struct FieldOptions { 3: optional list f64_list 4: optional list string_list } + +struct TaskFilterFields { + 1: optional QueryRelation query_and_or + 2: required list filter_fields +} + +struct TaskFilterField { + 1: optional TaskFieldName field_name + 2: optional FieldType field_type + 3: optional list values + 4: optional QueryType query_type + 5: optional QueryRelation query_and_or + 6: optional TaskFilterField sub_filter +} \ No newline at end of file diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift new file mode 100644 index 000000000..5fd507f52 --- /dev/null +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -0,0 +1,100 @@ +namespace go coze.loop.observability.domain.task + +include "common.thrift" +include "filter.thrift" +include "../../evaluation/domain/eval_set.thrift" + +typedef string TimeUnit (ts.enum="true") +const TimeUnit TimeUnit_Day = "day" +const TimeUnit TimeUnit_Week = "week" + +typedef string TaskType (ts.enum="true") +const TaskType TaskType_AutoEval = "auto_evaluate" // 自动评测 + +typedef string TaskStatus (ts.enum="true") +const TaskStatus TaskStatus_Unstarted = "unstarted" // 未启动 +const TaskStatus TaskStatus_Running = "running" // 正在运行 +const TaskStatus TaskStatus_Failed = "failed" // 失败 +const TaskStatus TaskStatus_Success = "success" // 成功 +const TaskStatus TaskStatus_Pending = "pending" // 中止 +const TaskStatus TaskStatus_Disabled = "disabled" // 禁用 + +// Task +struct Task { + 1: optional i64 id // 任务 id + 2: required string name // 名称 + 3: optional string description // 描述 + 4: optional i64 workspace_id // 所在空间 + 5: required TaskType task_type // 类型 + 6: optional TaskStatus task_status // 状态 + 7: optional Rule rule // 规则 + 8: optional TaskConfig task_config // 配置 + 9: optional TaskDetail task_detail // 任务状态详情 + + 100: optional common.BaseInfo base_info // 基础信息 +} + +// Rule +struct Rule { + 1: optional filter.FilterFields span_filters // Span 过滤条件 + 2: optional Sampler sampler // 采样配置 + 3: optional EffectiveTime effective_time // 生效时间窗口 +} + +struct Sampler { + 1: optional double sample_rate // 采样率 + 2: optional i64 sample_size // 采样上限 + 3: optional bool is_cycle // 是否启动任务循环 + 4: optional i64 cycle_count // 采样单次上限 + 5: optional i64 cycle_interval // 循环间隔 + 6: optional TimeUnit cycle_time_unit // 循环时间单位 +} + +struct EffectiveTime { + 1: optional i64 start_at // ms timestamp + 2: optional i64 end_at // ms timestamp +} + + +// TaskConfig +struct TaskConfig { + 1: optional list auto_evaluate_configs // 配置的评测规则信息 +} + +struct AutoEvaluateConfig { + 1: required i64 evaluator_version_id + 2: required i64 evaluator_id + 3: required list field_mappings +} + +// TaskDetail +struct TaskDetail { + 1: optional i64 success_count + 2: optional i64 failed_count +} + +struct FieldMapping { + 1: required eval_set.FieldSchema field_schema // 数据集字段约束 + 2: required string trace_field_key + 3: required string trace_field_jsonpath + 4: optional string eval_set_name +} + +// TaskRun +struct TaskRun { + 1: optional i64 id // 任务 run id + 2: optional i64 workspace_id // 所在空间 + 3: optional i64 task_id // 任务 id + 4: optional TaskType task_type // 类型 + 5: required i64 start_run_at + 6: required i64 end_run_at + 7: optional TaskRunConfig task_run_config // 配置 +} +struct TaskRunConfig { + 1: optional AutoEvaluateRunConfig auto_evaluate_run_config // 自动评测对应的运行配置信息 +} +struct AutoEvaluateRunConfig { + 1: required i64 evaluator_version_id + 2: required i64 evaluator_id + 3: required list field_mappings +} \ No newline at end of file From a19846281cd8c558109cdb579268a86db5174424 Mon Sep 17 00:00:00 2001 From: Coda Date: Wed, 27 Aug 2025 11:30:32 +0800 Subject: [PATCH 002/462] feat: [Coda] implement CreateTask method based on CreateView pattern --- .gitignore | 1 + .../observability/application/trace.go | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/.gitignore b/.gitignore index ed95ade69..6ec21f16a 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ venv/ release/deployment/helm-chart/umbrella/charts/ release/deployment/helm-chart/umbrella/Chart.lock +.coda/ diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index ce88eb654..f131ede77 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -742,3 +742,61 @@ func (t *TraceApplication) getAnnoDisplayInfo(ctx context.Context, workspaceId i _ = g.Wait() return } + +func (t *TraceApplication) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) (*trace.ChangeEvaluatorScoreResponse, error) { + return +} +func (t *TraceApplication) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest) (*trace.ListAnnotationEvaluatorsResponse, error) { + return +} +func (t *TraceApplication) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest) (*trace.ExtractSpanInfoResponse, error) { + return +} +func (t *TraceApplication) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest) (*trace.CheckTaskNameResponse, error) { + return +} +func (t *TraceApplication) CreateTask(ctx context.Context, req *trace.CreateTaskRequest) (*trace.CreateTaskResponse, error) { + // 参数验证 + if req == nil { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + } else if req.GetWorkspaceID() <= 0 { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + } else if req.TaskName == "" { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid task_name")) + } + + // 权限检查 - 假设使用类似于CreateView的权限检查模式 + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskCreate, // 假设有这样的权限动作 + strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + return nil, err + } + + // 获取用户ID + userID := session.UserIDInCtxOrEmpty(ctx) + if userID == "" { + return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + } + + // 数据转换 - 将DTO转换为DO/PO + taskPO := tconv.CreateTaskDTO2PO(req, userID) // 假设有这样的转换函数 + + // 调用服务层或Repository创建任务 + id, err := t.taskRepo.CreateTask(ctx, taskPO) // 假设有taskRepo + if err != nil { + return nil, err + } + + return &trace.CreateTaskResponse{ + ID: id, + }, nil +} +func (t *TraceApplication) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest) (*trace.UpdateTaskResponse, error) { + return +} +func (t *TraceApplication) ListTasks(ctx context.Context, req *trace.ListTasksRequest) (*trace.ListTasksResponse, error) { + return +} +func (t *TraceApplication) GetTask(ctx context.Context, req *trace.GetTaskRequest) (*trace.GetTaskResponse, error) { + return +} \ No newline at end of file From 9cb0440d4769d3afc88ac8f23775d6acfc4a5d1b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 27 Aug 2025 16:56:23 +0800 Subject: [PATCH 003/462] fix idl --- .../router/coze/loop/apis/coze.loop.apis.go | 9 - .../apis/observabilitytraceservice/client.go | 30 - .../observabilitytraceservice.go | 180 - .../observability/coze.loop.observability.go | 36 + .../k-coze.loop.observability.go | 2 + .../observabilitytaskservice/client.go | 73 + .../observabilitytaskservice.go | 240 + .../observabilitytaskservice/server.go | 25 + .../observabilitytraceservice/client.go | 30 - .../observabilitytraceservice.go | 180 - .../task/coze.loop.observability.task.go | 5511 +++++++++++ .../coze.loop.observability.task_validator.go | 135 + .../task/k-coze.loop.observability.task.go | 3652 +++++++ .../observability/task/taskservice/client.go | 73 + .../observability/task/taskservice/server.go | 25 + .../task/taskservice/taskservice.go | 239 + .../trace/coze.loop.observability.trace.go | 8501 +++-------------- ...coze.loop.observability.trace_validator.go | 112 - .../trace/k-coze.loop.observability.trace.go | 4452 +-------- .../trace/traceservice/client.go | 30 - .../trace/traceservice/traceservice.go | 180 - .../observability/lotask/local_taskservice.go | 140 + .../lotrace/local_traceservice.go | 105 - .../modules/observability/application/task.go | 203 + .../observability/application/trace.go | 54 +- .../domain/component/rpc/auth.go | 3 + .../coze.loop.observability.task.thrift | 86 + .../coze.loop.observability.thrift | 4 +- .../coze.loop.observability.trace.thrift | 77 - 29 files changed, 12401 insertions(+), 11986 deletions(-) create mode 100644 backend/kitex_gen/coze/loop/observability/observabilitytaskservice/client.go create mode 100644 backend/kitex_gen/coze/loop/observability/observabilitytaskservice/observabilitytaskservice.go create mode 100644 backend/kitex_gen/coze/loop/observability/observabilitytaskservice/server.go create mode 100644 backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go create mode 100644 backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task_validator.go create mode 100644 backend/kitex_gen/coze/loop/observability/task/k-coze.loop.observability.task.go create mode 100644 backend/kitex_gen/coze/loop/observability/task/taskservice/client.go create mode 100644 backend/kitex_gen/coze/loop/observability/task/taskservice/server.go create mode 100644 backend/kitex_gen/coze/loop/observability/task/taskservice/taskservice.go create mode 100644 backend/loop_gen/coze/loop/observability/lotask/local_taskservice.go create mode 100644 backend/modules/observability/application/task.go create mode 100644 idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index 52965b5f6..e716ab389 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -249,11 +249,6 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _annotations.POST("/change_eEvaluator_sScore", append(_changeevaluatorscoreMw(handler), apis.ChangeEvaluatorScore)...) _annotations.POST("/lis_annotation_evaluators", append(_listannotationevaluatorsMw(handler), apis.ListAnnotationEvaluators)...) _annotations.POST("/list", append(_listannotationsMw(handler), apis.ListAnnotations)...) - _v14.POST("/tasks", append(_tasksMw(handler), apis.CreateTask)...) - _tasks := _v14.Group("/tasks", _tasksMw(handler)...) - _tasks.POST("/list", append(_listtasksMw(handler), apis.ListTasks)...) - _tasks.GET("/:task_id", append(_gettaskMw(handler), apis.GetTask)...) - _tasks.PUT("/:task_id", append(_updatetaskMw(handler), apis.UpdateTask)...) _v14.POST("/views", append(_viewsMw(handler), apis.CreateView)...) _views := _v14.Group("/views", _viewsMw(handler)...) _views.POST("/list", append(_listviewsMw(handler), apis.ListViews)...) @@ -263,10 +258,6 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _spans := _v14.Group("/spans", _spansMw(handler)...) _spans.POST("/list", append(_listspansMw(handler), apis.ListSpans)...) } - { - _tasks0 := _v14.Group("/tasks", _tasks0Mw(handler)...) - _tasks0.GET("/check_name", append(_checktasknameMw(handler), apis.CheckTaskName)...) - } { _traces := _v14.Group("/traces", _tracesMw(handler)...) _traces.POST("/batch_get_advance_info", append(_batchgettracesadvanceinfoMw(handler), apis.BatchGetTracesAdvanceInfo)...) diff --git a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go index 5d440462a..5894526dd 100644 --- a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go +++ b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go @@ -27,11 +27,6 @@ type Client interface { ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) - CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) - CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) - UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) - ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) - GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) } // NewClient creates a client for the service defined in IDL. @@ -142,28 +137,3 @@ func (p *kObservabilityTraceServiceClient) ExtractSpanInfo(ctx context.Context, ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.ExtractSpanInfo(ctx, req) } - -func (p *kObservabilityTraceServiceClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.CheckTaskName(ctx, req) -} - -func (p *kObservabilityTraceServiceClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.CreateTask(ctx, req) -} - -func (p *kObservabilityTraceServiceClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.UpdateTask(ctx, req) -} - -func (p *kObservabilityTraceServiceClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.ListTasks(ctx, req) -} - -func (p *kObservabilityTraceServiceClient) GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.GetTask(ctx, req) -} diff --git a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go index ba260cf0f..34765c415 100644 --- a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go +++ b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go @@ -126,41 +126,6 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), - "CheckTaskName": kitex.NewMethodInfo( - checkTaskNameHandler, - newTraceServiceCheckTaskNameArgs, - newTraceServiceCheckTaskNameResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "CreateTask": kitex.NewMethodInfo( - createTaskHandler, - newTraceServiceCreateTaskArgs, - newTraceServiceCreateTaskResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "UpdateTask": kitex.NewMethodInfo( - updateTaskHandler, - newTraceServiceUpdateTaskArgs, - newTraceServiceUpdateTaskResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "ListTasks": kitex.NewMethodInfo( - listTasksHandler, - newTraceServiceListTasksArgs, - newTraceServiceListTasksResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "GetTask": kitex.NewMethodInfo( - getTaskHandler, - newTraceServiceGetTaskArgs, - newTraceServiceGetTaskResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), } var ( @@ -498,101 +463,6 @@ func newTraceServiceExtractSpanInfoResult() interface{} { return trace.NewTraceServiceExtractSpanInfoResult() } -func checkTaskNameHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceCheckTaskNameArgs) - realResult := result.(*trace.TraceServiceCheckTaskNameResult) - success, err := handler.(trace.TraceService).CheckTaskName(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceCheckTaskNameArgs() interface{} { - return trace.NewTraceServiceCheckTaskNameArgs() -} - -func newTraceServiceCheckTaskNameResult() interface{} { - return trace.NewTraceServiceCheckTaskNameResult() -} - -func createTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceCreateTaskArgs) - realResult := result.(*trace.TraceServiceCreateTaskResult) - success, err := handler.(trace.TraceService).CreateTask(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceCreateTaskArgs() interface{} { - return trace.NewTraceServiceCreateTaskArgs() -} - -func newTraceServiceCreateTaskResult() interface{} { - return trace.NewTraceServiceCreateTaskResult() -} - -func updateTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceUpdateTaskArgs) - realResult := result.(*trace.TraceServiceUpdateTaskResult) - success, err := handler.(trace.TraceService).UpdateTask(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceUpdateTaskArgs() interface{} { - return trace.NewTraceServiceUpdateTaskArgs() -} - -func newTraceServiceUpdateTaskResult() interface{} { - return trace.NewTraceServiceUpdateTaskResult() -} - -func listTasksHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceListTasksArgs) - realResult := result.(*trace.TraceServiceListTasksResult) - success, err := handler.(trace.TraceService).ListTasks(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceListTasksArgs() interface{} { - return trace.NewTraceServiceListTasksArgs() -} - -func newTraceServiceListTasksResult() interface{} { - return trace.NewTraceServiceListTasksResult() -} - -func getTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceGetTaskArgs) - realResult := result.(*trace.TraceServiceGetTaskResult) - success, err := handler.(trace.TraceService).GetTask(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceGetTaskArgs() interface{} { - return trace.NewTraceServiceGetTaskArgs() -} - -func newTraceServiceGetTaskResult() interface{} { - return trace.NewTraceServiceGetTaskResult() -} - type kClient struct { c client.Client sc client.Streaming @@ -764,53 +634,3 @@ func (p *kClient) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInf } return _result.GetSuccess(), nil } - -func (p *kClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest) (r *trace.CheckTaskNameResponse, err error) { - var _args trace.TraceServiceCheckTaskNameArgs - _args.Req = req - var _result trace.TraceServiceCheckTaskNameResult - if err = p.c.Call(ctx, "CheckTaskName", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest) (r *trace.CreateTaskResponse, err error) { - var _args trace.TraceServiceCreateTaskArgs - _args.Req = req - var _result trace.TraceServiceCreateTaskResult - if err = p.c.Call(ctx, "CreateTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest) (r *trace.UpdateTaskResponse, err error) { - var _args trace.TraceServiceUpdateTaskArgs - _args.Req = req - var _result trace.TraceServiceUpdateTaskResult - if err = p.c.Call(ctx, "UpdateTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest) (r *trace.ListTasksResponse, err error) { - var _args trace.TraceServiceListTasksArgs - _args.Req = req - var _result trace.TraceServiceListTasksResult - if err = p.c.Call(ctx, "ListTasks", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) GetTask(ctx context.Context, req *trace.GetTaskRequest) (r *trace.GetTaskResponse, err error) { - var _args trace.TraceServiceGetTaskArgs - _args.Req = req - var _result trace.TraceServiceGetTaskResult - if err = p.c.Call(ctx, "GetTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} diff --git a/backend/kitex_gen/coze/loop/observability/coze.loop.observability.go b/backend/kitex_gen/coze/loop/observability/coze.loop.observability.go index b5816e39c..50831b31c 100644 --- a/backend/kitex_gen/coze/loop/observability/coze.loop.observability.go +++ b/backend/kitex_gen/coze/loop/observability/coze.loop.observability.go @@ -5,6 +5,7 @@ package observability import ( "github.com/apache/thrift/lib/go/thrift" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/openapi" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" ) @@ -60,6 +61,32 @@ func NewObservabilityOpenAPIServiceClient(c thrift.TClient) *ObservabilityOpenAP } } +type ObservabilityTaskService interface { + task.TaskService +} + +type ObservabilityTaskServiceClient struct { + *task.TaskServiceClient +} + +func NewObservabilityTaskServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *ObservabilityTaskServiceClient { + return &ObservabilityTaskServiceClient{ + TaskServiceClient: task.NewTaskServiceClientFactory(t, f), + } +} + +func NewObservabilityTaskServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *ObservabilityTaskServiceClient { + return &ObservabilityTaskServiceClient{ + TaskServiceClient: task.NewTaskServiceClientProtocol(t, iprot, oprot), + } +} + +func NewObservabilityTaskServiceClient(c thrift.TClient) *ObservabilityTaskServiceClient { + return &ObservabilityTaskServiceClient{ + TaskServiceClient: task.NewTaskServiceClient(c), + } +} + type ObservabilityTraceServiceProcessor struct { *trace.TraceServiceProcessor } @@ -77,3 +104,12 @@ func NewObservabilityOpenAPIServiceProcessor(handler ObservabilityOpenAPIService self := &ObservabilityOpenAPIServiceProcessor{openapi.NewOpenAPIServiceProcessor(handler)} return self } + +type ObservabilityTaskServiceProcessor struct { + *task.TaskServiceProcessor +} + +func NewObservabilityTaskServiceProcessor(handler ObservabilityTaskService) *ObservabilityTaskServiceProcessor { + self := &ObservabilityTaskServiceProcessor{task.NewTaskServiceProcessor(handler)} + return self +} diff --git a/backend/kitex_gen/coze/loop/observability/k-coze.loop.observability.go b/backend/kitex_gen/coze/loop/observability/k-coze.loop.observability.go index 30ba0d9c4..04e1f19b8 100644 --- a/backend/kitex_gen/coze/loop/observability/k-coze.loop.observability.go +++ b/backend/kitex_gen/coze/loop/observability/k-coze.loop.observability.go @@ -11,11 +11,13 @@ import ( "github.com/cloudwego/gopkg/protocol/thrift" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/openapi" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" ) var ( _ = openapi.KitexUnusedProtection + _ = task.KitexUnusedProtection _ = trace.KitexUnusedProtection ) diff --git a/backend/kitex_gen/coze/loop/observability/observabilitytaskservice/client.go b/backend/kitex_gen/coze/loop/observability/observabilitytaskservice/client.go new file mode 100644 index 000000000..a8e4d3beb --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/observabilitytaskservice/client.go @@ -0,0 +1,73 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. + +package observabilitytaskservice + +import ( + "context" + client "github.com/cloudwego/kitex/client" + callopt "github.com/cloudwego/kitex/client/callopt" + task "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" +) + +// Client is designed to provide IDL-compatible methods with call-option parameter for kitex framework. +type Client interface { + CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest, callOptions ...callopt.Option) (r *task.CheckTaskNameResponse, err error) + CreateTask(ctx context.Context, req *task.CreateTaskRequest, callOptions ...callopt.Option) (r *task.CreateTaskResponse, err error) + UpdateTask(ctx context.Context, req *task.UpdateTaskRequest, callOptions ...callopt.Option) (r *task.UpdateTaskResponse, err error) + ListTasks(ctx context.Context, req *task.ListTasksRequest, callOptions ...callopt.Option) (r *task.ListTasksResponse, err error) + GetTask(ctx context.Context, req *task.GetTaskRequest, callOptions ...callopt.Option) (r *task.GetTaskResponse, err error) +} + +// NewClient creates a client for the service defined in IDL. +func NewClient(destService string, opts ...client.Option) (Client, error) { + var options []client.Option + options = append(options, client.WithDestService(destService)) + + options = append(options, opts...) + + kc, err := client.NewClient(serviceInfo(), options...) + if err != nil { + return nil, err + } + return &kObservabilityTaskServiceClient{ + kClient: newServiceClient(kc), + }, nil +} + +// MustNewClient creates a client for the service defined in IDL. It panics if any error occurs. +func MustNewClient(destService string, opts ...client.Option) Client { + kc, err := NewClient(destService, opts...) + if err != nil { + panic(err) + } + return kc +} + +type kObservabilityTaskServiceClient struct { + *kClient +} + +func (p *kObservabilityTaskServiceClient) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest, callOptions ...callopt.Option) (r *task.CheckTaskNameResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CheckTaskName(ctx, req) +} + +func (p *kObservabilityTaskServiceClient) CreateTask(ctx context.Context, req *task.CreateTaskRequest, callOptions ...callopt.Option) (r *task.CreateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CreateTask(ctx, req) +} + +func (p *kObservabilityTaskServiceClient) UpdateTask(ctx context.Context, req *task.UpdateTaskRequest, callOptions ...callopt.Option) (r *task.UpdateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.UpdateTask(ctx, req) +} + +func (p *kObservabilityTaskServiceClient) ListTasks(ctx context.Context, req *task.ListTasksRequest, callOptions ...callopt.Option) (r *task.ListTasksResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ListTasks(ctx, req) +} + +func (p *kObservabilityTaskServiceClient) GetTask(ctx context.Context, req *task.GetTaskRequest, callOptions ...callopt.Option) (r *task.GetTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.GetTask(ctx, req) +} diff --git a/backend/kitex_gen/coze/loop/observability/observabilitytaskservice/observabilitytaskservice.go b/backend/kitex_gen/coze/loop/observability/observabilitytaskservice/observabilitytaskservice.go new file mode 100644 index 000000000..41b4f6709 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/observabilitytaskservice/observabilitytaskservice.go @@ -0,0 +1,240 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. + +package observabilitytaskservice + +import ( + "context" + "errors" + client "github.com/cloudwego/kitex/client" + kitex "github.com/cloudwego/kitex/pkg/serviceinfo" + observability "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability" + task "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" +) + +var errInvalidMessageType = errors.New("invalid message type for service method handler") + +var serviceMethods = map[string]kitex.MethodInfo{ + "CheckTaskName": kitex.NewMethodInfo( + checkTaskNameHandler, + newTaskServiceCheckTaskNameArgs, + newTaskServiceCheckTaskNameResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "CreateTask": kitex.NewMethodInfo( + createTaskHandler, + newTaskServiceCreateTaskArgs, + newTaskServiceCreateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "UpdateTask": kitex.NewMethodInfo( + updateTaskHandler, + newTaskServiceUpdateTaskArgs, + newTaskServiceUpdateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ListTasks": kitex.NewMethodInfo( + listTasksHandler, + newTaskServiceListTasksArgs, + newTaskServiceListTasksResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "GetTask": kitex.NewMethodInfo( + getTaskHandler, + newTaskServiceGetTaskArgs, + newTaskServiceGetTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), +} + +var ( + observabilityTaskServiceServiceInfo = NewServiceInfo() +) + +// for server +func serviceInfo() *kitex.ServiceInfo { + return observabilityTaskServiceServiceInfo +} + +// NewServiceInfo creates a new ServiceInfo +func NewServiceInfo() *kitex.ServiceInfo { + return newServiceInfo() +} + +func newServiceInfo() *kitex.ServiceInfo { + serviceName := "ObservabilityTaskService" + handlerType := (*observability.ObservabilityTaskService)(nil) + extra := map[string]interface{}{ + "PackageName": "observability", + } + svcInfo := &kitex.ServiceInfo{ + ServiceName: serviceName, + HandlerType: handlerType, + Methods: serviceMethods, + PayloadCodec: kitex.Thrift, + KiteXGenVersion: "v0.13.1", + Extra: extra, + } + return svcInfo +} + +func checkTaskNameHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceCheckTaskNameArgs) + realResult := result.(*task.TaskServiceCheckTaskNameResult) + success, err := handler.(task.TaskService).CheckTaskName(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceCheckTaskNameArgs() interface{} { + return task.NewTaskServiceCheckTaskNameArgs() +} + +func newTaskServiceCheckTaskNameResult() interface{} { + return task.NewTaskServiceCheckTaskNameResult() +} + +func createTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceCreateTaskArgs) + realResult := result.(*task.TaskServiceCreateTaskResult) + success, err := handler.(task.TaskService).CreateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceCreateTaskArgs() interface{} { + return task.NewTaskServiceCreateTaskArgs() +} + +func newTaskServiceCreateTaskResult() interface{} { + return task.NewTaskServiceCreateTaskResult() +} + +func updateTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceUpdateTaskArgs) + realResult := result.(*task.TaskServiceUpdateTaskResult) + success, err := handler.(task.TaskService).UpdateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceUpdateTaskArgs() interface{} { + return task.NewTaskServiceUpdateTaskArgs() +} + +func newTaskServiceUpdateTaskResult() interface{} { + return task.NewTaskServiceUpdateTaskResult() +} + +func listTasksHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceListTasksArgs) + realResult := result.(*task.TaskServiceListTasksResult) + success, err := handler.(task.TaskService).ListTasks(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceListTasksArgs() interface{} { + return task.NewTaskServiceListTasksArgs() +} + +func newTaskServiceListTasksResult() interface{} { + return task.NewTaskServiceListTasksResult() +} + +func getTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceGetTaskArgs) + realResult := result.(*task.TaskServiceGetTaskResult) + success, err := handler.(task.TaskService).GetTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceGetTaskArgs() interface{} { + return task.NewTaskServiceGetTaskArgs() +} + +func newTaskServiceGetTaskResult() interface{} { + return task.NewTaskServiceGetTaskResult() +} + +type kClient struct { + c client.Client + sc client.Streaming +} + +func newServiceClient(c client.Client) *kClient { + return &kClient{ + c: c, + sc: c.(client.Streaming), + } +} + +func (p *kClient) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest) (r *task.CheckTaskNameResponse, err error) { + var _args task.TaskServiceCheckTaskNameArgs + _args.Req = req + var _result task.TaskServiceCheckTaskNameResult + if err = p.c.Call(ctx, "CheckTaskName", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) CreateTask(ctx context.Context, req *task.CreateTaskRequest) (r *task.CreateTaskResponse, err error) { + var _args task.TaskServiceCreateTaskArgs + _args.Req = req + var _result task.TaskServiceCreateTaskResult + if err = p.c.Call(ctx, "CreateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) UpdateTask(ctx context.Context, req *task.UpdateTaskRequest) (r *task.UpdateTaskResponse, err error) { + var _args task.TaskServiceUpdateTaskArgs + _args.Req = req + var _result task.TaskServiceUpdateTaskResult + if err = p.c.Call(ctx, "UpdateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ListTasks(ctx context.Context, req *task.ListTasksRequest) (r *task.ListTasksResponse, err error) { + var _args task.TaskServiceListTasksArgs + _args.Req = req + var _result task.TaskServiceListTasksResult + if err = p.c.Call(ctx, "ListTasks", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) GetTask(ctx context.Context, req *task.GetTaskRequest) (r *task.GetTaskResponse, err error) { + var _args task.TaskServiceGetTaskArgs + _args.Req = req + var _result task.TaskServiceGetTaskResult + if err = p.c.Call(ctx, "GetTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} diff --git a/backend/kitex_gen/coze/loop/observability/observabilitytaskservice/server.go b/backend/kitex_gen/coze/loop/observability/observabilitytaskservice/server.go new file mode 100644 index 000000000..f7b67a1a6 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/observabilitytaskservice/server.go @@ -0,0 +1,25 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. +package observabilitytaskservice + +import ( + server "github.com/cloudwego/kitex/server" + observability "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability" +) + +// NewServer creates a server.Server with the given handler and options. +func NewServer(handler observability.ObservabilityTaskService, opts ...server.Option) server.Server { + var options []server.Option + + options = append(options, opts...) + options = append(options, server.WithCompatibleMiddlewareForUnary()) + + svr := server.NewServer(options...) + if err := svr.RegisterService(serviceInfo(), handler); err != nil { + panic(err) + } + return svr +} + +func RegisterService(svr server.Server, handler observability.ObservabilityTaskService, opts ...server.RegisterOption) error { + return svr.RegisterService(serviceInfo(), handler, opts...) +} diff --git a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go index 5d440462a..5894526dd 100644 --- a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go +++ b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go @@ -27,11 +27,6 @@ type Client interface { ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) - CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) - CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) - UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) - ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) - GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) } // NewClient creates a client for the service defined in IDL. @@ -142,28 +137,3 @@ func (p *kObservabilityTraceServiceClient) ExtractSpanInfo(ctx context.Context, ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.ExtractSpanInfo(ctx, req) } - -func (p *kObservabilityTraceServiceClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.CheckTaskName(ctx, req) -} - -func (p *kObservabilityTraceServiceClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.CreateTask(ctx, req) -} - -func (p *kObservabilityTraceServiceClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.UpdateTask(ctx, req) -} - -func (p *kObservabilityTraceServiceClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.ListTasks(ctx, req) -} - -func (p *kObservabilityTraceServiceClient) GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.GetTask(ctx, req) -} diff --git a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go index 179b44f52..d06fe43ea 100644 --- a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go +++ b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go @@ -126,41 +126,6 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), - "CheckTaskName": kitex.NewMethodInfo( - checkTaskNameHandler, - newTraceServiceCheckTaskNameArgs, - newTraceServiceCheckTaskNameResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "CreateTask": kitex.NewMethodInfo( - createTaskHandler, - newTraceServiceCreateTaskArgs, - newTraceServiceCreateTaskResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "UpdateTask": kitex.NewMethodInfo( - updateTaskHandler, - newTraceServiceUpdateTaskArgs, - newTraceServiceUpdateTaskResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "ListTasks": kitex.NewMethodInfo( - listTasksHandler, - newTraceServiceListTasksArgs, - newTraceServiceListTasksResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "GetTask": kitex.NewMethodInfo( - getTaskHandler, - newTraceServiceGetTaskArgs, - newTraceServiceGetTaskResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), } var ( @@ -498,101 +463,6 @@ func newTraceServiceExtractSpanInfoResult() interface{} { return trace.NewTraceServiceExtractSpanInfoResult() } -func checkTaskNameHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceCheckTaskNameArgs) - realResult := result.(*trace.TraceServiceCheckTaskNameResult) - success, err := handler.(trace.TraceService).CheckTaskName(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceCheckTaskNameArgs() interface{} { - return trace.NewTraceServiceCheckTaskNameArgs() -} - -func newTraceServiceCheckTaskNameResult() interface{} { - return trace.NewTraceServiceCheckTaskNameResult() -} - -func createTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceCreateTaskArgs) - realResult := result.(*trace.TraceServiceCreateTaskResult) - success, err := handler.(trace.TraceService).CreateTask(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceCreateTaskArgs() interface{} { - return trace.NewTraceServiceCreateTaskArgs() -} - -func newTraceServiceCreateTaskResult() interface{} { - return trace.NewTraceServiceCreateTaskResult() -} - -func updateTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceUpdateTaskArgs) - realResult := result.(*trace.TraceServiceUpdateTaskResult) - success, err := handler.(trace.TraceService).UpdateTask(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceUpdateTaskArgs() interface{} { - return trace.NewTraceServiceUpdateTaskArgs() -} - -func newTraceServiceUpdateTaskResult() interface{} { - return trace.NewTraceServiceUpdateTaskResult() -} - -func listTasksHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceListTasksArgs) - realResult := result.(*trace.TraceServiceListTasksResult) - success, err := handler.(trace.TraceService).ListTasks(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceListTasksArgs() interface{} { - return trace.NewTraceServiceListTasksArgs() -} - -func newTraceServiceListTasksResult() interface{} { - return trace.NewTraceServiceListTasksResult() -} - -func getTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceGetTaskArgs) - realResult := result.(*trace.TraceServiceGetTaskResult) - success, err := handler.(trace.TraceService).GetTask(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceGetTaskArgs() interface{} { - return trace.NewTraceServiceGetTaskArgs() -} - -func newTraceServiceGetTaskResult() interface{} { - return trace.NewTraceServiceGetTaskResult() -} - type kClient struct { c client.Client sc client.Streaming @@ -764,53 +634,3 @@ func (p *kClient) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInf } return _result.GetSuccess(), nil } - -func (p *kClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest) (r *trace.CheckTaskNameResponse, err error) { - var _args trace.TraceServiceCheckTaskNameArgs - _args.Req = req - var _result trace.TraceServiceCheckTaskNameResult - if err = p.c.Call(ctx, "CheckTaskName", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest) (r *trace.CreateTaskResponse, err error) { - var _args trace.TraceServiceCreateTaskArgs - _args.Req = req - var _result trace.TraceServiceCreateTaskResult - if err = p.c.Call(ctx, "CreateTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest) (r *trace.UpdateTaskResponse, err error) { - var _args trace.TraceServiceUpdateTaskArgs - _args.Req = req - var _result trace.TraceServiceUpdateTaskResult - if err = p.c.Call(ctx, "UpdateTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest) (r *trace.ListTasksResponse, err error) { - var _args trace.TraceServiceListTasksArgs - _args.Req = req - var _result trace.TraceServiceListTasksResult - if err = p.c.Call(ctx, "ListTasks", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) GetTask(ctx context.Context, req *trace.GetTaskRequest) (r *trace.GetTaskResponse, err error) { - var _args trace.TraceServiceGetTaskArgs - _args.Req = req - var _result trace.TraceServiceGetTaskResult - if err = p.c.Call(ctx, "GetTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} diff --git a/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go b/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go new file mode 100644 index 000000000..19ea4f89f --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go @@ -0,0 +1,5511 @@ +// Code generated by thriftgo (0.4.1). DO NOT EDIT. + +package task + +import ( + "context" + "database/sql" + "database/sql/driver" + "fmt" + "github.com/apache/thrift/lib/go/thrift" + "github.com/coze-dev/coze-loop/backend/kitex_gen/base" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "strings" +) + +type OrderType int64 + +const ( + OrderType_Unknown OrderType = 0 + OrderType_Asc OrderType = 1 + OrderType_Desc OrderType = 2 +) + +func (p OrderType) String() string { + switch p { + case OrderType_Unknown: + return "Unknown" + case OrderType_Asc: + return "Asc" + case OrderType_Desc: + return "Desc" + } + return "" +} + +func OrderTypeFromString(s string) (OrderType, error) { + switch s { + case "Unknown": + return OrderType_Unknown, nil + case "Asc": + return OrderType_Asc, nil + case "Desc": + return OrderType_Desc, nil + } + return OrderType(0), fmt.Errorf("not a valid OrderType string") +} + +func OrderTypePtr(v OrderType) *OrderType { return &v } +func (p *OrderType) Scan(value interface{}) (err error) { + var result sql.NullInt64 + err = result.Scan(value) + *p = OrderType(result.Int64) + return +} + +func (p *OrderType) Value() (driver.Value, error) { + if p == nil { + return nil, nil + } + return int64(*p), nil +} + +type CreateTaskRequest struct { + Task *task.Task `thrift:"task,1,required" frugal:"1,required,task.Task" form:"task,required" json:"task,required"` + Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` +} + +func NewCreateTaskRequest() *CreateTaskRequest { + return &CreateTaskRequest{} +} + +func (p *CreateTaskRequest) InitDefault() { +} + +var CreateTaskRequest_Task_DEFAULT *task.Task + +func (p *CreateTaskRequest) GetTask() (v *task.Task) { + if p == nil { + return + } + if !p.IsSetTask() { + return CreateTaskRequest_Task_DEFAULT + } + return p.Task +} + +var CreateTaskRequest_Base_DEFAULT *base.Base + +func (p *CreateTaskRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return CreateTaskRequest_Base_DEFAULT + } + return p.Base +} +func (p *CreateTaskRequest) SetTask(val *task.Task) { + p.Task = val +} +func (p *CreateTaskRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_CreateTaskRequest = map[int16]string{ + 1: "task", + 255: "base", +} + +func (p *CreateTaskRequest) IsSetTask() bool { + return p.Task != nil +} + +func (p *CreateTaskRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *CreateTaskRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetTask bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetTask = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetTask { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_CreateTaskRequest[fieldId])) +} + +func (p *CreateTaskRequest) ReadField1(iprot thrift.TProtocol) error { + _field := task.NewTask() + if err := _field.Read(iprot); err != nil { + return err + } + p.Task = _field + return nil +} +func (p *CreateTaskRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *CreateTaskRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateTaskRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *CreateTaskRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("task", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Task.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *CreateTaskRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *CreateTaskRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("CreateTaskRequest(%+v)", *p) + +} + +func (p *CreateTaskRequest) DeepEqual(ano *CreateTaskRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Task) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *CreateTaskRequest) Field1DeepEqual(src *task.Task) bool { + + if !p.Task.DeepEqual(src) { + return false + } + return true +} +func (p *CreateTaskRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type CreateTaskResponse struct { + TaskID *int64 `thrift:"task_id,1,optional" frugal:"1,optional,i64" form:"task_id" json:"task_id,string,omitempty"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewCreateTaskResponse() *CreateTaskResponse { + return &CreateTaskResponse{} +} + +func (p *CreateTaskResponse) InitDefault() { +} + +var CreateTaskResponse_TaskID_DEFAULT int64 + +func (p *CreateTaskResponse) GetTaskID() (v int64) { + if p == nil { + return + } + if !p.IsSetTaskID() { + return CreateTaskResponse_TaskID_DEFAULT + } + return *p.TaskID +} + +var CreateTaskResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *CreateTaskResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return CreateTaskResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *CreateTaskResponse) SetTaskID(val *int64) { + p.TaskID = val +} +func (p *CreateTaskResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_CreateTaskResponse = map[int16]string{ + 1: "task_id", + 255: "BaseResp", +} + +func (p *CreateTaskResponse) IsSetTaskID() bool { + return p.TaskID != nil +} + +func (p *CreateTaskResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *CreateTaskResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *CreateTaskResponse) ReadField1(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.TaskID = _field + return nil +} +func (p *CreateTaskResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *CreateTaskResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateTaskResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *CreateTaskResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskID() { + if err = oprot.WriteFieldBegin("task_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.TaskID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *CreateTaskResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *CreateTaskResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("CreateTaskResponse(%+v)", *p) + +} + +func (p *CreateTaskResponse) DeepEqual(ano *CreateTaskResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.TaskID) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *CreateTaskResponse) Field1DeepEqual(src *int64) bool { + + if p.TaskID == src { + return true + } else if p.TaskID == nil || src == nil { + return false + } + if *p.TaskID != *src { + return false + } + return true +} +func (p *CreateTaskResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type UpdateTaskRequest struct { + TaskID int64 `thrift:"task_id,1,required" frugal:"1,required,i64" json:"task_id,string,required" path:"task_id,required"` + WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" json:"workspace_id" form:"workspace_id,required" ` + TaskStatus *task.TaskStatus `thrift:"task_status,3,optional" frugal:"3,optional,string" form:"task_status" json:"task_status,omitempty"` + Description *string `thrift:"description,4,optional" frugal:"4,optional,string" form:"description" json:"description,omitempty"` + EffectiveTime *task.EffectiveTime `thrift:"effective_time,5,optional" frugal:"5,optional,task.EffectiveTime" form:"effective_time" json:"effective_time,omitempty"` + SampleRate *float64 `thrift:"sample_rate,6,optional" frugal:"6,optional,double" form:"sample_rate" json:"sample_rate,omitempty"` + Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` +} + +func NewUpdateTaskRequest() *UpdateTaskRequest { + return &UpdateTaskRequest{} +} + +func (p *UpdateTaskRequest) InitDefault() { +} + +func (p *UpdateTaskRequest) GetTaskID() (v int64) { + if p != nil { + return p.TaskID + } + return +} + +func (p *UpdateTaskRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} + +var UpdateTaskRequest_TaskStatus_DEFAULT task.TaskStatus + +func (p *UpdateTaskRequest) GetTaskStatus() (v task.TaskStatus) { + if p == nil { + return + } + if !p.IsSetTaskStatus() { + return UpdateTaskRequest_TaskStatus_DEFAULT + } + return *p.TaskStatus +} + +var UpdateTaskRequest_Description_DEFAULT string + +func (p *UpdateTaskRequest) GetDescription() (v string) { + if p == nil { + return + } + if !p.IsSetDescription() { + return UpdateTaskRequest_Description_DEFAULT + } + return *p.Description +} + +var UpdateTaskRequest_EffectiveTime_DEFAULT *task.EffectiveTime + +func (p *UpdateTaskRequest) GetEffectiveTime() (v *task.EffectiveTime) { + if p == nil { + return + } + if !p.IsSetEffectiveTime() { + return UpdateTaskRequest_EffectiveTime_DEFAULT + } + return p.EffectiveTime +} + +var UpdateTaskRequest_SampleRate_DEFAULT float64 + +func (p *UpdateTaskRequest) GetSampleRate() (v float64) { + if p == nil { + return + } + if !p.IsSetSampleRate() { + return UpdateTaskRequest_SampleRate_DEFAULT + } + return *p.SampleRate +} + +var UpdateTaskRequest_Base_DEFAULT *base.Base + +func (p *UpdateTaskRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return UpdateTaskRequest_Base_DEFAULT + } + return p.Base +} +func (p *UpdateTaskRequest) SetTaskID(val int64) { + p.TaskID = val +} +func (p *UpdateTaskRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *UpdateTaskRequest) SetTaskStatus(val *task.TaskStatus) { + p.TaskStatus = val +} +func (p *UpdateTaskRequest) SetDescription(val *string) { + p.Description = val +} +func (p *UpdateTaskRequest) SetEffectiveTime(val *task.EffectiveTime) { + p.EffectiveTime = val +} +func (p *UpdateTaskRequest) SetSampleRate(val *float64) { + p.SampleRate = val +} +func (p *UpdateTaskRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_UpdateTaskRequest = map[int16]string{ + 1: "task_id", + 2: "workspace_id", + 3: "task_status", + 4: "description", + 5: "effective_time", + 6: "sample_rate", + 255: "base", +} + +func (p *UpdateTaskRequest) IsSetTaskStatus() bool { + return p.TaskStatus != nil +} + +func (p *UpdateTaskRequest) IsSetDescription() bool { + return p.Description != nil +} + +func (p *UpdateTaskRequest) IsSetEffectiveTime() bool { + return p.EffectiveTime != nil +} + +func (p *UpdateTaskRequest) IsSetSampleRate() bool { + return p.SampleRate != nil +} + +func (p *UpdateTaskRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *UpdateTaskRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetTaskID bool = false + var issetWorkspaceID bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetTaskID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRING { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.DOUBLE { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetTaskID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetWorkspaceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_UpdateTaskRequest[fieldId])) +} + +func (p *UpdateTaskRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.TaskID = _field + return nil +} +func (p *UpdateTaskRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *UpdateTaskRequest) ReadField3(iprot thrift.TProtocol) error { + + var _field *task.TaskStatus + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.TaskStatus = _field + return nil +} +func (p *UpdateTaskRequest) ReadField4(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Description = _field + return nil +} +func (p *UpdateTaskRequest) ReadField5(iprot thrift.TProtocol) error { + _field := task.NewEffectiveTime() + if err := _field.Read(iprot); err != nil { + return err + } + p.EffectiveTime = _field + return nil +} +func (p *UpdateTaskRequest) ReadField6(iprot thrift.TProtocol) error { + + var _field *float64 + if v, err := iprot.ReadDouble(); err != nil { + return err + } else { + _field = &v + } + p.SampleRate = _field + return nil +} +func (p *UpdateTaskRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *UpdateTaskRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("UpdateTaskRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *UpdateTaskRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("task_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.TaskID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskStatus() { + if err = oprot.WriteFieldBegin("task_status", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.TaskStatus); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetDescription() { + if err = oprot.WriteFieldBegin("description", thrift.STRING, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Description); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetEffectiveTime() { + if err = oprot.WriteFieldBegin("effective_time", thrift.STRUCT, 5); err != nil { + goto WriteFieldBeginError + } + if err := p.EffectiveTime.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetSampleRate() { + if err = oprot.WriteFieldBegin("sample_rate", thrift.DOUBLE, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteDouble(*p.SampleRate); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} +func (p *UpdateTaskRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *UpdateTaskRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("UpdateTaskRequest(%+v)", *p) + +} + +func (p *UpdateTaskRequest) DeepEqual(ano *UpdateTaskRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.TaskID) { + return false + } + if !p.Field2DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field3DeepEqual(ano.TaskStatus) { + return false + } + if !p.Field4DeepEqual(ano.Description) { + return false + } + if !p.Field5DeepEqual(ano.EffectiveTime) { + return false + } + if !p.Field6DeepEqual(ano.SampleRate) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *UpdateTaskRequest) Field1DeepEqual(src int64) bool { + + if p.TaskID != src { + return false + } + return true +} +func (p *UpdateTaskRequest) Field2DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *UpdateTaskRequest) Field3DeepEqual(src *task.TaskStatus) bool { + + if p.TaskStatus == src { + return true + } else if p.TaskStatus == nil || src == nil { + return false + } + if strings.Compare(*p.TaskStatus, *src) != 0 { + return false + } + return true +} +func (p *UpdateTaskRequest) Field4DeepEqual(src *string) bool { + + if p.Description == src { + return true + } else if p.Description == nil || src == nil { + return false + } + if strings.Compare(*p.Description, *src) != 0 { + return false + } + return true +} +func (p *UpdateTaskRequest) Field5DeepEqual(src *task.EffectiveTime) bool { + + if !p.EffectiveTime.DeepEqual(src) { + return false + } + return true +} +func (p *UpdateTaskRequest) Field6DeepEqual(src *float64) bool { + + if p.SampleRate == src { + return true + } else if p.SampleRate == nil || src == nil { + return false + } + if *p.SampleRate != *src { + return false + } + return true +} +func (p *UpdateTaskRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type UpdateTaskResponse struct { + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewUpdateTaskResponse() *UpdateTaskResponse { + return &UpdateTaskResponse{} +} + +func (p *UpdateTaskResponse) InitDefault() { +} + +var UpdateTaskResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *UpdateTaskResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return UpdateTaskResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *UpdateTaskResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_UpdateTaskResponse = map[int16]string{ + 255: "BaseResp", +} + +func (p *UpdateTaskResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *UpdateTaskResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *UpdateTaskResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *UpdateTaskResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("UpdateTaskResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *UpdateTaskResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *UpdateTaskResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("UpdateTaskResponse(%+v)", *p) + +} + +func (p *UpdateTaskResponse) DeepEqual(ano *UpdateTaskResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *UpdateTaskResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type ListTasksRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + TaskFilters *filter.TaskFilterFields `thrift:"task_filters,2,optional" frugal:"2,optional,filter.TaskFilterFields" form:"task_filters" json:"task_filters,omitempty"` + /* default 20 max 200 */ + Limit *int32 `thrift:"limit,101,optional" frugal:"101,optional,i32" form:"limit" json:"limit,omitempty"` + Offset *int32 `thrift:"offset,102,optional" frugal:"102,optional,i32" form:"offset" json:"offset,omitempty"` + OrderBy *OrderType `thrift:"order_by,103,optional" frugal:"103,optional,OrderType" form:"order_by" json:"order_by,omitempty"` + Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` +} + +func NewListTasksRequest() *ListTasksRequest { + return &ListTasksRequest{} +} + +func (p *ListTasksRequest) InitDefault() { +} + +func (p *ListTasksRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} + +var ListTasksRequest_TaskFilters_DEFAULT *filter.TaskFilterFields + +func (p *ListTasksRequest) GetTaskFilters() (v *filter.TaskFilterFields) { + if p == nil { + return + } + if !p.IsSetTaskFilters() { + return ListTasksRequest_TaskFilters_DEFAULT + } + return p.TaskFilters +} + +var ListTasksRequest_Limit_DEFAULT int32 + +func (p *ListTasksRequest) GetLimit() (v int32) { + if p == nil { + return + } + if !p.IsSetLimit() { + return ListTasksRequest_Limit_DEFAULT + } + return *p.Limit +} + +var ListTasksRequest_Offset_DEFAULT int32 + +func (p *ListTasksRequest) GetOffset() (v int32) { + if p == nil { + return + } + if !p.IsSetOffset() { + return ListTasksRequest_Offset_DEFAULT + } + return *p.Offset +} + +var ListTasksRequest_OrderBy_DEFAULT OrderType + +func (p *ListTasksRequest) GetOrderBy() (v OrderType) { + if p == nil { + return + } + if !p.IsSetOrderBy() { + return ListTasksRequest_OrderBy_DEFAULT + } + return *p.OrderBy +} + +var ListTasksRequest_Base_DEFAULT *base.Base + +func (p *ListTasksRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return ListTasksRequest_Base_DEFAULT + } + return p.Base +} +func (p *ListTasksRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *ListTasksRequest) SetTaskFilters(val *filter.TaskFilterFields) { + p.TaskFilters = val +} +func (p *ListTasksRequest) SetLimit(val *int32) { + p.Limit = val +} +func (p *ListTasksRequest) SetOffset(val *int32) { + p.Offset = val +} +func (p *ListTasksRequest) SetOrderBy(val *OrderType) { + p.OrderBy = val +} +func (p *ListTasksRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_ListTasksRequest = map[int16]string{ + 1: "workspace_id", + 2: "task_filters", + 101: "limit", + 102: "offset", + 103: "order_by", + 255: "base", +} + +func (p *ListTasksRequest) IsSetTaskFilters() bool { + return p.TaskFilters != nil +} + +func (p *ListTasksRequest) IsSetLimit() bool { + return p.Limit != nil +} + +func (p *ListTasksRequest) IsSetOffset() bool { + return p.Offset != nil +} + +func (p *ListTasksRequest) IsSetOrderBy() bool { + return p.OrderBy != nil +} + +func (p *ListTasksRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *ListTasksRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 101: + if fieldTypeId == thrift.I32 { + if err = p.ReadField101(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 102: + if fieldTypeId == thrift.I32 { + if err = p.ReadField102(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 103: + if fieldTypeId == thrift.I32 { + if err = p.ReadField103(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListTasksRequest[fieldId])) +} + +func (p *ListTasksRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *ListTasksRequest) ReadField2(iprot thrift.TProtocol) error { + _field := filter.NewTaskFilterFields() + if err := _field.Read(iprot); err != nil { + return err + } + p.TaskFilters = _field + return nil +} +func (p *ListTasksRequest) ReadField101(iprot thrift.TProtocol) error { + + var _field *int32 + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + _field = &v + } + p.Limit = _field + return nil +} +func (p *ListTasksRequest) ReadField102(iprot thrift.TProtocol) error { + + var _field *int32 + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + _field = &v + } + p.Offset = _field + return nil +} +func (p *ListTasksRequest) ReadField103(iprot thrift.TProtocol) error { + + var _field *OrderType + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + tmp := OrderType(v) + _field = &tmp + } + p.OrderBy = _field + return nil +} +func (p *ListTasksRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *ListTasksRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListTasksRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField101(oprot); err != nil { + fieldId = 101 + goto WriteFieldError + } + if err = p.writeField102(oprot); err != nil { + fieldId = 102 + goto WriteFieldError + } + if err = p.writeField103(oprot); err != nil { + fieldId = 103 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ListTasksRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ListTasksRequest) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetTaskFilters() { + if err = oprot.WriteFieldBegin("task_filters", thrift.STRUCT, 2); err != nil { + goto WriteFieldBeginError + } + if err := p.TaskFilters.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *ListTasksRequest) writeField101(oprot thrift.TProtocol) (err error) { + if p.IsSetLimit() { + if err = oprot.WriteFieldBegin("limit", thrift.I32, 101); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(*p.Limit); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 101 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 101 end error: ", p), err) +} +func (p *ListTasksRequest) writeField102(oprot thrift.TProtocol) (err error) { + if p.IsSetOffset() { + if err = oprot.WriteFieldBegin("offset", thrift.I32, 102); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(*p.Offset); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 102 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 102 end error: ", p), err) +} +func (p *ListTasksRequest) writeField103(oprot thrift.TProtocol) (err error) { + if p.IsSetOrderBy() { + if err = oprot.WriteFieldBegin("order_by", thrift.I32, 103); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(int32(*p.OrderBy)); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 103 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 103 end error: ", p), err) +} +func (p *ListTasksRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ListTasksRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ListTasksRequest(%+v)", *p) + +} + +func (p *ListTasksRequest) DeepEqual(ano *ListTasksRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field2DeepEqual(ano.TaskFilters) { + return false + } + if !p.Field101DeepEqual(ano.Limit) { + return false + } + if !p.Field102DeepEqual(ano.Offset) { + return false + } + if !p.Field103DeepEqual(ano.OrderBy) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *ListTasksRequest) Field1DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *ListTasksRequest) Field2DeepEqual(src *filter.TaskFilterFields) bool { + + if !p.TaskFilters.DeepEqual(src) { + return false + } + return true +} +func (p *ListTasksRequest) Field101DeepEqual(src *int32) bool { + + if p.Limit == src { + return true + } else if p.Limit == nil || src == nil { + return false + } + if *p.Limit != *src { + return false + } + return true +} +func (p *ListTasksRequest) Field102DeepEqual(src *int32) bool { + + if p.Offset == src { + return true + } else if p.Offset == nil || src == nil { + return false + } + if *p.Offset != *src { + return false + } + return true +} +func (p *ListTasksRequest) Field103DeepEqual(src *OrderType) bool { + + if p.OrderBy == src { + return true + } else if p.OrderBy == nil || src == nil { + return false + } + if *p.OrderBy != *src { + return false + } + return true +} +func (p *ListTasksRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type ListTasksResponse struct { + Tasks []*task.Task `thrift:"tasks,1,optional" frugal:"1,optional,list" form:"tasks" json:"tasks,omitempty"` + Total *int64 `thrift:"total,100,optional" frugal:"100,optional,i64" form:"total" json:"total,string,omitempty"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewListTasksResponse() *ListTasksResponse { + return &ListTasksResponse{} +} + +func (p *ListTasksResponse) InitDefault() { +} + +var ListTasksResponse_Tasks_DEFAULT []*task.Task + +func (p *ListTasksResponse) GetTasks() (v []*task.Task) { + if p == nil { + return + } + if !p.IsSetTasks() { + return ListTasksResponse_Tasks_DEFAULT + } + return p.Tasks +} + +var ListTasksResponse_Total_DEFAULT int64 + +func (p *ListTasksResponse) GetTotal() (v int64) { + if p == nil { + return + } + if !p.IsSetTotal() { + return ListTasksResponse_Total_DEFAULT + } + return *p.Total +} + +var ListTasksResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *ListTasksResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return ListTasksResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *ListTasksResponse) SetTasks(val []*task.Task) { + p.Tasks = val +} +func (p *ListTasksResponse) SetTotal(val *int64) { + p.Total = val +} +func (p *ListTasksResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_ListTasksResponse = map[int16]string{ + 1: "tasks", + 100: "total", + 255: "BaseResp", +} + +func (p *ListTasksResponse) IsSetTasks() bool { + return p.Tasks != nil +} + +func (p *ListTasksResponse) IsSetTotal() bool { + return p.Total != nil +} + +func (p *ListTasksResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *ListTasksResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 100: + if fieldTypeId == thrift.I64 { + if err = p.ReadField100(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *ListTasksResponse) ReadField1(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*task.Task, 0, size) + values := make([]task.Task, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.Tasks = _field + return nil +} +func (p *ListTasksResponse) ReadField100(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.Total = _field + return nil +} +func (p *ListTasksResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *ListTasksResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListTasksResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField100(oprot); err != nil { + fieldId = 100 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ListTasksResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetTasks() { + if err = oprot.WriteFieldBegin("tasks", thrift.LIST, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Tasks)); err != nil { + return err + } + for _, v := range p.Tasks { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ListTasksResponse) writeField100(oprot thrift.TProtocol) (err error) { + if p.IsSetTotal() { + if err = oprot.WriteFieldBegin("total", thrift.I64, 100); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.Total); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 100 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) +} +func (p *ListTasksResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ListTasksResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ListTasksResponse(%+v)", *p) + +} + +func (p *ListTasksResponse) DeepEqual(ano *ListTasksResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Tasks) { + return false + } + if !p.Field100DeepEqual(ano.Total) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *ListTasksResponse) Field1DeepEqual(src []*task.Task) bool { + + if len(p.Tasks) != len(src) { + return false + } + for i, v := range p.Tasks { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *ListTasksResponse) Field100DeepEqual(src *int64) bool { + + if p.Total == src { + return true + } else if p.Total == nil || src == nil { + return false + } + if *p.Total != *src { + return false + } + return true +} +func (p *ListTasksResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type GetTaskRequest struct { + TaskID int64 `thrift:"task_id,1,required" frugal:"1,required,i64" json:"task_id,string,required" path:"task_id,required"` + WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" json:"workspace_id" form:"workspace_id,required" ` + Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` +} + +func NewGetTaskRequest() *GetTaskRequest { + return &GetTaskRequest{} +} + +func (p *GetTaskRequest) InitDefault() { +} + +func (p *GetTaskRequest) GetTaskID() (v int64) { + if p != nil { + return p.TaskID + } + return +} + +func (p *GetTaskRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} + +var GetTaskRequest_Base_DEFAULT *base.Base + +func (p *GetTaskRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return GetTaskRequest_Base_DEFAULT + } + return p.Base +} +func (p *GetTaskRequest) SetTaskID(val int64) { + p.TaskID = val +} +func (p *GetTaskRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *GetTaskRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_GetTaskRequest = map[int16]string{ + 1: "task_id", + 2: "workspace_id", + 255: "base", +} + +func (p *GetTaskRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *GetTaskRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetTaskID bool = false + var issetWorkspaceID bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetTaskID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetTaskID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetWorkspaceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_GetTaskRequest[fieldId])) +} + +func (p *GetTaskRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.TaskID = _field + return nil +} +func (p *GetTaskRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *GetTaskRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *GetTaskRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTaskRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *GetTaskRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("task_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.TaskID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *GetTaskRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *GetTaskRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *GetTaskRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("GetTaskRequest(%+v)", *p) + +} + +func (p *GetTaskRequest) DeepEqual(ano *GetTaskRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.TaskID) { + return false + } + if !p.Field2DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *GetTaskRequest) Field1DeepEqual(src int64) bool { + + if p.TaskID != src { + return false + } + return true +} +func (p *GetTaskRequest) Field2DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *GetTaskRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type GetTaskResponse struct { + Task *task.Task `thrift:"task,1,optional" frugal:"1,optional,task.Task" form:"task" json:"task,omitempty"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewGetTaskResponse() *GetTaskResponse { + return &GetTaskResponse{} +} + +func (p *GetTaskResponse) InitDefault() { +} + +var GetTaskResponse_Task_DEFAULT *task.Task + +func (p *GetTaskResponse) GetTask() (v *task.Task) { + if p == nil { + return + } + if !p.IsSetTask() { + return GetTaskResponse_Task_DEFAULT + } + return p.Task +} + +var GetTaskResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *GetTaskResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return GetTaskResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *GetTaskResponse) SetTask(val *task.Task) { + p.Task = val +} +func (p *GetTaskResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_GetTaskResponse = map[int16]string{ + 1: "task", + 255: "BaseResp", +} + +func (p *GetTaskResponse) IsSetTask() bool { + return p.Task != nil +} + +func (p *GetTaskResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *GetTaskResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *GetTaskResponse) ReadField1(iprot thrift.TProtocol) error { + _field := task.NewTask() + if err := _field.Read(iprot); err != nil { + return err + } + p.Task = _field + return nil +} +func (p *GetTaskResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *GetTaskResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTaskResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *GetTaskResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetTask() { + if err = oprot.WriteFieldBegin("task", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Task.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *GetTaskResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *GetTaskResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("GetTaskResponse(%+v)", *p) + +} + +func (p *GetTaskResponse) DeepEqual(ano *GetTaskResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Task) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *GetTaskResponse) Field1DeepEqual(src *task.Task) bool { + + if !p.Task.DeepEqual(src) { + return false + } + return true +} +func (p *GetTaskResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type CheckTaskNameRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + Name string `thrift:"name,2,required" frugal:"2,required,string" form:"name,required" json:"name,required"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` +} + +func NewCheckTaskNameRequest() *CheckTaskNameRequest { + return &CheckTaskNameRequest{} +} + +func (p *CheckTaskNameRequest) InitDefault() { +} + +func (p *CheckTaskNameRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} + +func (p *CheckTaskNameRequest) GetName() (v string) { + if p != nil { + return p.Name + } + return +} + +var CheckTaskNameRequest_Base_DEFAULT *base.Base + +func (p *CheckTaskNameRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return CheckTaskNameRequest_Base_DEFAULT + } + return p.Base +} +func (p *CheckTaskNameRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *CheckTaskNameRequest) SetName(val string) { + p.Name = val +} +func (p *CheckTaskNameRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_CheckTaskNameRequest = map[int16]string{ + 1: "workspace_id", + 2: "name", + 255: "Base", +} + +func (p *CheckTaskNameRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *CheckTaskNameRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + var issetName bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetName = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetName { + fieldId = 2 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_CheckTaskNameRequest[fieldId])) +} + +func (p *CheckTaskNameRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *CheckTaskNameRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.Name = _field + return nil +} +func (p *CheckTaskNameRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *CheckTaskNameRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CheckTaskNameRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *CheckTaskNameRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *CheckTaskNameRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *CheckTaskNameRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *CheckTaskNameRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("CheckTaskNameRequest(%+v)", *p) + +} + +func (p *CheckTaskNameRequest) DeepEqual(ano *CheckTaskNameRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field2DeepEqual(ano.Name) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *CheckTaskNameRequest) Field1DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *CheckTaskNameRequest) Field2DeepEqual(src string) bool { + + if strings.Compare(p.Name, src) != 0 { + return false + } + return true +} +func (p *CheckTaskNameRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type CheckTaskNameResponse struct { + Pass *bool `thrift:"Pass,1,optional" frugal:"1,optional,bool" form:"Pass" json:"Pass,omitempty" query:"Pass"` + Message *string `thrift:"Message,2,optional" frugal:"2,optional,string" form:"Message" json:"Message,omitempty" query:"Message"` + BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` +} + +func NewCheckTaskNameResponse() *CheckTaskNameResponse { + return &CheckTaskNameResponse{} +} + +func (p *CheckTaskNameResponse) InitDefault() { +} + +var CheckTaskNameResponse_Pass_DEFAULT bool + +func (p *CheckTaskNameResponse) GetPass() (v bool) { + if p == nil { + return + } + if !p.IsSetPass() { + return CheckTaskNameResponse_Pass_DEFAULT + } + return *p.Pass +} + +var CheckTaskNameResponse_Message_DEFAULT string + +func (p *CheckTaskNameResponse) GetMessage() (v string) { + if p == nil { + return + } + if !p.IsSetMessage() { + return CheckTaskNameResponse_Message_DEFAULT + } + return *p.Message +} + +var CheckTaskNameResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *CheckTaskNameResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return CheckTaskNameResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *CheckTaskNameResponse) SetPass(val *bool) { + p.Pass = val +} +func (p *CheckTaskNameResponse) SetMessage(val *string) { + p.Message = val +} +func (p *CheckTaskNameResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_CheckTaskNameResponse = map[int16]string{ + 1: "Pass", + 2: "Message", + 255: "BaseResp", +} + +func (p *CheckTaskNameResponse) IsSetPass() bool { + return p.Pass != nil +} + +func (p *CheckTaskNameResponse) IsSetMessage() bool { + return p.Message != nil +} + +func (p *CheckTaskNameResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *CheckTaskNameResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.BOOL { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *CheckTaskNameResponse) ReadField1(iprot thrift.TProtocol) error { + + var _field *bool + if v, err := iprot.ReadBool(); err != nil { + return err + } else { + _field = &v + } + p.Pass = _field + return nil +} +func (p *CheckTaskNameResponse) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Message = _field + return nil +} +func (p *CheckTaskNameResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *CheckTaskNameResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CheckTaskNameResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *CheckTaskNameResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetPass() { + if err = oprot.WriteFieldBegin("Pass", thrift.BOOL, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteBool(*p.Pass); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *CheckTaskNameResponse) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetMessage() { + if err = oprot.WriteFieldBegin("Message", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Message); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *CheckTaskNameResponse) writeField255(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *CheckTaskNameResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("CheckTaskNameResponse(%+v)", *p) + +} + +func (p *CheckTaskNameResponse) DeepEqual(ano *CheckTaskNameResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Pass) { + return false + } + if !p.Field2DeepEqual(ano.Message) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *CheckTaskNameResponse) Field1DeepEqual(src *bool) bool { + + if p.Pass == src { + return true + } else if p.Pass == nil || src == nil { + return false + } + if *p.Pass != *src { + return false + } + return true +} +func (p *CheckTaskNameResponse) Field2DeepEqual(src *string) bool { + + if p.Message == src { + return true + } else if p.Message == nil || src == nil { + return false + } + if strings.Compare(*p.Message, *src) != 0 { + return false + } + return true +} +func (p *CheckTaskNameResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type TaskService interface { + CheckTaskName(ctx context.Context, req *CheckTaskNameRequest) (r *CheckTaskNameResponse, err error) + + CreateTask(ctx context.Context, req *CreateTaskRequest) (r *CreateTaskResponse, err error) + + UpdateTask(ctx context.Context, req *UpdateTaskRequest) (r *UpdateTaskResponse, err error) + + ListTasks(ctx context.Context, req *ListTasksRequest) (r *ListTasksResponse, err error) + + GetTask(ctx context.Context, req *GetTaskRequest) (r *GetTaskResponse, err error) +} + +type TaskServiceClient struct { + c thrift.TClient +} + +func NewTaskServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *TaskServiceClient { + return &TaskServiceClient{ + c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)), + } +} + +func NewTaskServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *TaskServiceClient { + return &TaskServiceClient{ + c: thrift.NewTStandardClient(iprot, oprot), + } +} + +func NewTaskServiceClient(c thrift.TClient) *TaskServiceClient { + return &TaskServiceClient{ + c: c, + } +} + +func (p *TaskServiceClient) Client_() thrift.TClient { + return p.c +} + +func (p *TaskServiceClient) CheckTaskName(ctx context.Context, req *CheckTaskNameRequest) (r *CheckTaskNameResponse, err error) { + var _args TaskServiceCheckTaskNameArgs + _args.Req = req + var _result TaskServiceCheckTaskNameResult + if err = p.Client_().Call(ctx, "CheckTaskName", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TaskServiceClient) CreateTask(ctx context.Context, req *CreateTaskRequest) (r *CreateTaskResponse, err error) { + var _args TaskServiceCreateTaskArgs + _args.Req = req + var _result TaskServiceCreateTaskResult + if err = p.Client_().Call(ctx, "CreateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TaskServiceClient) UpdateTask(ctx context.Context, req *UpdateTaskRequest) (r *UpdateTaskResponse, err error) { + var _args TaskServiceUpdateTaskArgs + _args.Req = req + var _result TaskServiceUpdateTaskResult + if err = p.Client_().Call(ctx, "UpdateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TaskServiceClient) ListTasks(ctx context.Context, req *ListTasksRequest) (r *ListTasksResponse, err error) { + var _args TaskServiceListTasksArgs + _args.Req = req + var _result TaskServiceListTasksResult + if err = p.Client_().Call(ctx, "ListTasks", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TaskServiceClient) GetTask(ctx context.Context, req *GetTaskRequest) (r *GetTaskResponse, err error) { + var _args TaskServiceGetTaskArgs + _args.Req = req + var _result TaskServiceGetTaskResult + if err = p.Client_().Call(ctx, "GetTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +type TaskServiceProcessor struct { + processorMap map[string]thrift.TProcessorFunction + handler TaskService +} + +func (p *TaskServiceProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) { + p.processorMap[key] = processor +} + +func (p *TaskServiceProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) { + processor, ok = p.processorMap[key] + return processor, ok +} + +func (p *TaskServiceProcessor) ProcessorMap() map[string]thrift.TProcessorFunction { + return p.processorMap +} + +func NewTaskServiceProcessor(handler TaskService) *TaskServiceProcessor { + self := &TaskServiceProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)} + self.AddToProcessorMap("CheckTaskName", &taskServiceProcessorCheckTaskName{handler: handler}) + self.AddToProcessorMap("CreateTask", &taskServiceProcessorCreateTask{handler: handler}) + self.AddToProcessorMap("UpdateTask", &taskServiceProcessorUpdateTask{handler: handler}) + self.AddToProcessorMap("ListTasks", &taskServiceProcessorListTasks{handler: handler}) + self.AddToProcessorMap("GetTask", &taskServiceProcessorGetTask{handler: handler}) + return self +} +func (p *TaskServiceProcessor) Process(ctx context.Context, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + name, _, seqId, err := iprot.ReadMessageBegin() + if err != nil { + return false, err + } + if processor, ok := p.GetProcessorFunction(name); ok { + return processor.Process(ctx, seqId, iprot, oprot) + } + iprot.Skip(thrift.STRUCT) + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name) + oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, x +} + +type taskServiceProcessorCheckTaskName struct { + handler TaskService +} + +func (p *taskServiceProcessorCheckTaskName) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TaskServiceCheckTaskNameArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("CheckTaskName", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TaskServiceCheckTaskNameResult{} + var retval *CheckTaskNameResponse + if retval, err2 = p.handler.CheckTaskName(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CheckTaskName: "+err2.Error()) + oprot.WriteMessageBegin("CheckTaskName", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("CheckTaskName", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type taskServiceProcessorCreateTask struct { + handler TaskService +} + +func (p *taskServiceProcessorCreateTask) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TaskServiceCreateTaskArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("CreateTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TaskServiceCreateTaskResult{} + var retval *CreateTaskResponse + if retval, err2 = p.handler.CreateTask(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateTask: "+err2.Error()) + oprot.WriteMessageBegin("CreateTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("CreateTask", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type taskServiceProcessorUpdateTask struct { + handler TaskService +} + +func (p *taskServiceProcessorUpdateTask) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TaskServiceUpdateTaskArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("UpdateTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TaskServiceUpdateTaskResult{} + var retval *UpdateTaskResponse + if retval, err2 = p.handler.UpdateTask(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateTask: "+err2.Error()) + oprot.WriteMessageBegin("UpdateTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("UpdateTask", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type taskServiceProcessorListTasks struct { + handler TaskService +} + +func (p *taskServiceProcessorListTasks) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TaskServiceListTasksArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListTasks", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TaskServiceListTasksResult{} + var retval *ListTasksResponse + if retval, err2 = p.handler.ListTasks(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListTasks: "+err2.Error()) + oprot.WriteMessageBegin("ListTasks", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ListTasks", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type taskServiceProcessorGetTask struct { + handler TaskService +} + +func (p *taskServiceProcessorGetTask) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TaskServiceGetTaskArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("GetTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TaskServiceGetTaskResult{} + var retval *GetTaskResponse + if retval, err2 = p.handler.GetTask(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTask: "+err2.Error()) + oprot.WriteMessageBegin("GetTask", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("GetTask", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type TaskServiceCheckTaskNameArgs struct { + Req *CheckTaskNameRequest `thrift:"req,1" frugal:"1,default,CheckTaskNameRequest"` +} + +func NewTaskServiceCheckTaskNameArgs() *TaskServiceCheckTaskNameArgs { + return &TaskServiceCheckTaskNameArgs{} +} + +func (p *TaskServiceCheckTaskNameArgs) InitDefault() { +} + +var TaskServiceCheckTaskNameArgs_Req_DEFAULT *CheckTaskNameRequest + +func (p *TaskServiceCheckTaskNameArgs) GetReq() (v *CheckTaskNameRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TaskServiceCheckTaskNameArgs_Req_DEFAULT + } + return p.Req +} +func (p *TaskServiceCheckTaskNameArgs) SetReq(val *CheckTaskNameRequest) { + p.Req = val +} + +var fieldIDToName_TaskServiceCheckTaskNameArgs = map[int16]string{ + 1: "req", +} + +func (p *TaskServiceCheckTaskNameArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TaskServiceCheckTaskNameArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceCheckTaskNameArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskServiceCheckTaskNameArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCheckTaskNameRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TaskServiceCheckTaskNameArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CheckTaskName_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskServiceCheckTaskNameArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TaskServiceCheckTaskNameArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskServiceCheckTaskNameArgs(%+v)", *p) + +} + +func (p *TaskServiceCheckTaskNameArgs) DeepEqual(ano *TaskServiceCheckTaskNameArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TaskServiceCheckTaskNameArgs) Field1DeepEqual(src *CheckTaskNameRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TaskServiceCheckTaskNameResult struct { + Success *CheckTaskNameResponse `thrift:"success,0,optional" frugal:"0,optional,CheckTaskNameResponse"` +} + +func NewTaskServiceCheckTaskNameResult() *TaskServiceCheckTaskNameResult { + return &TaskServiceCheckTaskNameResult{} +} + +func (p *TaskServiceCheckTaskNameResult) InitDefault() { +} + +var TaskServiceCheckTaskNameResult_Success_DEFAULT *CheckTaskNameResponse + +func (p *TaskServiceCheckTaskNameResult) GetSuccess() (v *CheckTaskNameResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TaskServiceCheckTaskNameResult_Success_DEFAULT + } + return p.Success +} +func (p *TaskServiceCheckTaskNameResult) SetSuccess(x interface{}) { + p.Success = x.(*CheckTaskNameResponse) +} + +var fieldIDToName_TaskServiceCheckTaskNameResult = map[int16]string{ + 0: "success", +} + +func (p *TaskServiceCheckTaskNameResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TaskServiceCheckTaskNameResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceCheckTaskNameResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskServiceCheckTaskNameResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCheckTaskNameResponse() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *TaskServiceCheckTaskNameResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CheckTaskName_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskServiceCheckTaskNameResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TaskServiceCheckTaskNameResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskServiceCheckTaskNameResult(%+v)", *p) + +} + +func (p *TaskServiceCheckTaskNameResult) DeepEqual(ano *TaskServiceCheckTaskNameResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TaskServiceCheckTaskNameResult) Field0DeepEqual(src *CheckTaskNameResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} + +type TaskServiceCreateTaskArgs struct { + Req *CreateTaskRequest `thrift:"req,1" frugal:"1,default,CreateTaskRequest"` +} + +func NewTaskServiceCreateTaskArgs() *TaskServiceCreateTaskArgs { + return &TaskServiceCreateTaskArgs{} +} + +func (p *TaskServiceCreateTaskArgs) InitDefault() { +} + +var TaskServiceCreateTaskArgs_Req_DEFAULT *CreateTaskRequest + +func (p *TaskServiceCreateTaskArgs) GetReq() (v *CreateTaskRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TaskServiceCreateTaskArgs_Req_DEFAULT + } + return p.Req +} +func (p *TaskServiceCreateTaskArgs) SetReq(val *CreateTaskRequest) { + p.Req = val +} + +var fieldIDToName_TaskServiceCreateTaskArgs = map[int16]string{ + 1: "req", +} + +func (p *TaskServiceCreateTaskArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TaskServiceCreateTaskArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceCreateTaskArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskServiceCreateTaskArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCreateTaskRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TaskServiceCreateTaskArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateTask_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskServiceCreateTaskArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TaskServiceCreateTaskArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskServiceCreateTaskArgs(%+v)", *p) + +} + +func (p *TaskServiceCreateTaskArgs) DeepEqual(ano *TaskServiceCreateTaskArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TaskServiceCreateTaskArgs) Field1DeepEqual(src *CreateTaskRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TaskServiceCreateTaskResult struct { + Success *CreateTaskResponse `thrift:"success,0,optional" frugal:"0,optional,CreateTaskResponse"` +} + +func NewTaskServiceCreateTaskResult() *TaskServiceCreateTaskResult { + return &TaskServiceCreateTaskResult{} +} + +func (p *TaskServiceCreateTaskResult) InitDefault() { +} + +var TaskServiceCreateTaskResult_Success_DEFAULT *CreateTaskResponse + +func (p *TaskServiceCreateTaskResult) GetSuccess() (v *CreateTaskResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TaskServiceCreateTaskResult_Success_DEFAULT + } + return p.Success +} +func (p *TaskServiceCreateTaskResult) SetSuccess(x interface{}) { + p.Success = x.(*CreateTaskResponse) +} + +var fieldIDToName_TaskServiceCreateTaskResult = map[int16]string{ + 0: "success", +} + +func (p *TaskServiceCreateTaskResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TaskServiceCreateTaskResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceCreateTaskResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskServiceCreateTaskResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCreateTaskResponse() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *TaskServiceCreateTaskResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateTask_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskServiceCreateTaskResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TaskServiceCreateTaskResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskServiceCreateTaskResult(%+v)", *p) + +} + +func (p *TaskServiceCreateTaskResult) DeepEqual(ano *TaskServiceCreateTaskResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TaskServiceCreateTaskResult) Field0DeepEqual(src *CreateTaskResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} + +type TaskServiceUpdateTaskArgs struct { + Req *UpdateTaskRequest `thrift:"req,1" frugal:"1,default,UpdateTaskRequest"` +} + +func NewTaskServiceUpdateTaskArgs() *TaskServiceUpdateTaskArgs { + return &TaskServiceUpdateTaskArgs{} +} + +func (p *TaskServiceUpdateTaskArgs) InitDefault() { +} + +var TaskServiceUpdateTaskArgs_Req_DEFAULT *UpdateTaskRequest + +func (p *TaskServiceUpdateTaskArgs) GetReq() (v *UpdateTaskRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TaskServiceUpdateTaskArgs_Req_DEFAULT + } + return p.Req +} +func (p *TaskServiceUpdateTaskArgs) SetReq(val *UpdateTaskRequest) { + p.Req = val +} + +var fieldIDToName_TaskServiceUpdateTaskArgs = map[int16]string{ + 1: "req", +} + +func (p *TaskServiceUpdateTaskArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TaskServiceUpdateTaskArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceUpdateTaskArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskServiceUpdateTaskArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewUpdateTaskRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TaskServiceUpdateTaskArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("UpdateTask_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskServiceUpdateTaskArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TaskServiceUpdateTaskArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskServiceUpdateTaskArgs(%+v)", *p) + +} + +func (p *TaskServiceUpdateTaskArgs) DeepEqual(ano *TaskServiceUpdateTaskArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TaskServiceUpdateTaskArgs) Field1DeepEqual(src *UpdateTaskRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TaskServiceUpdateTaskResult struct { + Success *UpdateTaskResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateTaskResponse"` +} + +func NewTaskServiceUpdateTaskResult() *TaskServiceUpdateTaskResult { + return &TaskServiceUpdateTaskResult{} +} + +func (p *TaskServiceUpdateTaskResult) InitDefault() { +} + +var TaskServiceUpdateTaskResult_Success_DEFAULT *UpdateTaskResponse + +func (p *TaskServiceUpdateTaskResult) GetSuccess() (v *UpdateTaskResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TaskServiceUpdateTaskResult_Success_DEFAULT + } + return p.Success +} +func (p *TaskServiceUpdateTaskResult) SetSuccess(x interface{}) { + p.Success = x.(*UpdateTaskResponse) +} + +var fieldIDToName_TaskServiceUpdateTaskResult = map[int16]string{ + 0: "success", +} + +func (p *TaskServiceUpdateTaskResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TaskServiceUpdateTaskResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceUpdateTaskResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskServiceUpdateTaskResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewUpdateTaskResponse() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *TaskServiceUpdateTaskResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("UpdateTask_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskServiceUpdateTaskResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TaskServiceUpdateTaskResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskServiceUpdateTaskResult(%+v)", *p) + +} + +func (p *TaskServiceUpdateTaskResult) DeepEqual(ano *TaskServiceUpdateTaskResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TaskServiceUpdateTaskResult) Field0DeepEqual(src *UpdateTaskResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} + +type TaskServiceListTasksArgs struct { + Req *ListTasksRequest `thrift:"req,1" frugal:"1,default,ListTasksRequest"` +} + +func NewTaskServiceListTasksArgs() *TaskServiceListTasksArgs { + return &TaskServiceListTasksArgs{} +} + +func (p *TaskServiceListTasksArgs) InitDefault() { +} + +var TaskServiceListTasksArgs_Req_DEFAULT *ListTasksRequest + +func (p *TaskServiceListTasksArgs) GetReq() (v *ListTasksRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TaskServiceListTasksArgs_Req_DEFAULT + } + return p.Req +} +func (p *TaskServiceListTasksArgs) SetReq(val *ListTasksRequest) { + p.Req = val +} + +var fieldIDToName_TaskServiceListTasksArgs = map[int16]string{ + 1: "req", +} + +func (p *TaskServiceListTasksArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TaskServiceListTasksArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceListTasksArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskServiceListTasksArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListTasksRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TaskServiceListTasksArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListTasks_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskServiceListTasksArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TaskServiceListTasksArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskServiceListTasksArgs(%+v)", *p) + +} + +func (p *TaskServiceListTasksArgs) DeepEqual(ano *TaskServiceListTasksArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TaskServiceListTasksArgs) Field1DeepEqual(src *ListTasksRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TaskServiceListTasksResult struct { + Success *ListTasksResponse `thrift:"success,0,optional" frugal:"0,optional,ListTasksResponse"` +} + +func NewTaskServiceListTasksResult() *TaskServiceListTasksResult { + return &TaskServiceListTasksResult{} +} + +func (p *TaskServiceListTasksResult) InitDefault() { +} + +var TaskServiceListTasksResult_Success_DEFAULT *ListTasksResponse + +func (p *TaskServiceListTasksResult) GetSuccess() (v *ListTasksResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TaskServiceListTasksResult_Success_DEFAULT + } + return p.Success +} +func (p *TaskServiceListTasksResult) SetSuccess(x interface{}) { + p.Success = x.(*ListTasksResponse) +} + +var fieldIDToName_TaskServiceListTasksResult = map[int16]string{ + 0: "success", +} + +func (p *TaskServiceListTasksResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TaskServiceListTasksResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceListTasksResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskServiceListTasksResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListTasksResponse() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *TaskServiceListTasksResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListTasks_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskServiceListTasksResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TaskServiceListTasksResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskServiceListTasksResult(%+v)", *p) + +} + +func (p *TaskServiceListTasksResult) DeepEqual(ano *TaskServiceListTasksResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TaskServiceListTasksResult) Field0DeepEqual(src *ListTasksResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} + +type TaskServiceGetTaskArgs struct { + Req *GetTaskRequest `thrift:"req,1" frugal:"1,default,GetTaskRequest"` +} + +func NewTaskServiceGetTaskArgs() *TaskServiceGetTaskArgs { + return &TaskServiceGetTaskArgs{} +} + +func (p *TaskServiceGetTaskArgs) InitDefault() { +} + +var TaskServiceGetTaskArgs_Req_DEFAULT *GetTaskRequest + +func (p *TaskServiceGetTaskArgs) GetReq() (v *GetTaskRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TaskServiceGetTaskArgs_Req_DEFAULT + } + return p.Req +} +func (p *TaskServiceGetTaskArgs) SetReq(val *GetTaskRequest) { + p.Req = val +} + +var fieldIDToName_TaskServiceGetTaskArgs = map[int16]string{ + 1: "req", +} + +func (p *TaskServiceGetTaskArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TaskServiceGetTaskArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceGetTaskArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskServiceGetTaskArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewGetTaskRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *TaskServiceGetTaskArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTask_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskServiceGetTaskArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TaskServiceGetTaskArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskServiceGetTaskArgs(%+v)", *p) + +} + +func (p *TaskServiceGetTaskArgs) DeepEqual(ano *TaskServiceGetTaskArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Req) { + return false + } + return true +} + +func (p *TaskServiceGetTaskArgs) Field1DeepEqual(src *GetTaskRequest) bool { + + if !p.Req.DeepEqual(src) { + return false + } + return true +} + +type TaskServiceGetTaskResult struct { + Success *GetTaskResponse `thrift:"success,0,optional" frugal:"0,optional,GetTaskResponse"` +} + +func NewTaskServiceGetTaskResult() *TaskServiceGetTaskResult { + return &TaskServiceGetTaskResult{} +} + +func (p *TaskServiceGetTaskResult) InitDefault() { +} + +var TaskServiceGetTaskResult_Success_DEFAULT *GetTaskResponse + +func (p *TaskServiceGetTaskResult) GetSuccess() (v *GetTaskResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return TaskServiceGetTaskResult_Success_DEFAULT + } + return p.Success +} +func (p *TaskServiceGetTaskResult) SetSuccess(x interface{}) { + p.Success = x.(*GetTaskResponse) +} + +var fieldIDToName_TaskServiceGetTaskResult = map[int16]string{ + 0: "success", +} + +func (p *TaskServiceGetTaskResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TaskServiceGetTaskResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceGetTaskResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskServiceGetTaskResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewGetTaskResponse() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *TaskServiceGetTaskResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTask_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskServiceGetTaskResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *TaskServiceGetTaskResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskServiceGetTaskResult(%+v)", *p) + +} + +func (p *TaskServiceGetTaskResult) DeepEqual(ano *TaskServiceGetTaskResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field0DeepEqual(ano.Success) { + return false + } + return true +} + +func (p *TaskServiceGetTaskResult) Field0DeepEqual(src *GetTaskResponse) bool { + + if !p.Success.DeepEqual(src) { + return false + } + return true +} diff --git a/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task_validator.go b/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task_validator.go new file mode 100644 index 000000000..c525077dc --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task_validator.go @@ -0,0 +1,135 @@ +// Code generated by Validator v0.2.6. DO NOT EDIT. + +package task + +import ( + "bytes" + "fmt" + "reflect" + "regexp" + "strings" + "time" +) + +// unused protection +var ( + _ = fmt.Formatter(nil) + _ = (*bytes.Buffer)(nil) + _ = (*strings.Builder)(nil) + _ = reflect.Type(nil) + _ = (*regexp.Regexp)(nil) + _ = time.Nanosecond +) + +func (p *CreateTaskRequest) IsValid() error { + if p.Task != nil { + if err := p.Task.IsValid(); err != nil { + return fmt.Errorf("field Task not valid, %w", err) + } + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *CreateTaskResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *UpdateTaskRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if p.EffectiveTime != nil { + if err := p.EffectiveTime.IsValid(); err != nil { + return fmt.Errorf("field EffectiveTime not valid, %w", err) + } + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *UpdateTaskResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *ListTasksRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if p.TaskFilters != nil { + if err := p.TaskFilters.IsValid(); err != nil { + return fmt.Errorf("field TaskFilters not valid, %w", err) + } + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *ListTasksResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *GetTaskRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *GetTaskResponse) IsValid() error { + if p.Task != nil { + if err := p.Task.IsValid(); err != nil { + return fmt.Errorf("field Task not valid, %w", err) + } + } + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *CheckTaskNameRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *CheckTaskNameResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/task/k-coze.loop.observability.task.go b/backend/kitex_gen/coze/loop/observability/task/k-coze.loop.observability.task.go new file mode 100644 index 000000000..2cfd0cc51 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/task/k-coze.loop.observability.task.go @@ -0,0 +1,3652 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. + +package task + +import ( + "bytes" + "fmt" + "reflect" + "strings" + + "github.com/cloudwego/gopkg/protocol/thrift" + kutils "github.com/cloudwego/kitex/pkg/utils" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/base" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" +) + +var ( + _ = base.KitexUnusedProtection + _ = filter.KitexUnusedProtection + _ = task.KitexUnusedProtection +) + +// unused protection +var ( + _ = fmt.Formatter(nil) + _ = (*bytes.Buffer)(nil) + _ = (*strings.Builder)(nil) + _ = reflect.Type(nil) + _ = thrift.STOP +) + +func (p *CreateTaskRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetTask bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTask = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetTask { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_CreateTaskRequest[fieldId])) +} + +func (p *CreateTaskRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := task.NewTask() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Task = _field + return offset, nil +} + +func (p *CreateTaskRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *CreateTaskRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *CreateTaskRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *CreateTaskRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *CreateTaskRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Task.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *CreateTaskRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *CreateTaskRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Task.BLength() + return l +} + +func (p *CreateTaskRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *CreateTaskRequest) DeepCopy(s interface{}) error { + src, ok := s.(*CreateTaskRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _task *task.Task + if src.Task != nil { + _task = &task.Task{} + if err := _task.DeepCopy(src.Task); err != nil { + return err + } + } + p.Task = _task + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *CreateTaskResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *CreateTaskResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TaskID = _field + return offset, nil +} + +func (p *CreateTaskResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *CreateTaskResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *CreateTaskResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *CreateTaskResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *CreateTaskResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], *p.TaskID) + } + return offset +} + +func (p *CreateTaskResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *CreateTaskResponse) field1Length() int { + l := 0 + if p.IsSetTaskID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *CreateTaskResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *CreateTaskResponse) DeepCopy(s interface{}) error { + src, ok := s.(*CreateTaskResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.TaskID != nil { + tmp := *src.TaskID + p.TaskID = &tmp + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *UpdateTaskRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetTaskID bool = false + var issetWorkspaceID bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTaskID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.DOUBLE { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetTaskID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetWorkspaceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_UpdateTaskRequest[fieldId])) +} + +func (p *UpdateTaskRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TaskID = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *task.TaskStatus + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TaskStatus = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Description = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField5(buf []byte) (int, error) { + offset := 0 + _field := task.NewEffectiveTime() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.EffectiveTime = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field *float64 + if v, l, err := thrift.Binary.ReadDouble(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SampleRate = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *UpdateTaskRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *UpdateTaskRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *UpdateTaskRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field6Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *UpdateTaskRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.TaskID) + return offset +} + +func (p *UpdateTaskRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *UpdateTaskRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskStatus() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.TaskStatus) + } + return offset +} + +func (p *UpdateTaskRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDescription() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Description) + } + return offset +} + +func (p *UpdateTaskRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEffectiveTime() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 5) + offset += p.EffectiveTime.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *UpdateTaskRequest) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSampleRate() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.DOUBLE, 6) + offset += thrift.Binary.WriteDouble(buf[offset:], *p.SampleRate) + } + return offset +} + +func (p *UpdateTaskRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *UpdateTaskRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *UpdateTaskRequest) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *UpdateTaskRequest) field3Length() int { + l := 0 + if p.IsSetTaskStatus() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.TaskStatus) + } + return l +} + +func (p *UpdateTaskRequest) field4Length() int { + l := 0 + if p.IsSetDescription() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Description) + } + return l +} + +func (p *UpdateTaskRequest) field5Length() int { + l := 0 + if p.IsSetEffectiveTime() { + l += thrift.Binary.FieldBeginLength() + l += p.EffectiveTime.BLength() + } + return l +} + +func (p *UpdateTaskRequest) field6Length() int { + l := 0 + if p.IsSetSampleRate() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.DoubleLength() + } + return l +} + +func (p *UpdateTaskRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *UpdateTaskRequest) DeepCopy(s interface{}) error { + src, ok := s.(*UpdateTaskRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.TaskID = src.TaskID + + p.WorkspaceID = src.WorkspaceID + + if src.TaskStatus != nil { + tmp := *src.TaskStatus + p.TaskStatus = &tmp + } + + if src.Description != nil { + var tmp string + if *src.Description != "" { + tmp = kutils.StringDeepCopy(*src.Description) + } + p.Description = &tmp + } + + var _effectiveTime *task.EffectiveTime + if src.EffectiveTime != nil { + _effectiveTime = &task.EffectiveTime{} + if err := _effectiveTime.DeepCopy(src.EffectiveTime); err != nil { + return err + } + } + p.EffectiveTime = _effectiveTime + + if src.SampleRate != nil { + tmp := *src.SampleRate + p.SampleRate = &tmp + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *UpdateTaskResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *UpdateTaskResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *UpdateTaskResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *UpdateTaskResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *UpdateTaskResponse) BLength() int { + l := 0 + if p != nil { + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *UpdateTaskResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *UpdateTaskResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *UpdateTaskResponse) DeepCopy(s interface{}) error { + src, ok := s.(*UpdateTaskResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *ListTasksRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 101: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField101(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 102: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField102(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 103: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField103(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ListTasksRequest[fieldId])) +} + +func (p *ListTasksRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *ListTasksRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + _field := filter.NewTaskFilterFields() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.TaskFilters = _field + return offset, nil +} + +func (p *ListTasksRequest) FastReadField101(buf []byte) (int, error) { + offset := 0 + + var _field *int32 + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Limit = _field + return offset, nil +} + +func (p *ListTasksRequest) FastReadField102(buf []byte) (int, error) { + offset := 0 + + var _field *int32 + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Offset = _field + return offset, nil +} + +func (p *ListTasksRequest) FastReadField103(buf []byte) (int, error) { + offset := 0 + + var _field *OrderType + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + + tmp := OrderType(v) + _field = &tmp + } + p.OrderBy = _field + return offset, nil +} + +func (p *ListTasksRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *ListTasksRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ListTasksRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField101(buf[offset:], w) + offset += p.fastWriteField102(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField103(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ListTasksRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field101Length() + l += p.field102Length() + l += p.field103Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ListTasksRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *ListTasksRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskFilters() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 2) + offset += p.TaskFilters.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ListTasksRequest) fastWriteField101(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetLimit() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 101) + offset += thrift.Binary.WriteI32(buf[offset:], *p.Limit) + } + return offset +} + +func (p *ListTasksRequest) fastWriteField102(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetOffset() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 102) + offset += thrift.Binary.WriteI32(buf[offset:], *p.Offset) + } + return offset +} + +func (p *ListTasksRequest) fastWriteField103(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetOrderBy() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 103) + offset += thrift.Binary.WriteI32(buf[offset:], int32(*p.OrderBy)) + } + return offset +} + +func (p *ListTasksRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ListTasksRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *ListTasksRequest) field2Length() int { + l := 0 + if p.IsSetTaskFilters() { + l += thrift.Binary.FieldBeginLength() + l += p.TaskFilters.BLength() + } + return l +} + +func (p *ListTasksRequest) field101Length() int { + l := 0 + if p.IsSetLimit() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *ListTasksRequest) field102Length() int { + l := 0 + if p.IsSetOffset() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *ListTasksRequest) field103Length() int { + l := 0 + if p.IsSetOrderBy() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *ListTasksRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *ListTasksRequest) DeepCopy(s interface{}) error { + src, ok := s.(*ListTasksRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.WorkspaceID = src.WorkspaceID + + var _taskFilters *filter.TaskFilterFields + if src.TaskFilters != nil { + _taskFilters = &filter.TaskFilterFields{} + if err := _taskFilters.DeepCopy(src.TaskFilters); err != nil { + return err + } + } + p.TaskFilters = _taskFilters + + if src.Limit != nil { + tmp := *src.Limit + p.Limit = &tmp + } + + if src.Offset != nil { + tmp := *src.Offset + p.Offset = &tmp + } + + if src.OrderBy != nil { + tmp := *src.OrderBy + p.OrderBy = &tmp + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *ListTasksResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 100: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField100(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *ListTasksResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*task.Task, 0, size) + values := make([]task.Task, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.Tasks = _field + return offset, nil +} + +func (p *ListTasksResponse) FastReadField100(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Total = _field + return offset, nil +} + +func (p *ListTasksResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *ListTasksResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ListTasksResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField100(buf[offset:], w) + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ListTasksResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field100Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ListTasksResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTasks() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.Tasks { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *ListTasksResponse) fastWriteField100(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTotal() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 100) + offset += thrift.Binary.WriteI64(buf[offset:], *p.Total) + } + return offset +} + +func (p *ListTasksResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ListTasksResponse) field1Length() int { + l := 0 + if p.IsSetTasks() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.Tasks { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *ListTasksResponse) field100Length() int { + l := 0 + if p.IsSetTotal() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *ListTasksResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *ListTasksResponse) DeepCopy(s interface{}) error { + src, ok := s.(*ListTasksResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Tasks != nil { + p.Tasks = make([]*task.Task, 0, len(src.Tasks)) + for _, elem := range src.Tasks { + var _elem *task.Task + if elem != nil { + _elem = &task.Task{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.Tasks = append(p.Tasks, _elem) + } + } + + if src.Total != nil { + tmp := *src.Total + p.Total = &tmp + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *GetTaskRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetTaskID bool = false + var issetWorkspaceID bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTaskID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetTaskID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetWorkspaceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_GetTaskRequest[fieldId])) +} + +func (p *GetTaskRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TaskID = _field + return offset, nil +} + +func (p *GetTaskRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *GetTaskRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *GetTaskRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *GetTaskRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *GetTaskRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *GetTaskRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.TaskID) + return offset +} + +func (p *GetTaskRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *GetTaskRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *GetTaskRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *GetTaskRequest) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *GetTaskRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *GetTaskRequest) DeepCopy(s interface{}) error { + src, ok := s.(*GetTaskRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.TaskID = src.TaskID + + p.WorkspaceID = src.WorkspaceID + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *GetTaskResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *GetTaskResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := task.NewTask() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Task = _field + return offset, nil +} + +func (p *GetTaskResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *GetTaskResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *GetTaskResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *GetTaskResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *GetTaskResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTask() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Task.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *GetTaskResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *GetTaskResponse) field1Length() int { + l := 0 + if p.IsSetTask() { + l += thrift.Binary.FieldBeginLength() + l += p.Task.BLength() + } + return l +} + +func (p *GetTaskResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *GetTaskResponse) DeepCopy(s interface{}) error { + src, ok := s.(*GetTaskResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _task *task.Task + if src.Task != nil { + _task = &task.Task{} + if err := _task.DeepCopy(src.Task); err != nil { + return err + } + } + p.Task = _task + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *CheckTaskNameRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + var issetName bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetName = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetName { + fieldId = 2 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_CheckTaskNameRequest[fieldId])) +} + +func (p *CheckTaskNameRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *CheckTaskNameRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.Name = _field + return offset, nil +} + +func (p *CheckTaskNameRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *CheckTaskNameRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *CheckTaskNameRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *CheckTaskNameRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *CheckTaskNameRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *CheckTaskNameRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.Name) + return offset +} + +func (p *CheckTaskNameRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *CheckTaskNameRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *CheckTaskNameRequest) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.Name) + return l +} + +func (p *CheckTaskNameRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *CheckTaskNameRequest) DeepCopy(s interface{}) error { + src, ok := s.(*CheckTaskNameRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.WorkspaceID = src.WorkspaceID + + if src.Name != "" { + p.Name = kutils.StringDeepCopy(src.Name) + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *CheckTaskNameResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.BOOL { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *CheckTaskNameResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *bool + if v, l, err := thrift.Binary.ReadBool(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Pass = _field + return offset, nil +} + +func (p *CheckTaskNameResponse) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Message = _field + return offset, nil +} + +func (p *CheckTaskNameResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *CheckTaskNameResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *CheckTaskNameResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *CheckTaskNameResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *CheckTaskNameResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetPass() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.BOOL, 1) + offset += thrift.Binary.WriteBool(buf[offset:], *p.Pass) + } + return offset +} + +func (p *CheckTaskNameResponse) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetMessage() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Message) + } + return offset +} + +func (p *CheckTaskNameResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *CheckTaskNameResponse) field1Length() int { + l := 0 + if p.IsSetPass() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.BoolLength() + } + return l +} + +func (p *CheckTaskNameResponse) field2Length() int { + l := 0 + if p.IsSetMessage() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Message) + } + return l +} + +func (p *CheckTaskNameResponse) field255Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + return l +} + +func (p *CheckTaskNameResponse) DeepCopy(s interface{}) error { + src, ok := s.(*CheckTaskNameResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Pass != nil { + tmp := *src.Pass + p.Pass = &tmp + } + + if src.Message != nil { + var tmp string + if *src.Message != "" { + tmp = kutils.StringDeepCopy(*src.Message) + } + p.Message = &tmp + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *TaskServiceCheckTaskNameArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceCheckTaskNameArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskServiceCheckTaskNameArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewCheckTaskNameRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TaskServiceCheckTaskNameArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskServiceCheckTaskNameArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskServiceCheckTaskNameArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskServiceCheckTaskNameArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TaskServiceCheckTaskNameArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TaskServiceCheckTaskNameArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TaskServiceCheckTaskNameArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *CheckTaskNameRequest + if src.Req != nil { + _req = &CheckTaskNameRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TaskServiceCheckTaskNameResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceCheckTaskNameResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskServiceCheckTaskNameResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewCheckTaskNameResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TaskServiceCheckTaskNameResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskServiceCheckTaskNameResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskServiceCheckTaskNameResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskServiceCheckTaskNameResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TaskServiceCheckTaskNameResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TaskServiceCheckTaskNameResult) DeepCopy(s interface{}) error { + src, ok := s.(*TaskServiceCheckTaskNameResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *CheckTaskNameResponse + if src.Success != nil { + _success = &CheckTaskNameResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TaskServiceCreateTaskArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceCreateTaskArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskServiceCreateTaskArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewCreateTaskRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TaskServiceCreateTaskArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskServiceCreateTaskArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskServiceCreateTaskArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskServiceCreateTaskArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TaskServiceCreateTaskArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TaskServiceCreateTaskArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TaskServiceCreateTaskArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *CreateTaskRequest + if src.Req != nil { + _req = &CreateTaskRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TaskServiceCreateTaskResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceCreateTaskResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskServiceCreateTaskResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewCreateTaskResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TaskServiceCreateTaskResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskServiceCreateTaskResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskServiceCreateTaskResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskServiceCreateTaskResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TaskServiceCreateTaskResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TaskServiceCreateTaskResult) DeepCopy(s interface{}) error { + src, ok := s.(*TaskServiceCreateTaskResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *CreateTaskResponse + if src.Success != nil { + _success = &CreateTaskResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TaskServiceUpdateTaskArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceUpdateTaskArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskServiceUpdateTaskArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewUpdateTaskRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TaskServiceUpdateTaskArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskServiceUpdateTaskArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskServiceUpdateTaskArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskServiceUpdateTaskArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TaskServiceUpdateTaskArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TaskServiceUpdateTaskArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TaskServiceUpdateTaskArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *UpdateTaskRequest + if src.Req != nil { + _req = &UpdateTaskRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TaskServiceUpdateTaskResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceUpdateTaskResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskServiceUpdateTaskResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewUpdateTaskResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TaskServiceUpdateTaskResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskServiceUpdateTaskResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskServiceUpdateTaskResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskServiceUpdateTaskResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TaskServiceUpdateTaskResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TaskServiceUpdateTaskResult) DeepCopy(s interface{}) error { + src, ok := s.(*TaskServiceUpdateTaskResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *UpdateTaskResponse + if src.Success != nil { + _success = &UpdateTaskResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TaskServiceListTasksArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceListTasksArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskServiceListTasksArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewListTasksRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TaskServiceListTasksArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskServiceListTasksArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskServiceListTasksArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskServiceListTasksArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TaskServiceListTasksArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TaskServiceListTasksArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TaskServiceListTasksArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *ListTasksRequest + if src.Req != nil { + _req = &ListTasksRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TaskServiceListTasksResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceListTasksResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskServiceListTasksResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewListTasksResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TaskServiceListTasksResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskServiceListTasksResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskServiceListTasksResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskServiceListTasksResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TaskServiceListTasksResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TaskServiceListTasksResult) DeepCopy(s interface{}) error { + src, ok := s.(*TaskServiceListTasksResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *ListTasksResponse + if src.Success != nil { + _success = &ListTasksResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TaskServiceGetTaskArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceGetTaskArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskServiceGetTaskArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewGetTaskRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TaskServiceGetTaskArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskServiceGetTaskArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskServiceGetTaskArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskServiceGetTaskArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TaskServiceGetTaskArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TaskServiceGetTaskArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TaskServiceGetTaskArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *GetTaskRequest + if src.Req != nil { + _req = &GetTaskRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TaskServiceGetTaskResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskServiceGetTaskResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TaskServiceGetTaskResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewGetTaskResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *TaskServiceGetTaskResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TaskServiceGetTaskResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TaskServiceGetTaskResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TaskServiceGetTaskResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TaskServiceGetTaskResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *TaskServiceGetTaskResult) DeepCopy(s interface{}) error { + src, ok := s.(*TaskServiceGetTaskResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *GetTaskResponse + if src.Success != nil { + _success = &GetTaskResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + +func (p *TaskServiceCheckTaskNameArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TaskServiceCheckTaskNameResult) GetResult() interface{} { + return p.Success +} + +func (p *TaskServiceCreateTaskArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TaskServiceCreateTaskResult) GetResult() interface{} { + return p.Success +} + +func (p *TaskServiceUpdateTaskArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TaskServiceUpdateTaskResult) GetResult() interface{} { + return p.Success +} + +func (p *TaskServiceListTasksArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TaskServiceListTasksResult) GetResult() interface{} { + return p.Success +} + +func (p *TaskServiceGetTaskArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TaskServiceGetTaskResult) GetResult() interface{} { + return p.Success +} diff --git a/backend/kitex_gen/coze/loop/observability/task/taskservice/client.go b/backend/kitex_gen/coze/loop/observability/task/taskservice/client.go new file mode 100644 index 000000000..91c5be4b8 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/task/taskservice/client.go @@ -0,0 +1,73 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. + +package taskservice + +import ( + "context" + client "github.com/cloudwego/kitex/client" + callopt "github.com/cloudwego/kitex/client/callopt" + task "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" +) + +// Client is designed to provide IDL-compatible methods with call-option parameter for kitex framework. +type Client interface { + CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest, callOptions ...callopt.Option) (r *task.CheckTaskNameResponse, err error) + CreateTask(ctx context.Context, req *task.CreateTaskRequest, callOptions ...callopt.Option) (r *task.CreateTaskResponse, err error) + UpdateTask(ctx context.Context, req *task.UpdateTaskRequest, callOptions ...callopt.Option) (r *task.UpdateTaskResponse, err error) + ListTasks(ctx context.Context, req *task.ListTasksRequest, callOptions ...callopt.Option) (r *task.ListTasksResponse, err error) + GetTask(ctx context.Context, req *task.GetTaskRequest, callOptions ...callopt.Option) (r *task.GetTaskResponse, err error) +} + +// NewClient creates a client for the service defined in IDL. +func NewClient(destService string, opts ...client.Option) (Client, error) { + var options []client.Option + options = append(options, client.WithDestService(destService)) + + options = append(options, opts...) + + kc, err := client.NewClient(serviceInfo(), options...) + if err != nil { + return nil, err + } + return &kTaskServiceClient{ + kClient: newServiceClient(kc), + }, nil +} + +// MustNewClient creates a client for the service defined in IDL. It panics if any error occurs. +func MustNewClient(destService string, opts ...client.Option) Client { + kc, err := NewClient(destService, opts...) + if err != nil { + panic(err) + } + return kc +} + +type kTaskServiceClient struct { + *kClient +} + +func (p *kTaskServiceClient) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest, callOptions ...callopt.Option) (r *task.CheckTaskNameResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CheckTaskName(ctx, req) +} + +func (p *kTaskServiceClient) CreateTask(ctx context.Context, req *task.CreateTaskRequest, callOptions ...callopt.Option) (r *task.CreateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CreateTask(ctx, req) +} + +func (p *kTaskServiceClient) UpdateTask(ctx context.Context, req *task.UpdateTaskRequest, callOptions ...callopt.Option) (r *task.UpdateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.UpdateTask(ctx, req) +} + +func (p *kTaskServiceClient) ListTasks(ctx context.Context, req *task.ListTasksRequest, callOptions ...callopt.Option) (r *task.ListTasksResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ListTasks(ctx, req) +} + +func (p *kTaskServiceClient) GetTask(ctx context.Context, req *task.GetTaskRequest, callOptions ...callopt.Option) (r *task.GetTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.GetTask(ctx, req) +} diff --git a/backend/kitex_gen/coze/loop/observability/task/taskservice/server.go b/backend/kitex_gen/coze/loop/observability/task/taskservice/server.go new file mode 100644 index 000000000..adae7fb69 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/task/taskservice/server.go @@ -0,0 +1,25 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. +package taskservice + +import ( + server "github.com/cloudwego/kitex/server" + task "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" +) + +// NewServer creates a server.Server with the given handler and options. +func NewServer(handler task.TaskService, opts ...server.Option) server.Server { + var options []server.Option + + options = append(options, opts...) + options = append(options, server.WithCompatibleMiddlewareForUnary()) + + svr := server.NewServer(options...) + if err := svr.RegisterService(serviceInfo(), handler); err != nil { + panic(err) + } + return svr +} + +func RegisterService(svr server.Server, handler task.TaskService, opts ...server.RegisterOption) error { + return svr.RegisterService(serviceInfo(), handler, opts...) +} diff --git a/backend/kitex_gen/coze/loop/observability/task/taskservice/taskservice.go b/backend/kitex_gen/coze/loop/observability/task/taskservice/taskservice.go new file mode 100644 index 000000000..a9bad629e --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/task/taskservice/taskservice.go @@ -0,0 +1,239 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. + +package taskservice + +import ( + "context" + "errors" + client "github.com/cloudwego/kitex/client" + kitex "github.com/cloudwego/kitex/pkg/serviceinfo" + task "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" +) + +var errInvalidMessageType = errors.New("invalid message type for service method handler") + +var serviceMethods = map[string]kitex.MethodInfo{ + "CheckTaskName": kitex.NewMethodInfo( + checkTaskNameHandler, + newTaskServiceCheckTaskNameArgs, + newTaskServiceCheckTaskNameResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "CreateTask": kitex.NewMethodInfo( + createTaskHandler, + newTaskServiceCreateTaskArgs, + newTaskServiceCreateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "UpdateTask": kitex.NewMethodInfo( + updateTaskHandler, + newTaskServiceUpdateTaskArgs, + newTaskServiceUpdateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ListTasks": kitex.NewMethodInfo( + listTasksHandler, + newTaskServiceListTasksArgs, + newTaskServiceListTasksResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "GetTask": kitex.NewMethodInfo( + getTaskHandler, + newTaskServiceGetTaskArgs, + newTaskServiceGetTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), +} + +var ( + taskServiceServiceInfo = NewServiceInfo() +) + +// for server +func serviceInfo() *kitex.ServiceInfo { + return taskServiceServiceInfo +} + +// NewServiceInfo creates a new ServiceInfo +func NewServiceInfo() *kitex.ServiceInfo { + return newServiceInfo() +} + +func newServiceInfo() *kitex.ServiceInfo { + serviceName := "TaskService" + handlerType := (*task.TaskService)(nil) + extra := map[string]interface{}{ + "PackageName": "task", + } + svcInfo := &kitex.ServiceInfo{ + ServiceName: serviceName, + HandlerType: handlerType, + Methods: serviceMethods, + PayloadCodec: kitex.Thrift, + KiteXGenVersion: "v0.13.1", + Extra: extra, + } + return svcInfo +} + +func checkTaskNameHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceCheckTaskNameArgs) + realResult := result.(*task.TaskServiceCheckTaskNameResult) + success, err := handler.(task.TaskService).CheckTaskName(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceCheckTaskNameArgs() interface{} { + return task.NewTaskServiceCheckTaskNameArgs() +} + +func newTaskServiceCheckTaskNameResult() interface{} { + return task.NewTaskServiceCheckTaskNameResult() +} + +func createTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceCreateTaskArgs) + realResult := result.(*task.TaskServiceCreateTaskResult) + success, err := handler.(task.TaskService).CreateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceCreateTaskArgs() interface{} { + return task.NewTaskServiceCreateTaskArgs() +} + +func newTaskServiceCreateTaskResult() interface{} { + return task.NewTaskServiceCreateTaskResult() +} + +func updateTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceUpdateTaskArgs) + realResult := result.(*task.TaskServiceUpdateTaskResult) + success, err := handler.(task.TaskService).UpdateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceUpdateTaskArgs() interface{} { + return task.NewTaskServiceUpdateTaskArgs() +} + +func newTaskServiceUpdateTaskResult() interface{} { + return task.NewTaskServiceUpdateTaskResult() +} + +func listTasksHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceListTasksArgs) + realResult := result.(*task.TaskServiceListTasksResult) + success, err := handler.(task.TaskService).ListTasks(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceListTasksArgs() interface{} { + return task.NewTaskServiceListTasksArgs() +} + +func newTaskServiceListTasksResult() interface{} { + return task.NewTaskServiceListTasksResult() +} + +func getTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceGetTaskArgs) + realResult := result.(*task.TaskServiceGetTaskResult) + success, err := handler.(task.TaskService).GetTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceGetTaskArgs() interface{} { + return task.NewTaskServiceGetTaskArgs() +} + +func newTaskServiceGetTaskResult() interface{} { + return task.NewTaskServiceGetTaskResult() +} + +type kClient struct { + c client.Client + sc client.Streaming +} + +func newServiceClient(c client.Client) *kClient { + return &kClient{ + c: c, + sc: c.(client.Streaming), + } +} + +func (p *kClient) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest) (r *task.CheckTaskNameResponse, err error) { + var _args task.TaskServiceCheckTaskNameArgs + _args.Req = req + var _result task.TaskServiceCheckTaskNameResult + if err = p.c.Call(ctx, "CheckTaskName", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) CreateTask(ctx context.Context, req *task.CreateTaskRequest) (r *task.CreateTaskResponse, err error) { + var _args task.TaskServiceCreateTaskArgs + _args.Req = req + var _result task.TaskServiceCreateTaskResult + if err = p.c.Call(ctx, "CreateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) UpdateTask(ctx context.Context, req *task.UpdateTaskRequest) (r *task.UpdateTaskResponse, err error) { + var _args task.TaskServiceUpdateTaskArgs + _args.Req = req + var _result task.TaskServiceUpdateTaskResult + if err = p.c.Call(ctx, "UpdateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ListTasks(ctx context.Context, req *task.ListTasksRequest) (r *task.ListTasksResponse, err error) { + var _args task.TaskServiceListTasksArgs + _args.Req = req + var _result task.TaskServiceListTasksResult + if err = p.c.Call(ctx, "ListTasks", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) GetTask(ctx context.Context, req *task.GetTaskRequest) (r *task.GetTaskResponse, err error) { + var _args task.TaskServiceGetTaskArgs + _args.Req = req + var _result task.TaskServiceGetTaskResult + if err = p.c.Call(ctx, "GetTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index aa43c173e..445df383f 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -4,8 +4,6 @@ package trace import ( "context" - "database/sql" - "database/sql/driver" "fmt" "github.com/apache/thrift/lib/go/thrift" "github.com/coze-dev/coze-loop/backend/kitex_gen/base" @@ -28,53 +26,6 @@ const ( ContentTypeMultiPart = "MultiPart" ) -type OrderType int64 - -const ( - OrderType_Unknown OrderType = 0 - OrderType_Asc OrderType = 1 - OrderType_Desc OrderType = 2 -) - -func (p OrderType) String() string { - switch p { - case OrderType_Unknown: - return "Unknown" - case OrderType_Asc: - return "Asc" - case OrderType_Desc: - return "Desc" - } - return "" -} - -func OrderTypeFromString(s string) (OrderType, error) { - switch s { - case "Unknown": - return OrderType_Unknown, nil - case "Asc": - return OrderType_Asc, nil - case "Desc": - return OrderType_Desc, nil - } - return OrderType(0), fmt.Errorf("not a valid OrderType string") -} - -func OrderTypePtr(v OrderType) *OrderType { return &v } -func (p *OrderType) Scan(value interface{}) (err error) { - var result sql.NullInt64 - err = result.Scan(value) - *p = OrderType(result.Int64) - return -} - -func (p *OrderType) Value() (driver.Value, error) { - if p == nil { - return nil, nil - } - return int64(*p), nil -} - type ContentType = string type ListSpansRequest struct { @@ -15022,6450 +14973,1070 @@ func (p *ExtractSpanInfoResponse) Field255DeepEqual(src *base.BaseResp) bool { return true } -type CreateTaskRequest struct { - Task *task.Task `thrift:"task,1,required" frugal:"1,required,task.Task" form:"task,required" json:"task,required"` - Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` -} +type TraceService interface { + ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) -func NewCreateTaskRequest() *CreateTaskRequest { - return &CreateTaskRequest{} -} + GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) -func (p *CreateTaskRequest) InitDefault() { -} + BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) -var CreateTaskRequest_Task_DEFAULT *task.Task + IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) -func (p *CreateTaskRequest) GetTask() (v *task.Task) { - if p == nil { - return - } - if !p.IsSetTask() { - return CreateTaskRequest_Task_DEFAULT - } - return p.Task -} + GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) -var CreateTaskRequest_Base_DEFAULT *base.Base + CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) -func (p *CreateTaskRequest) GetBase() (v *base.Base) { - if p == nil { - return - } - if !p.IsSetBase() { - return CreateTaskRequest_Base_DEFAULT - } - return p.Base -} -func (p *CreateTaskRequest) SetTask(val *task.Task) { - p.Task = val -} -func (p *CreateTaskRequest) SetBase(val *base.Base) { - p.Base = val -} + UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) -var fieldIDToName_CreateTaskRequest = map[int16]string{ - 1: "task", - 255: "base", -} + DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) -func (p *CreateTaskRequest) IsSetTask() bool { - return p.Task != nil -} + ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) -func (p *CreateTaskRequest) IsSetBase() bool { - return p.Base != nil -} + CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) -func (p *CreateTaskRequest) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - var issetTask bool = false + UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } + DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } + ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - issetTask = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } + ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (r *ChangeEvaluatorScoreResponse, err error) - if !issetTask { - fieldId = 1 - goto RequiredFieldNotSetError - } - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskRequest[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (r *ListAnnotationEvaluatorsResponse, err error) -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_CreateTaskRequest[fieldId])) + ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (r *ExtractSpanInfoResponse, err error) } -func (p *CreateTaskRequest) ReadField1(iprot thrift.TProtocol) error { - _field := task.NewTask() - if err := _field.Read(iprot); err != nil { - return err - } - p.Task = _field - return nil -} -func (p *CreateTaskRequest) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBase() - if err := _field.Read(iprot); err != nil { - return err - } - p.Base = _field - return nil +type TraceServiceClient struct { + c thrift.TClient } -func (p *CreateTaskRequest) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("CreateTaskRequest"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError +func NewTraceServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *TraceServiceClient { + return &TraceServiceClient{ + c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)), } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *CreateTaskRequest) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("task", thrift.STRUCT, 1); err != nil { - goto WriteFieldBeginError - } - if err := p.Task.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *CreateTaskRequest) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBase() { - if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.Base.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func NewTraceServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *TraceServiceClient { + return &TraceServiceClient{ + c: thrift.NewTStandardClient(iprot, oprot), } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *CreateTaskRequest) String() string { - if p == nil { - return "" +func NewTraceServiceClient(c thrift.TClient) *TraceServiceClient { + return &TraceServiceClient{ + c: c, } - return fmt.Sprintf("CreateTaskRequest(%+v)", *p) - } -func (p *CreateTaskRequest) DeepEqual(ano *CreateTaskRequest) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.Task) { - return false - } - if !p.Field255DeepEqual(ano.Base) { - return false - } - return true +func (p *TraceServiceClient) Client_() thrift.TClient { + return p.c } -func (p *CreateTaskRequest) Field1DeepEqual(src *task.Task) bool { - - if !p.Task.DeepEqual(src) { - return false +func (p *TraceServiceClient) ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) { + var _args TraceServiceListSpansArgs + _args.Req = req + var _result TraceServiceListSpansResult + if err = p.Client_().Call(ctx, "ListSpans", &_args, &_result); err != nil { + return } - return true + return _result.GetSuccess(), nil } -func (p *CreateTaskRequest) Field255DeepEqual(src *base.Base) bool { - - if !p.Base.DeepEqual(src) { - return false +func (p *TraceServiceClient) GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) { + var _args TraceServiceGetTraceArgs + _args.Req = req + var _result TraceServiceGetTraceResult + if err = p.Client_().Call(ctx, "GetTrace", &_args, &_result); err != nil { + return } - return true -} - -type CreateTaskResponse struct { - TaskID *int64 `thrift:"task_id,1,optional" frugal:"1,optional,i64" form:"task_id" json:"task_id,string,omitempty"` - BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` -} - -func NewCreateTaskResponse() *CreateTaskResponse { - return &CreateTaskResponse{} -} - -func (p *CreateTaskResponse) InitDefault() { + return _result.GetSuccess(), nil } - -var CreateTaskResponse_TaskID_DEFAULT int64 - -func (p *CreateTaskResponse) GetTaskID() (v int64) { - if p == nil { +func (p *TraceServiceClient) BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) { + var _args TraceServiceBatchGetTracesAdvanceInfoArgs + _args.Req = req + var _result TraceServiceBatchGetTracesAdvanceInfoResult + if err = p.Client_().Call(ctx, "BatchGetTracesAdvanceInfo", &_args, &_result); err != nil { return } - if !p.IsSetTaskID() { - return CreateTaskResponse_TaskID_DEFAULT - } - return *p.TaskID + return _result.GetSuccess(), nil } - -var CreateTaskResponse_BaseResp_DEFAULT *base.BaseResp - -func (p *CreateTaskResponse) GetBaseResp() (v *base.BaseResp) { - if p == nil { +func (p *TraceServiceClient) IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) { + var _args TraceServiceIngestTracesInnerArgs + _args.Req = req + var _result TraceServiceIngestTracesInnerResult + if err = p.Client_().Call(ctx, "IngestTracesInner", &_args, &_result); err != nil { return } - if !p.IsSetBaseResp() { - return CreateTaskResponse_BaseResp_DEFAULT - } - return p.BaseResp + return _result.GetSuccess(), nil } -func (p *CreateTaskResponse) SetTaskID(val *int64) { - p.TaskID = val -} -func (p *CreateTaskResponse) SetBaseResp(val *base.BaseResp) { - p.BaseResp = val -} - -var fieldIDToName_CreateTaskResponse = map[int16]string{ - 1: "task_id", - 255: "BaseResp", -} - -func (p *CreateTaskResponse) IsSetTaskID() bool { - return p.TaskID != nil -} - -func (p *CreateTaskResponse) IsSetBaseResp() bool { - return p.BaseResp != nil -} - -func (p *CreateTaskResponse) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskResponse[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *CreateTaskResponse) ReadField1(iprot thrift.TProtocol) error { - - var _field *int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = &v - } - p.TaskID = _field - return nil -} -func (p *CreateTaskResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() - if err := _field.Read(iprot); err != nil { - return err - } - p.BaseResp = _field - return nil -} - -func (p *CreateTaskResponse) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("CreateTaskResponse"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *CreateTaskResponse) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetTaskID() { - if err = oprot.WriteFieldBegin("task_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(*p.TaskID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *CreateTaskResponse) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBaseResp() { - if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.BaseResp.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) -} - -func (p *CreateTaskResponse) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("CreateTaskResponse(%+v)", *p) - -} - -func (p *CreateTaskResponse) DeepEqual(ano *CreateTaskResponse) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.TaskID) { - return false - } - if !p.Field255DeepEqual(ano.BaseResp) { - return false - } - return true -} - -func (p *CreateTaskResponse) Field1DeepEqual(src *int64) bool { - - if p.TaskID == src { - return true - } else if p.TaskID == nil || src == nil { - return false - } - if *p.TaskID != *src { - return false - } - return true -} -func (p *CreateTaskResponse) Field255DeepEqual(src *base.BaseResp) bool { - - if !p.BaseResp.DeepEqual(src) { - return false - } - return true -} - -type UpdateTaskRequest struct { - TaskID int64 `thrift:"task_id,1,required" frugal:"1,required,i64" json:"task_id,string,required" path:"task_id,required"` - WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" json:"workspace_id" form:"workspace_id,required" ` - TaskStatus *task.TaskStatus `thrift:"task_status,3,optional" frugal:"3,optional,string" form:"task_status" json:"task_status,omitempty"` - Description *string `thrift:"description,4,optional" frugal:"4,optional,string" form:"description" json:"description,omitempty"` - EffectiveTime *task.EffectiveTime `thrift:"effective_time,5,optional" frugal:"5,optional,task.EffectiveTime" form:"effective_time" json:"effective_time,omitempty"` - SampleRate *float64 `thrift:"sample_rate,6,optional" frugal:"6,optional,double" form:"sample_rate" json:"sample_rate,omitempty"` - Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` -} - -func NewUpdateTaskRequest() *UpdateTaskRequest { - return &UpdateTaskRequest{} -} - -func (p *UpdateTaskRequest) InitDefault() { -} - -func (p *UpdateTaskRequest) GetTaskID() (v int64) { - if p != nil { - return p.TaskID - } - return -} - -func (p *UpdateTaskRequest) GetWorkspaceID() (v int64) { - if p != nil { - return p.WorkspaceID - } - return -} - -var UpdateTaskRequest_TaskStatus_DEFAULT task.TaskStatus - -func (p *UpdateTaskRequest) GetTaskStatus() (v task.TaskStatus) { - if p == nil { - return - } - if !p.IsSetTaskStatus() { - return UpdateTaskRequest_TaskStatus_DEFAULT - } - return *p.TaskStatus -} - -var UpdateTaskRequest_Description_DEFAULT string - -func (p *UpdateTaskRequest) GetDescription() (v string) { - if p == nil { - return - } - if !p.IsSetDescription() { - return UpdateTaskRequest_Description_DEFAULT - } - return *p.Description -} - -var UpdateTaskRequest_EffectiveTime_DEFAULT *task.EffectiveTime - -func (p *UpdateTaskRequest) GetEffectiveTime() (v *task.EffectiveTime) { - if p == nil { - return - } - if !p.IsSetEffectiveTime() { - return UpdateTaskRequest_EffectiveTime_DEFAULT - } - return p.EffectiveTime -} - -var UpdateTaskRequest_SampleRate_DEFAULT float64 - -func (p *UpdateTaskRequest) GetSampleRate() (v float64) { - if p == nil { - return - } - if !p.IsSetSampleRate() { - return UpdateTaskRequest_SampleRate_DEFAULT - } - return *p.SampleRate -} - -var UpdateTaskRequest_Base_DEFAULT *base.Base - -func (p *UpdateTaskRequest) GetBase() (v *base.Base) { - if p == nil { - return - } - if !p.IsSetBase() { - return UpdateTaskRequest_Base_DEFAULT - } - return p.Base -} -func (p *UpdateTaskRequest) SetTaskID(val int64) { - p.TaskID = val -} -func (p *UpdateTaskRequest) SetWorkspaceID(val int64) { - p.WorkspaceID = val -} -func (p *UpdateTaskRequest) SetTaskStatus(val *task.TaskStatus) { - p.TaskStatus = val -} -func (p *UpdateTaskRequest) SetDescription(val *string) { - p.Description = val -} -func (p *UpdateTaskRequest) SetEffectiveTime(val *task.EffectiveTime) { - p.EffectiveTime = val -} -func (p *UpdateTaskRequest) SetSampleRate(val *float64) { - p.SampleRate = val -} -func (p *UpdateTaskRequest) SetBase(val *base.Base) { - p.Base = val -} - -var fieldIDToName_UpdateTaskRequest = map[int16]string{ - 1: "task_id", - 2: "workspace_id", - 3: "task_status", - 4: "description", - 5: "effective_time", - 6: "sample_rate", - 255: "base", -} - -func (p *UpdateTaskRequest) IsSetTaskStatus() bool { - return p.TaskStatus != nil -} - -func (p *UpdateTaskRequest) IsSetDescription() bool { - return p.Description != nil -} - -func (p *UpdateTaskRequest) IsSetEffectiveTime() bool { - return p.EffectiveTime != nil -} - -func (p *UpdateTaskRequest) IsSetSampleRate() bool { - return p.SampleRate != nil -} - -func (p *UpdateTaskRequest) IsSetBase() bool { - return p.Base != nil -} - -func (p *UpdateTaskRequest) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - var issetTaskID bool = false - var issetWorkspaceID bool = false - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - issetTaskID = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 2: - if fieldTypeId == thrift.I64 { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - issetWorkspaceID = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 3: - if fieldTypeId == thrift.STRING { - if err = p.ReadField3(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 4: - if fieldTypeId == thrift.STRING { - if err = p.ReadField4(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 5: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField5(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 6: - if fieldTypeId == thrift.DOUBLE { - if err = p.ReadField6(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - if !issetTaskID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetWorkspaceID { - fieldId = 2 - goto RequiredFieldNotSetError - } - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskRequest[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_UpdateTaskRequest[fieldId])) -} - -func (p *UpdateTaskRequest) ReadField1(iprot thrift.TProtocol) error { - - var _field int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = v - } - p.TaskID = _field - return nil -} -func (p *UpdateTaskRequest) ReadField2(iprot thrift.TProtocol) error { - - var _field int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = v - } - p.WorkspaceID = _field - return nil -} -func (p *UpdateTaskRequest) ReadField3(iprot thrift.TProtocol) error { - - var _field *task.TaskStatus - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.TaskStatus = _field - return nil -} -func (p *UpdateTaskRequest) ReadField4(iprot thrift.TProtocol) error { - - var _field *string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.Description = _field - return nil -} -func (p *UpdateTaskRequest) ReadField5(iprot thrift.TProtocol) error { - _field := task.NewEffectiveTime() - if err := _field.Read(iprot); err != nil { - return err - } - p.EffectiveTime = _field - return nil -} -func (p *UpdateTaskRequest) ReadField6(iprot thrift.TProtocol) error { - - var _field *float64 - if v, err := iprot.ReadDouble(); err != nil { - return err - } else { - _field = &v - } - p.SampleRate = _field - return nil -} -func (p *UpdateTaskRequest) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBase() - if err := _field.Read(iprot); err != nil { - return err - } - p.Base = _field - return nil -} - -func (p *UpdateTaskRequest) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("UpdateTaskRequest"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField2(oprot); err != nil { - fieldId = 2 - goto WriteFieldError - } - if err = p.writeField3(oprot); err != nil { - fieldId = 3 - goto WriteFieldError - } - if err = p.writeField4(oprot); err != nil { - fieldId = 4 - goto WriteFieldError - } - if err = p.writeField5(oprot); err != nil { - fieldId = 5 - goto WriteFieldError - } - if err = p.writeField6(oprot); err != nil { - fieldId = 6 - goto WriteFieldError - } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *UpdateTaskRequest) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("task_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.TaskID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *UpdateTaskRequest) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.WorkspaceID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} -func (p *UpdateTaskRequest) writeField3(oprot thrift.TProtocol) (err error) { - if p.IsSetTaskStatus() { - if err = oprot.WriteFieldBegin("task_status", thrift.STRING, 3); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.TaskStatus); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) -} -func (p *UpdateTaskRequest) writeField4(oprot thrift.TProtocol) (err error) { - if p.IsSetDescription() { - if err = oprot.WriteFieldBegin("description", thrift.STRING, 4); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Description); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) -} -func (p *UpdateTaskRequest) writeField5(oprot thrift.TProtocol) (err error) { - if p.IsSetEffectiveTime() { - if err = oprot.WriteFieldBegin("effective_time", thrift.STRUCT, 5); err != nil { - goto WriteFieldBeginError - } - if err := p.EffectiveTime.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) -} -func (p *UpdateTaskRequest) writeField6(oprot thrift.TProtocol) (err error) { - if p.IsSetSampleRate() { - if err = oprot.WriteFieldBegin("sample_rate", thrift.DOUBLE, 6); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteDouble(*p.SampleRate); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) -} -func (p *UpdateTaskRequest) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBase() { - if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.Base.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) -} - -func (p *UpdateTaskRequest) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("UpdateTaskRequest(%+v)", *p) - -} - -func (p *UpdateTaskRequest) DeepEqual(ano *UpdateTaskRequest) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.TaskID) { - return false - } - if !p.Field2DeepEqual(ano.WorkspaceID) { - return false - } - if !p.Field3DeepEqual(ano.TaskStatus) { - return false - } - if !p.Field4DeepEqual(ano.Description) { - return false - } - if !p.Field5DeepEqual(ano.EffectiveTime) { - return false - } - if !p.Field6DeepEqual(ano.SampleRate) { - return false - } - if !p.Field255DeepEqual(ano.Base) { - return false - } - return true -} - -func (p *UpdateTaskRequest) Field1DeepEqual(src int64) bool { - - if p.TaskID != src { - return false - } - return true -} -func (p *UpdateTaskRequest) Field2DeepEqual(src int64) bool { - - if p.WorkspaceID != src { - return false - } - return true -} -func (p *UpdateTaskRequest) Field3DeepEqual(src *task.TaskStatus) bool { - - if p.TaskStatus == src { - return true - } else if p.TaskStatus == nil || src == nil { - return false - } - if strings.Compare(*p.TaskStatus, *src) != 0 { - return false - } - return true -} -func (p *UpdateTaskRequest) Field4DeepEqual(src *string) bool { - - if p.Description == src { - return true - } else if p.Description == nil || src == nil { - return false - } - if strings.Compare(*p.Description, *src) != 0 { - return false - } - return true -} -func (p *UpdateTaskRequest) Field5DeepEqual(src *task.EffectiveTime) bool { - - if !p.EffectiveTime.DeepEqual(src) { - return false - } - return true -} -func (p *UpdateTaskRequest) Field6DeepEqual(src *float64) bool { - - if p.SampleRate == src { - return true - } else if p.SampleRate == nil || src == nil { - return false - } - if *p.SampleRate != *src { - return false - } - return true -} -func (p *UpdateTaskRequest) Field255DeepEqual(src *base.Base) bool { - - if !p.Base.DeepEqual(src) { - return false - } - return true -} - -type UpdateTaskResponse struct { - BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` -} - -func NewUpdateTaskResponse() *UpdateTaskResponse { - return &UpdateTaskResponse{} -} - -func (p *UpdateTaskResponse) InitDefault() { -} - -var UpdateTaskResponse_BaseResp_DEFAULT *base.BaseResp - -func (p *UpdateTaskResponse) GetBaseResp() (v *base.BaseResp) { - if p == nil { - return - } - if !p.IsSetBaseResp() { - return UpdateTaskResponse_BaseResp_DEFAULT - } - return p.BaseResp -} -func (p *UpdateTaskResponse) SetBaseResp(val *base.BaseResp) { - p.BaseResp = val -} - -var fieldIDToName_UpdateTaskResponse = map[int16]string{ - 255: "BaseResp", -} - -func (p *UpdateTaskResponse) IsSetBaseResp() bool { - return p.BaseResp != nil -} - -func (p *UpdateTaskResponse) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskResponse[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *UpdateTaskResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() - if err := _field.Read(iprot); err != nil { - return err - } - p.BaseResp = _field - return nil -} - -func (p *UpdateTaskResponse) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("UpdateTaskResponse"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField255(oprot); err != nil { - fieldId = 255 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *UpdateTaskResponse) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBaseResp() { - if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.BaseResp.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) -} - -func (p *UpdateTaskResponse) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("UpdateTaskResponse(%+v)", *p) - -} - -func (p *UpdateTaskResponse) DeepEqual(ano *UpdateTaskResponse) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field255DeepEqual(ano.BaseResp) { - return false - } - return true -} - -func (p *UpdateTaskResponse) Field255DeepEqual(src *base.BaseResp) bool { - - if !p.BaseResp.DeepEqual(src) { - return false - } - return true -} - -type ListTasksRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - TaskFilters *filter.TaskFilterFields `thrift:"task_filters,2,optional" frugal:"2,optional,filter.TaskFilterFields" form:"task_filters" json:"task_filters,omitempty"` - /* default 20 max 200 */ - Limit *int32 `thrift:"limit,101,optional" frugal:"101,optional,i32" form:"limit" json:"limit,omitempty"` - Offset *int32 `thrift:"offset,102,optional" frugal:"102,optional,i32" form:"offset" json:"offset,omitempty"` - OrderBy *OrderType `thrift:"order_by,103,optional" frugal:"103,optional,OrderType" form:"order_by" json:"order_by,omitempty"` - Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` -} - -func NewListTasksRequest() *ListTasksRequest { - return &ListTasksRequest{} -} - -func (p *ListTasksRequest) InitDefault() { -} - -func (p *ListTasksRequest) GetWorkspaceID() (v int64) { - if p != nil { - return p.WorkspaceID - } - return -} - -var ListTasksRequest_TaskFilters_DEFAULT *filter.TaskFilterFields - -func (p *ListTasksRequest) GetTaskFilters() (v *filter.TaskFilterFields) { - if p == nil { - return - } - if !p.IsSetTaskFilters() { - return ListTasksRequest_TaskFilters_DEFAULT - } - return p.TaskFilters -} - -var ListTasksRequest_Limit_DEFAULT int32 - -func (p *ListTasksRequest) GetLimit() (v int32) { - if p == nil { - return - } - if !p.IsSetLimit() { - return ListTasksRequest_Limit_DEFAULT - } - return *p.Limit -} - -var ListTasksRequest_Offset_DEFAULT int32 - -func (p *ListTasksRequest) GetOffset() (v int32) { - if p == nil { - return - } - if !p.IsSetOffset() { - return ListTasksRequest_Offset_DEFAULT - } - return *p.Offset -} - -var ListTasksRequest_OrderBy_DEFAULT OrderType - -func (p *ListTasksRequest) GetOrderBy() (v OrderType) { - if p == nil { - return - } - if !p.IsSetOrderBy() { - return ListTasksRequest_OrderBy_DEFAULT - } - return *p.OrderBy -} - -var ListTasksRequest_Base_DEFAULT *base.Base - -func (p *ListTasksRequest) GetBase() (v *base.Base) { - if p == nil { - return - } - if !p.IsSetBase() { - return ListTasksRequest_Base_DEFAULT - } - return p.Base -} -func (p *ListTasksRequest) SetWorkspaceID(val int64) { - p.WorkspaceID = val -} -func (p *ListTasksRequest) SetTaskFilters(val *filter.TaskFilterFields) { - p.TaskFilters = val -} -func (p *ListTasksRequest) SetLimit(val *int32) { - p.Limit = val -} -func (p *ListTasksRequest) SetOffset(val *int32) { - p.Offset = val -} -func (p *ListTasksRequest) SetOrderBy(val *OrderType) { - p.OrderBy = val -} -func (p *ListTasksRequest) SetBase(val *base.Base) { - p.Base = val -} - -var fieldIDToName_ListTasksRequest = map[int16]string{ - 1: "workspace_id", - 2: "task_filters", - 101: "limit", - 102: "offset", - 103: "order_by", - 255: "base", -} - -func (p *ListTasksRequest) IsSetTaskFilters() bool { - return p.TaskFilters != nil -} - -func (p *ListTasksRequest) IsSetLimit() bool { - return p.Limit != nil -} - -func (p *ListTasksRequest) IsSetOffset() bool { - return p.Offset != nil -} - -func (p *ListTasksRequest) IsSetOrderBy() bool { - return p.OrderBy != nil -} - -func (p *ListTasksRequest) IsSetBase() bool { - return p.Base != nil -} - -func (p *ListTasksRequest) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - var issetWorkspaceID bool = false - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - issetWorkspaceID = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 2: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 101: - if fieldTypeId == thrift.I32 { - if err = p.ReadField101(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 102: - if fieldTypeId == thrift.I32 { - if err = p.ReadField102(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 103: - if fieldTypeId == thrift.I32 { - if err = p.ReadField103(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - if !issetWorkspaceID { - fieldId = 1 - goto RequiredFieldNotSetError - } - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksRequest[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListTasksRequest[fieldId])) -} - -func (p *ListTasksRequest) ReadField1(iprot thrift.TProtocol) error { - - var _field int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = v - } - p.WorkspaceID = _field - return nil -} -func (p *ListTasksRequest) ReadField2(iprot thrift.TProtocol) error { - _field := filter.NewTaskFilterFields() - if err := _field.Read(iprot); err != nil { - return err - } - p.TaskFilters = _field - return nil -} -func (p *ListTasksRequest) ReadField101(iprot thrift.TProtocol) error { - - var _field *int32 - if v, err := iprot.ReadI32(); err != nil { - return err - } else { - _field = &v - } - p.Limit = _field - return nil -} -func (p *ListTasksRequest) ReadField102(iprot thrift.TProtocol) error { - - var _field *int32 - if v, err := iprot.ReadI32(); err != nil { - return err - } else { - _field = &v - } - p.Offset = _field - return nil -} -func (p *ListTasksRequest) ReadField103(iprot thrift.TProtocol) error { - - var _field *OrderType - if v, err := iprot.ReadI32(); err != nil { - return err - } else { - tmp := OrderType(v) - _field = &tmp - } - p.OrderBy = _field - return nil -} -func (p *ListTasksRequest) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBase() - if err := _field.Read(iprot); err != nil { - return err - } - p.Base = _field - return nil -} - -func (p *ListTasksRequest) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("ListTasksRequest"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField2(oprot); err != nil { - fieldId = 2 - goto WriteFieldError - } - if err = p.writeField101(oprot); err != nil { - fieldId = 101 - goto WriteFieldError - } - if err = p.writeField102(oprot); err != nil { - fieldId = 102 - goto WriteFieldError - } - if err = p.writeField103(oprot); err != nil { - fieldId = 103 - goto WriteFieldError - } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *ListTasksRequest) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.WorkspaceID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *ListTasksRequest) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetTaskFilters() { - if err = oprot.WriteFieldBegin("task_filters", thrift.STRUCT, 2); err != nil { - goto WriteFieldBeginError - } - if err := p.TaskFilters.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} -func (p *ListTasksRequest) writeField101(oprot thrift.TProtocol) (err error) { - if p.IsSetLimit() { - if err = oprot.WriteFieldBegin("limit", thrift.I32, 101); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI32(*p.Limit); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 101 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 101 end error: ", p), err) -} -func (p *ListTasksRequest) writeField102(oprot thrift.TProtocol) (err error) { - if p.IsSetOffset() { - if err = oprot.WriteFieldBegin("offset", thrift.I32, 102); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI32(*p.Offset); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 102 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 102 end error: ", p), err) -} -func (p *ListTasksRequest) writeField103(oprot thrift.TProtocol) (err error) { - if p.IsSetOrderBy() { - if err = oprot.WriteFieldBegin("order_by", thrift.I32, 103); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI32(int32(*p.OrderBy)); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 103 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 103 end error: ", p), err) -} -func (p *ListTasksRequest) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBase() { - if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.Base.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) -} - -func (p *ListTasksRequest) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("ListTasksRequest(%+v)", *p) - -} - -func (p *ListTasksRequest) DeepEqual(ano *ListTasksRequest) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.WorkspaceID) { - return false - } - if !p.Field2DeepEqual(ano.TaskFilters) { - return false - } - if !p.Field101DeepEqual(ano.Limit) { - return false - } - if !p.Field102DeepEqual(ano.Offset) { - return false - } - if !p.Field103DeepEqual(ano.OrderBy) { - return false - } - if !p.Field255DeepEqual(ano.Base) { - return false - } - return true -} - -func (p *ListTasksRequest) Field1DeepEqual(src int64) bool { - - if p.WorkspaceID != src { - return false - } - return true -} -func (p *ListTasksRequest) Field2DeepEqual(src *filter.TaskFilterFields) bool { - - if !p.TaskFilters.DeepEqual(src) { - return false - } - return true -} -func (p *ListTasksRequest) Field101DeepEqual(src *int32) bool { - - if p.Limit == src { - return true - } else if p.Limit == nil || src == nil { - return false - } - if *p.Limit != *src { - return false - } - return true -} -func (p *ListTasksRequest) Field102DeepEqual(src *int32) bool { - - if p.Offset == src { - return true - } else if p.Offset == nil || src == nil { - return false - } - if *p.Offset != *src { - return false - } - return true -} -func (p *ListTasksRequest) Field103DeepEqual(src *OrderType) bool { - - if p.OrderBy == src { - return true - } else if p.OrderBy == nil || src == nil { - return false - } - if *p.OrderBy != *src { - return false - } - return true -} -func (p *ListTasksRequest) Field255DeepEqual(src *base.Base) bool { - - if !p.Base.DeepEqual(src) { - return false - } - return true -} - -type ListTasksResponse struct { - Tasks []*task.Task `thrift:"tasks,1,optional" frugal:"1,optional,list" form:"tasks" json:"tasks,omitempty"` - Total *int64 `thrift:"total,100,optional" frugal:"100,optional,i64" form:"total" json:"total,string,omitempty"` - BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` -} - -func NewListTasksResponse() *ListTasksResponse { - return &ListTasksResponse{} -} - -func (p *ListTasksResponse) InitDefault() { -} - -var ListTasksResponse_Tasks_DEFAULT []*task.Task - -func (p *ListTasksResponse) GetTasks() (v []*task.Task) { - if p == nil { - return - } - if !p.IsSetTasks() { - return ListTasksResponse_Tasks_DEFAULT - } - return p.Tasks -} - -var ListTasksResponse_Total_DEFAULT int64 - -func (p *ListTasksResponse) GetTotal() (v int64) { - if p == nil { - return - } - if !p.IsSetTotal() { - return ListTasksResponse_Total_DEFAULT - } - return *p.Total -} - -var ListTasksResponse_BaseResp_DEFAULT *base.BaseResp - -func (p *ListTasksResponse) GetBaseResp() (v *base.BaseResp) { - if p == nil { - return - } - if !p.IsSetBaseResp() { - return ListTasksResponse_BaseResp_DEFAULT - } - return p.BaseResp -} -func (p *ListTasksResponse) SetTasks(val []*task.Task) { - p.Tasks = val -} -func (p *ListTasksResponse) SetTotal(val *int64) { - p.Total = val -} -func (p *ListTasksResponse) SetBaseResp(val *base.BaseResp) { - p.BaseResp = val -} - -var fieldIDToName_ListTasksResponse = map[int16]string{ - 1: "tasks", - 100: "total", - 255: "BaseResp", -} - -func (p *ListTasksResponse) IsSetTasks() bool { - return p.Tasks != nil -} - -func (p *ListTasksResponse) IsSetTotal() bool { - return p.Total != nil -} - -func (p *ListTasksResponse) IsSetBaseResp() bool { - return p.BaseResp != nil -} - -func (p *ListTasksResponse) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.LIST { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 100: - if fieldTypeId == thrift.I64 { - if err = p.ReadField100(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksResponse[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *ListTasksResponse) ReadField1(iprot thrift.TProtocol) error { - _, size, err := iprot.ReadListBegin() - if err != nil { - return err - } - _field := make([]*task.Task, 0, size) - values := make([]task.Task, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - - if err := _elem.Read(iprot); err != nil { - return err - } - - _field = append(_field, _elem) - } - if err := iprot.ReadListEnd(); err != nil { - return err - } - p.Tasks = _field - return nil -} -func (p *ListTasksResponse) ReadField100(iprot thrift.TProtocol) error { - - var _field *int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = &v - } - p.Total = _field - return nil -} -func (p *ListTasksResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() - if err := _field.Read(iprot); err != nil { - return err - } - p.BaseResp = _field - return nil -} - -func (p *ListTasksResponse) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("ListTasksResponse"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField100(oprot); err != nil { - fieldId = 100 - goto WriteFieldError - } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *ListTasksResponse) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetTasks() { - if err = oprot.WriteFieldBegin("tasks", thrift.LIST, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Tasks)); err != nil { - return err - } - for _, v := range p.Tasks { - if err := v.Write(oprot); err != nil { - return err - } - } - if err := oprot.WriteListEnd(); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *ListTasksResponse) writeField100(oprot thrift.TProtocol) (err error) { - if p.IsSetTotal() { - if err = oprot.WriteFieldBegin("total", thrift.I64, 100); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(*p.Total); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 100 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) -} -func (p *ListTasksResponse) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBaseResp() { - if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.BaseResp.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) -} - -func (p *ListTasksResponse) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("ListTasksResponse(%+v)", *p) - -} - -func (p *ListTasksResponse) DeepEqual(ano *ListTasksResponse) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.Tasks) { - return false - } - if !p.Field100DeepEqual(ano.Total) { - return false - } - if !p.Field255DeepEqual(ano.BaseResp) { - return false - } - return true -} - -func (p *ListTasksResponse) Field1DeepEqual(src []*task.Task) bool { - - if len(p.Tasks) != len(src) { - return false - } - for i, v := range p.Tasks { - _src := src[i] - if !v.DeepEqual(_src) { - return false - } - } - return true -} -func (p *ListTasksResponse) Field100DeepEqual(src *int64) bool { - - if p.Total == src { - return true - } else if p.Total == nil || src == nil { - return false - } - if *p.Total != *src { - return false - } - return true -} -func (p *ListTasksResponse) Field255DeepEqual(src *base.BaseResp) bool { - - if !p.BaseResp.DeepEqual(src) { - return false - } - return true -} - -type GetTaskRequest struct { - TaskID int64 `thrift:"task_id,1,required" frugal:"1,required,i64" json:"task_id,string,required" path:"task_id,required"` - WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" json:"workspace_id" form:"workspace_id,required" ` - Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` -} - -func NewGetTaskRequest() *GetTaskRequest { - return &GetTaskRequest{} -} - -func (p *GetTaskRequest) InitDefault() { -} - -func (p *GetTaskRequest) GetTaskID() (v int64) { - if p != nil { - return p.TaskID - } - return -} - -func (p *GetTaskRequest) GetWorkspaceID() (v int64) { - if p != nil { - return p.WorkspaceID - } - return -} - -var GetTaskRequest_Base_DEFAULT *base.Base - -func (p *GetTaskRequest) GetBase() (v *base.Base) { - if p == nil { - return - } - if !p.IsSetBase() { - return GetTaskRequest_Base_DEFAULT - } - return p.Base -} -func (p *GetTaskRequest) SetTaskID(val int64) { - p.TaskID = val -} -func (p *GetTaskRequest) SetWorkspaceID(val int64) { - p.WorkspaceID = val -} -func (p *GetTaskRequest) SetBase(val *base.Base) { - p.Base = val -} - -var fieldIDToName_GetTaskRequest = map[int16]string{ - 1: "task_id", - 2: "workspace_id", - 255: "base", -} - -func (p *GetTaskRequest) IsSetBase() bool { - return p.Base != nil -} - -func (p *GetTaskRequest) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - var issetTaskID bool = false - var issetWorkspaceID bool = false - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - issetTaskID = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 2: - if fieldTypeId == thrift.I64 { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - issetWorkspaceID = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - if !issetTaskID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetWorkspaceID { - fieldId = 2 - goto RequiredFieldNotSetError - } - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskRequest[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_GetTaskRequest[fieldId])) -} - -func (p *GetTaskRequest) ReadField1(iprot thrift.TProtocol) error { - - var _field int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = v - } - p.TaskID = _field - return nil -} -func (p *GetTaskRequest) ReadField2(iprot thrift.TProtocol) error { - - var _field int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = v - } - p.WorkspaceID = _field - return nil -} -func (p *GetTaskRequest) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBase() - if err := _field.Read(iprot); err != nil { - return err - } - p.Base = _field - return nil -} - -func (p *GetTaskRequest) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("GetTaskRequest"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField2(oprot); err != nil { - fieldId = 2 - goto WriteFieldError - } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *GetTaskRequest) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("task_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.TaskID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *GetTaskRequest) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.WorkspaceID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} -func (p *GetTaskRequest) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBase() { - if err = oprot.WriteFieldBegin("base", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.Base.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) -} - -func (p *GetTaskRequest) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("GetTaskRequest(%+v)", *p) - -} - -func (p *GetTaskRequest) DeepEqual(ano *GetTaskRequest) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.TaskID) { - return false - } - if !p.Field2DeepEqual(ano.WorkspaceID) { - return false - } - if !p.Field255DeepEqual(ano.Base) { - return false - } - return true -} - -func (p *GetTaskRequest) Field1DeepEqual(src int64) bool { - - if p.TaskID != src { - return false - } - return true -} -func (p *GetTaskRequest) Field2DeepEqual(src int64) bool { - - if p.WorkspaceID != src { - return false - } - return true -} -func (p *GetTaskRequest) Field255DeepEqual(src *base.Base) bool { - - if !p.Base.DeepEqual(src) { - return false - } - return true -} - -type GetTaskResponse struct { - Task *task.Task `thrift:"task,1,optional" frugal:"1,optional,task.Task" form:"task" json:"task,omitempty"` - BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` -} - -func NewGetTaskResponse() *GetTaskResponse { - return &GetTaskResponse{} -} - -func (p *GetTaskResponse) InitDefault() { -} - -var GetTaskResponse_Task_DEFAULT *task.Task - -func (p *GetTaskResponse) GetTask() (v *task.Task) { - if p == nil { - return - } - if !p.IsSetTask() { - return GetTaskResponse_Task_DEFAULT - } - return p.Task -} - -var GetTaskResponse_BaseResp_DEFAULT *base.BaseResp - -func (p *GetTaskResponse) GetBaseResp() (v *base.BaseResp) { - if p == nil { - return - } - if !p.IsSetBaseResp() { - return GetTaskResponse_BaseResp_DEFAULT - } - return p.BaseResp -} -func (p *GetTaskResponse) SetTask(val *task.Task) { - p.Task = val -} -func (p *GetTaskResponse) SetBaseResp(val *base.BaseResp) { - p.BaseResp = val -} - -var fieldIDToName_GetTaskResponse = map[int16]string{ - 1: "task", - 255: "BaseResp", -} - -func (p *GetTaskResponse) IsSetTask() bool { - return p.Task != nil -} - -func (p *GetTaskResponse) IsSetBaseResp() bool { - return p.BaseResp != nil -} - -func (p *GetTaskResponse) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskResponse[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *GetTaskResponse) ReadField1(iprot thrift.TProtocol) error { - _field := task.NewTask() - if err := _field.Read(iprot); err != nil { - return err - } - p.Task = _field - return nil -} -func (p *GetTaskResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() - if err := _field.Read(iprot); err != nil { - return err - } - p.BaseResp = _field - return nil -} - -func (p *GetTaskResponse) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("GetTaskResponse"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *GetTaskResponse) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetTask() { - if err = oprot.WriteFieldBegin("task", thrift.STRUCT, 1); err != nil { - goto WriteFieldBeginError - } - if err := p.Task.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *GetTaskResponse) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBaseResp() { - if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.BaseResp.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) -} - -func (p *GetTaskResponse) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("GetTaskResponse(%+v)", *p) - -} - -func (p *GetTaskResponse) DeepEqual(ano *GetTaskResponse) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.Task) { - return false - } - if !p.Field255DeepEqual(ano.BaseResp) { - return false - } - return true -} - -func (p *GetTaskResponse) Field1DeepEqual(src *task.Task) bool { - - if !p.Task.DeepEqual(src) { - return false - } - return true -} -func (p *GetTaskResponse) Field255DeepEqual(src *base.BaseResp) bool { - - if !p.BaseResp.DeepEqual(src) { - return false - } - return true -} - -type CheckTaskNameRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - Name string `thrift:"name,2,required" frugal:"2,required,string" form:"name,required" json:"name,required"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` -} - -func NewCheckTaskNameRequest() *CheckTaskNameRequest { - return &CheckTaskNameRequest{} -} - -func (p *CheckTaskNameRequest) InitDefault() { -} - -func (p *CheckTaskNameRequest) GetWorkspaceID() (v int64) { - if p != nil { - return p.WorkspaceID - } - return -} - -func (p *CheckTaskNameRequest) GetName() (v string) { - if p != nil { - return p.Name - } - return -} - -var CheckTaskNameRequest_Base_DEFAULT *base.Base - -func (p *CheckTaskNameRequest) GetBase() (v *base.Base) { - if p == nil { - return - } - if !p.IsSetBase() { - return CheckTaskNameRequest_Base_DEFAULT - } - return p.Base -} -func (p *CheckTaskNameRequest) SetWorkspaceID(val int64) { - p.WorkspaceID = val -} -func (p *CheckTaskNameRequest) SetName(val string) { - p.Name = val -} -func (p *CheckTaskNameRequest) SetBase(val *base.Base) { - p.Base = val -} - -var fieldIDToName_CheckTaskNameRequest = map[int16]string{ - 1: "workspace_id", - 2: "name", - 255: "Base", -} - -func (p *CheckTaskNameRequest) IsSetBase() bool { - return p.Base != nil -} - -func (p *CheckTaskNameRequest) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - var issetWorkspaceID bool = false - var issetName bool = false - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - issetWorkspaceID = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 2: - if fieldTypeId == thrift.STRING { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - issetName = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - if !issetWorkspaceID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetName { - fieldId = 2 - goto RequiredFieldNotSetError - } - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameRequest[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_CheckTaskNameRequest[fieldId])) -} - -func (p *CheckTaskNameRequest) ReadField1(iprot thrift.TProtocol) error { - - var _field int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = v - } - p.WorkspaceID = _field - return nil -} -func (p *CheckTaskNameRequest) ReadField2(iprot thrift.TProtocol) error { - - var _field string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = v - } - p.Name = _field - return nil -} -func (p *CheckTaskNameRequest) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBase() - if err := _field.Read(iprot); err != nil { - return err - } - p.Base = _field - return nil -} - -func (p *CheckTaskNameRequest) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("CheckTaskNameRequest"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField2(oprot); err != nil { - fieldId = 2 - goto WriteFieldError - } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *CheckTaskNameRequest) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.WorkspaceID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *CheckTaskNameRequest) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(p.Name); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} -func (p *CheckTaskNameRequest) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBase() { - if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.Base.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) -} - -func (p *CheckTaskNameRequest) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("CheckTaskNameRequest(%+v)", *p) - -} - -func (p *CheckTaskNameRequest) DeepEqual(ano *CheckTaskNameRequest) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.WorkspaceID) { - return false - } - if !p.Field2DeepEqual(ano.Name) { - return false - } - if !p.Field255DeepEqual(ano.Base) { - return false - } - return true -} - -func (p *CheckTaskNameRequest) Field1DeepEqual(src int64) bool { - - if p.WorkspaceID != src { - return false - } - return true -} -func (p *CheckTaskNameRequest) Field2DeepEqual(src string) bool { - - if strings.Compare(p.Name, src) != 0 { - return false - } - return true -} -func (p *CheckTaskNameRequest) Field255DeepEqual(src *base.Base) bool { - - if !p.Base.DeepEqual(src) { - return false - } - return true -} - -type CheckTaskNameResponse struct { - Pass *bool `thrift:"Pass,1,optional" frugal:"1,optional,bool" form:"Pass" json:"Pass,omitempty" query:"Pass"` - Message *string `thrift:"Message,2,optional" frugal:"2,optional,string" form:"Message" json:"Message,omitempty" query:"Message"` - BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` -} - -func NewCheckTaskNameResponse() *CheckTaskNameResponse { - return &CheckTaskNameResponse{} -} - -func (p *CheckTaskNameResponse) InitDefault() { -} - -var CheckTaskNameResponse_Pass_DEFAULT bool - -func (p *CheckTaskNameResponse) GetPass() (v bool) { - if p == nil { - return - } - if !p.IsSetPass() { - return CheckTaskNameResponse_Pass_DEFAULT - } - return *p.Pass -} - -var CheckTaskNameResponse_Message_DEFAULT string - -func (p *CheckTaskNameResponse) GetMessage() (v string) { - if p == nil { - return - } - if !p.IsSetMessage() { - return CheckTaskNameResponse_Message_DEFAULT - } - return *p.Message -} - -var CheckTaskNameResponse_BaseResp_DEFAULT *base.BaseResp - -func (p *CheckTaskNameResponse) GetBaseResp() (v *base.BaseResp) { - if p == nil { - return - } - if !p.IsSetBaseResp() { - return CheckTaskNameResponse_BaseResp_DEFAULT - } - return p.BaseResp -} -func (p *CheckTaskNameResponse) SetPass(val *bool) { - p.Pass = val -} -func (p *CheckTaskNameResponse) SetMessage(val *string) { - p.Message = val -} -func (p *CheckTaskNameResponse) SetBaseResp(val *base.BaseResp) { - p.BaseResp = val -} - -var fieldIDToName_CheckTaskNameResponse = map[int16]string{ - 1: "Pass", - 2: "Message", - 255: "BaseResp", -} - -func (p *CheckTaskNameResponse) IsSetPass() bool { - return p.Pass != nil -} - -func (p *CheckTaskNameResponse) IsSetMessage() bool { - return p.Message != nil -} - -func (p *CheckTaskNameResponse) IsSetBaseResp() bool { - return p.BaseResp != nil -} - -func (p *CheckTaskNameResponse) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.BOOL { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 2: - if fieldTypeId == thrift.STRING { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameResponse[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *CheckTaskNameResponse) ReadField1(iprot thrift.TProtocol) error { - - var _field *bool - if v, err := iprot.ReadBool(); err != nil { - return err - } else { - _field = &v - } - p.Pass = _field - return nil -} -func (p *CheckTaskNameResponse) ReadField2(iprot thrift.TProtocol) error { - - var _field *string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.Message = _field - return nil -} -func (p *CheckTaskNameResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() - if err := _field.Read(iprot); err != nil { - return err - } - p.BaseResp = _field - return nil -} - -func (p *CheckTaskNameResponse) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("CheckTaskNameResponse"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField2(oprot); err != nil { - fieldId = 2 - goto WriteFieldError - } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *CheckTaskNameResponse) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetPass() { - if err = oprot.WriteFieldBegin("Pass", thrift.BOOL, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteBool(*p.Pass); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *CheckTaskNameResponse) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetMessage() { - if err = oprot.WriteFieldBegin("Message", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Message); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} -func (p *CheckTaskNameResponse) writeField255(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.BaseResp.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) -} - -func (p *CheckTaskNameResponse) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("CheckTaskNameResponse(%+v)", *p) - -} - -func (p *CheckTaskNameResponse) DeepEqual(ano *CheckTaskNameResponse) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.Pass) { - return false - } - if !p.Field2DeepEqual(ano.Message) { - return false - } - if !p.Field255DeepEqual(ano.BaseResp) { - return false - } - return true -} - -func (p *CheckTaskNameResponse) Field1DeepEqual(src *bool) bool { - - if p.Pass == src { - return true - } else if p.Pass == nil || src == nil { - return false - } - if *p.Pass != *src { - return false - } - return true -} -func (p *CheckTaskNameResponse) Field2DeepEqual(src *string) bool { - - if p.Message == src { - return true - } else if p.Message == nil || src == nil { - return false - } - if strings.Compare(*p.Message, *src) != 0 { - return false - } - return true -} -func (p *CheckTaskNameResponse) Field255DeepEqual(src *base.BaseResp) bool { - - if !p.BaseResp.DeepEqual(src) { - return false - } - return true -} - -type TraceService interface { - ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) - - GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) - - BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) - - IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) - - GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) - - CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) - - UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) - - DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) - - ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) - - CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) - - UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) - - DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) - - ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) - - ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (r *ChangeEvaluatorScoreResponse, err error) - - ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (r *ListAnnotationEvaluatorsResponse, err error) - - ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (r *ExtractSpanInfoResponse, err error) - - CheckTaskName(ctx context.Context, req *CheckTaskNameRequest) (r *CheckTaskNameResponse, err error) - - CreateTask(ctx context.Context, req *CreateTaskRequest) (r *CreateTaskResponse, err error) - - UpdateTask(ctx context.Context, req *UpdateTaskRequest) (r *UpdateTaskResponse, err error) - - ListTasks(ctx context.Context, req *ListTasksRequest) (r *ListTasksResponse, err error) - - GetTask(ctx context.Context, req *GetTaskRequest) (r *GetTaskResponse, err error) -} - -type TraceServiceClient struct { - c thrift.TClient -} - -func NewTraceServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *TraceServiceClient { - return &TraceServiceClient{ - c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)), - } -} - -func NewTraceServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *TraceServiceClient { - return &TraceServiceClient{ - c: thrift.NewTStandardClient(iprot, oprot), - } -} - -func NewTraceServiceClient(c thrift.TClient) *TraceServiceClient { - return &TraceServiceClient{ - c: c, - } -} - -func (p *TraceServiceClient) Client_() thrift.TClient { - return p.c -} - -func (p *TraceServiceClient) ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) { - var _args TraceServiceListSpansArgs - _args.Req = req - var _result TraceServiceListSpansResult - if err = p.Client_().Call(ctx, "ListSpans", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) { - var _args TraceServiceGetTraceArgs - _args.Req = req - var _result TraceServiceGetTraceResult - if err = p.Client_().Call(ctx, "GetTrace", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) { - var _args TraceServiceBatchGetTracesAdvanceInfoArgs - _args.Req = req - var _result TraceServiceBatchGetTracesAdvanceInfoResult - if err = p.Client_().Call(ctx, "BatchGetTracesAdvanceInfo", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) { - var _args TraceServiceIngestTracesInnerArgs - _args.Req = req - var _result TraceServiceIngestTracesInnerResult - if err = p.Client_().Call(ctx, "IngestTracesInner", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) { - var _args TraceServiceGetTracesMetaInfoArgs - _args.Req = req - var _result TraceServiceGetTracesMetaInfoResult - if err = p.Client_().Call(ctx, "GetTracesMetaInfo", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) { - var _args TraceServiceCreateViewArgs - _args.Req = req - var _result TraceServiceCreateViewResult - if err = p.Client_().Call(ctx, "CreateView", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) { - var _args TraceServiceUpdateViewArgs - _args.Req = req - var _result TraceServiceUpdateViewResult - if err = p.Client_().Call(ctx, "UpdateView", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) { - var _args TraceServiceDeleteViewArgs - _args.Req = req - var _result TraceServiceDeleteViewResult - if err = p.Client_().Call(ctx, "DeleteView", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) { - var _args TraceServiceListViewsArgs - _args.Req = req - var _result TraceServiceListViewsResult - if err = p.Client_().Call(ctx, "ListViews", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) { - var _args TraceServiceCreateManualAnnotationArgs - _args.Req = req - var _result TraceServiceCreateManualAnnotationResult - if err = p.Client_().Call(ctx, "CreateManualAnnotation", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) { - var _args TraceServiceUpdateManualAnnotationArgs - _args.Req = req - var _result TraceServiceUpdateManualAnnotationResult - if err = p.Client_().Call(ctx, "UpdateManualAnnotation", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) { - var _args TraceServiceDeleteManualAnnotationArgs - _args.Req = req - var _result TraceServiceDeleteManualAnnotationResult - if err = p.Client_().Call(ctx, "DeleteManualAnnotation", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) { - var _args TraceServiceListAnnotationsArgs - _args.Req = req - var _result TraceServiceListAnnotationsResult - if err = p.Client_().Call(ctx, "ListAnnotations", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (r *ChangeEvaluatorScoreResponse, err error) { - var _args TraceServiceChangeEvaluatorScoreArgs - _args.Req = req - var _result TraceServiceChangeEvaluatorScoreResult - if err = p.Client_().Call(ctx, "ChangeEvaluatorScore", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (r *ListAnnotationEvaluatorsResponse, err error) { - var _args TraceServiceListAnnotationEvaluatorsArgs - _args.Req = req - var _result TraceServiceListAnnotationEvaluatorsResult - if err = p.Client_().Call(ctx, "ListAnnotationEvaluators", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (r *ExtractSpanInfoResponse, err error) { - var _args TraceServiceExtractSpanInfoArgs - _args.Req = req - var _result TraceServiceExtractSpanInfoResult - if err = p.Client_().Call(ctx, "ExtractSpanInfo", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) CheckTaskName(ctx context.Context, req *CheckTaskNameRequest) (r *CheckTaskNameResponse, err error) { - var _args TraceServiceCheckTaskNameArgs - _args.Req = req - var _result TraceServiceCheckTaskNameResult - if err = p.Client_().Call(ctx, "CheckTaskName", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) CreateTask(ctx context.Context, req *CreateTaskRequest) (r *CreateTaskResponse, err error) { - var _args TraceServiceCreateTaskArgs - _args.Req = req - var _result TraceServiceCreateTaskResult - if err = p.Client_().Call(ctx, "CreateTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) UpdateTask(ctx context.Context, req *UpdateTaskRequest) (r *UpdateTaskResponse, err error) { - var _args TraceServiceUpdateTaskArgs - _args.Req = req - var _result TraceServiceUpdateTaskResult - if err = p.Client_().Call(ctx, "UpdateTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) ListTasks(ctx context.Context, req *ListTasksRequest) (r *ListTasksResponse, err error) { - var _args TraceServiceListTasksArgs - _args.Req = req - var _result TraceServiceListTasksResult - if err = p.Client_().Call(ctx, "ListTasks", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) GetTask(ctx context.Context, req *GetTaskRequest) (r *GetTaskResponse, err error) { - var _args TraceServiceGetTaskArgs - _args.Req = req - var _result TraceServiceGetTaskResult - if err = p.Client_().Call(ctx, "GetTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -type TraceServiceProcessor struct { - processorMap map[string]thrift.TProcessorFunction - handler TraceService -} - -func (p *TraceServiceProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) { - p.processorMap[key] = processor -} - -func (p *TraceServiceProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) { - processor, ok = p.processorMap[key] - return processor, ok -} - -func (p *TraceServiceProcessor) ProcessorMap() map[string]thrift.TProcessorFunction { - return p.processorMap -} - -func NewTraceServiceProcessor(handler TraceService) *TraceServiceProcessor { - self := &TraceServiceProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)} - self.AddToProcessorMap("ListSpans", &traceServiceProcessorListSpans{handler: handler}) - self.AddToProcessorMap("GetTrace", &traceServiceProcessorGetTrace{handler: handler}) - self.AddToProcessorMap("BatchGetTracesAdvanceInfo", &traceServiceProcessorBatchGetTracesAdvanceInfo{handler: handler}) - self.AddToProcessorMap("IngestTracesInner", &traceServiceProcessorIngestTracesInner{handler: handler}) - self.AddToProcessorMap("GetTracesMetaInfo", &traceServiceProcessorGetTracesMetaInfo{handler: handler}) - self.AddToProcessorMap("CreateView", &traceServiceProcessorCreateView{handler: handler}) - self.AddToProcessorMap("UpdateView", &traceServiceProcessorUpdateView{handler: handler}) - self.AddToProcessorMap("DeleteView", &traceServiceProcessorDeleteView{handler: handler}) - self.AddToProcessorMap("ListViews", &traceServiceProcessorListViews{handler: handler}) - self.AddToProcessorMap("CreateManualAnnotation", &traceServiceProcessorCreateManualAnnotation{handler: handler}) - self.AddToProcessorMap("UpdateManualAnnotation", &traceServiceProcessorUpdateManualAnnotation{handler: handler}) - self.AddToProcessorMap("DeleteManualAnnotation", &traceServiceProcessorDeleteManualAnnotation{handler: handler}) - self.AddToProcessorMap("ListAnnotations", &traceServiceProcessorListAnnotations{handler: handler}) - self.AddToProcessorMap("ChangeEvaluatorScore", &traceServiceProcessorChangeEvaluatorScore{handler: handler}) - self.AddToProcessorMap("ListAnnotationEvaluators", &traceServiceProcessorListAnnotationEvaluators{handler: handler}) - self.AddToProcessorMap("ExtractSpanInfo", &traceServiceProcessorExtractSpanInfo{handler: handler}) - self.AddToProcessorMap("CheckTaskName", &traceServiceProcessorCheckTaskName{handler: handler}) - self.AddToProcessorMap("CreateTask", &traceServiceProcessorCreateTask{handler: handler}) - self.AddToProcessorMap("UpdateTask", &traceServiceProcessorUpdateTask{handler: handler}) - self.AddToProcessorMap("ListTasks", &traceServiceProcessorListTasks{handler: handler}) - self.AddToProcessorMap("GetTask", &traceServiceProcessorGetTask{handler: handler}) - return self -} -func (p *TraceServiceProcessor) Process(ctx context.Context, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - name, _, seqId, err := iprot.ReadMessageBegin() - if err != nil { - return false, err - } - if processor, ok := p.GetProcessorFunction(name); ok { - return processor.Process(ctx, seqId, iprot, oprot) - } - iprot.Skip(thrift.STRUCT) - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name) - oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, x -} - -type traceServiceProcessorListSpans struct { - handler TraceService -} - -func (p *traceServiceProcessorListSpans) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListSpansArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListSpansResult{} - var retval *ListSpansResponse - if retval, err2 = p.handler.ListSpans(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListSpans: "+err2.Error()) - oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ListSpans", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorGetTrace struct { - handler TraceService -} - -func (p *traceServiceProcessorGetTrace) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceGetTraceArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceGetTraceResult{} - var retval *GetTraceResponse - if retval, err2 = p.handler.GetTrace(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTrace: "+err2.Error()) - oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("GetTrace", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorBatchGetTracesAdvanceInfo struct { - handler TraceService -} - -func (p *traceServiceProcessorBatchGetTracesAdvanceInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceBatchGetTracesAdvanceInfoArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceBatchGetTracesAdvanceInfoResult{} - var retval *BatchGetTracesAdvanceInfoResponse - if retval, err2 = p.handler.BatchGetTracesAdvanceInfo(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing BatchGetTracesAdvanceInfo: "+err2.Error()) - oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorIngestTracesInner struct { - handler TraceService -} - -func (p *traceServiceProcessorIngestTracesInner) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceIngestTracesInnerArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceIngestTracesInnerResult{} - var retval *IngestTracesResponse - if retval, err2 = p.handler.IngestTracesInner(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing IngestTracesInner: "+err2.Error()) - oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("IngestTracesInner", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorGetTracesMetaInfo struct { - handler TraceService -} - -func (p *traceServiceProcessorGetTracesMetaInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceGetTracesMetaInfoArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceGetTracesMetaInfoResult{} - var retval *GetTracesMetaInfoResponse - if retval, err2 = p.handler.GetTracesMetaInfo(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTracesMetaInfo: "+err2.Error()) - oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorCreateView struct { - handler TraceService -} - -func (p *traceServiceProcessorCreateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceCreateViewArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceCreateViewResult{} - var retval *CreateViewResponse - if retval, err2 = p.handler.CreateView(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateView: "+err2.Error()) - oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("CreateView", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorUpdateView struct { - handler TraceService -} - -func (p *traceServiceProcessorUpdateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceUpdateViewArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceUpdateViewResult{} - var retval *UpdateViewResponse - if retval, err2 = p.handler.UpdateView(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateView: "+err2.Error()) - oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("UpdateView", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorDeleteView struct { - handler TraceService -} - -func (p *traceServiceProcessorDeleteView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceDeleteViewArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceDeleteViewResult{} - var retval *DeleteViewResponse - if retval, err2 = p.handler.DeleteView(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteView: "+err2.Error()) - oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("DeleteView", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorListViews struct { - handler TraceService -} - -func (p *traceServiceProcessorListViews) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListViewsArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListViewsResult{} - var retval *ListViewsResponse - if retval, err2 = p.handler.ListViews(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListViews: "+err2.Error()) - oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ListViews", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorCreateManualAnnotation struct { - handler TraceService -} - -func (p *traceServiceProcessorCreateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceCreateManualAnnotationArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceCreateManualAnnotationResult{} - var retval *CreateManualAnnotationResponse - if retval, err2 = p.handler.CreateManualAnnotation(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateManualAnnotation: "+err2.Error()) - oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("CreateManualAnnotation", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorUpdateManualAnnotation struct { - handler TraceService -} - -func (p *traceServiceProcessorUpdateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceUpdateManualAnnotationArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceUpdateManualAnnotationResult{} - var retval *UpdateManualAnnotationResponse - if retval, err2 = p.handler.UpdateManualAnnotation(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateManualAnnotation: "+err2.Error()) - oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorDeleteManualAnnotation struct { - handler TraceService -} - -func (p *traceServiceProcessorDeleteManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceDeleteManualAnnotationArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceDeleteManualAnnotationResult{} - var retval *DeleteManualAnnotationResponse - if retval, err2 = p.handler.DeleteManualAnnotation(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteManualAnnotation: "+err2.Error()) - oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorListAnnotations struct { - handler TraceService -} - -func (p *traceServiceProcessorListAnnotations) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListAnnotationsArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListAnnotationsResult{} - var retval *ListAnnotationsResponse - if retval, err2 = p.handler.ListAnnotations(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotations: "+err2.Error()) - oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ListAnnotations", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorChangeEvaluatorScore struct { - handler TraceService -} - -func (p *traceServiceProcessorChangeEvaluatorScore) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceChangeEvaluatorScoreArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceChangeEvaluatorScoreResult{} - var retval *ChangeEvaluatorScoreResponse - if retval, err2 = p.handler.ChangeEvaluatorScore(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ChangeEvaluatorScore: "+err2.Error()) - oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorListAnnotationEvaluators struct { - handler TraceService -} - -func (p *traceServiceProcessorListAnnotationEvaluators) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListAnnotationEvaluatorsArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListAnnotationEvaluatorsResult{} - var retval *ListAnnotationEvaluatorsResponse - if retval, err2 = p.handler.ListAnnotationEvaluators(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotationEvaluators: "+err2.Error()) - oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorExtractSpanInfo struct { - handler TraceService -} - -func (p *traceServiceProcessorExtractSpanInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceExtractSpanInfoArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ExtractSpanInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceExtractSpanInfoResult{} - var retval *ExtractSpanInfoResponse - if retval, err2 = p.handler.ExtractSpanInfo(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ExtractSpanInfo: "+err2.Error()) - oprot.WriteMessageBegin("ExtractSpanInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ExtractSpanInfo", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorCheckTaskName struct { - handler TraceService -} - -func (p *traceServiceProcessorCheckTaskName) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceCheckTaskNameArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("CheckTaskName", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceCheckTaskNameResult{} - var retval *CheckTaskNameResponse - if retval, err2 = p.handler.CheckTaskName(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CheckTaskName: "+err2.Error()) - oprot.WriteMessageBegin("CheckTaskName", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("CheckTaskName", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorCreateTask struct { - handler TraceService -} - -func (p *traceServiceProcessorCreateTask) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceCreateTaskArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("CreateTask", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceCreateTaskResult{} - var retval *CreateTaskResponse - if retval, err2 = p.handler.CreateTask(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateTask: "+err2.Error()) - oprot.WriteMessageBegin("CreateTask", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("CreateTask", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorUpdateTask struct { - handler TraceService -} - -func (p *traceServiceProcessorUpdateTask) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceUpdateTaskArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("UpdateTask", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceUpdateTaskResult{} - var retval *UpdateTaskResponse - if retval, err2 = p.handler.UpdateTask(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateTask: "+err2.Error()) - oprot.WriteMessageBegin("UpdateTask", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("UpdateTask", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorListTasks struct { - handler TraceService -} - -func (p *traceServiceProcessorListTasks) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListTasksArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListTasks", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListTasksResult{} - var retval *ListTasksResponse - if retval, err2 = p.handler.ListTasks(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListTasks: "+err2.Error()) - oprot.WriteMessageBegin("ListTasks", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ListTasks", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type traceServiceProcessorGetTask struct { - handler TraceService -} - -func (p *traceServiceProcessorGetTask) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceGetTaskArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("GetTask", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceGetTaskResult{} - var retval *GetTaskResponse - if retval, err2 = p.handler.GetTask(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTask: "+err2.Error()) - oprot.WriteMessageBegin("GetTask", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("GetTask", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { - return - } - return true, err -} - -type TraceServiceListSpansArgs struct { - Req *ListSpansRequest `thrift:"req,1" frugal:"1,default,ListSpansRequest"` -} - -func NewTraceServiceListSpansArgs() *TraceServiceListSpansArgs { - return &TraceServiceListSpansArgs{} -} - -func (p *TraceServiceListSpansArgs) InitDefault() { -} - -var TraceServiceListSpansArgs_Req_DEFAULT *ListSpansRequest - -func (p *TraceServiceListSpansArgs) GetReq() (v *ListSpansRequest) { - if p == nil { - return - } - if !p.IsSetReq() { - return TraceServiceListSpansArgs_Req_DEFAULT - } - return p.Req -} -func (p *TraceServiceListSpansArgs) SetReq(val *ListSpansRequest) { - p.Req = val -} - -var fieldIDToName_TraceServiceListSpansArgs = map[int16]string{ - 1: "req", -} - -func (p *TraceServiceListSpansArgs) IsSetReq() bool { - return p.Req != nil -} - -func (p *TraceServiceListSpansArgs) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *TraceServiceListSpansArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListSpansRequest() - if err := _field.Read(iprot); err != nil { - return err - } - p.Req = _field - return nil -} - -func (p *TraceServiceListSpansArgs) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("ListSpans_args"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *TraceServiceListSpansArgs) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { - goto WriteFieldBeginError - } - if err := p.Req.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} - -func (p *TraceServiceListSpansArgs) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("TraceServiceListSpansArgs(%+v)", *p) - -} - -func (p *TraceServiceListSpansArgs) DeepEqual(ano *TraceServiceListSpansArgs) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.Req) { - return false - } - return true -} - -func (p *TraceServiceListSpansArgs) Field1DeepEqual(src *ListSpansRequest) bool { - - if !p.Req.DeepEqual(src) { - return false - } - return true -} - -type TraceServiceListSpansResult struct { - Success *ListSpansResponse `thrift:"success,0,optional" frugal:"0,optional,ListSpansResponse"` -} - -func NewTraceServiceListSpansResult() *TraceServiceListSpansResult { - return &TraceServiceListSpansResult{} -} - -func (p *TraceServiceListSpansResult) InitDefault() { -} - -var TraceServiceListSpansResult_Success_DEFAULT *ListSpansResponse - -func (p *TraceServiceListSpansResult) GetSuccess() (v *ListSpansResponse) { - if p == nil { - return - } - if !p.IsSetSuccess() { - return TraceServiceListSpansResult_Success_DEFAULT - } - return p.Success -} -func (p *TraceServiceListSpansResult) SetSuccess(x interface{}) { - p.Success = x.(*ListSpansResponse) -} - -var fieldIDToName_TraceServiceListSpansResult = map[int16]string{ - 0: "success", -} - -func (p *TraceServiceListSpansResult) IsSetSuccess() bool { - return p.Success != nil -} - -func (p *TraceServiceListSpansResult) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 0: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField0(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *TraceServiceListSpansResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListSpansResponse() - if err := _field.Read(iprot); err != nil { - return err - } - p.Success = _field - return nil -} - -func (p *TraceServiceListSpansResult) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("ListSpans_result"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField0(oprot); err != nil { - fieldId = 0 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *TraceServiceListSpansResult) writeField0(oprot thrift.TProtocol) (err error) { - if p.IsSetSuccess() { - if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { - goto WriteFieldBeginError - } - if err := p.Success.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) -} - -func (p *TraceServiceListSpansResult) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("TraceServiceListSpansResult(%+v)", *p) - -} - -func (p *TraceServiceListSpansResult) DeepEqual(ano *TraceServiceListSpansResult) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field0DeepEqual(ano.Success) { - return false - } - return true -} - -func (p *TraceServiceListSpansResult) Field0DeepEqual(src *ListSpansResponse) bool { - - if !p.Success.DeepEqual(src) { - return false - } - return true -} - -type TraceServiceGetTraceArgs struct { - Req *GetTraceRequest `thrift:"req,1" frugal:"1,default,GetTraceRequest"` -} - -func NewTraceServiceGetTraceArgs() *TraceServiceGetTraceArgs { - return &TraceServiceGetTraceArgs{} -} - -func (p *TraceServiceGetTraceArgs) InitDefault() { -} - -var TraceServiceGetTraceArgs_Req_DEFAULT *GetTraceRequest - -func (p *TraceServiceGetTraceArgs) GetReq() (v *GetTraceRequest) { - if p == nil { - return - } - if !p.IsSetReq() { - return TraceServiceGetTraceArgs_Req_DEFAULT - } - return p.Req -} -func (p *TraceServiceGetTraceArgs) SetReq(val *GetTraceRequest) { - p.Req = val -} - -var fieldIDToName_TraceServiceGetTraceArgs = map[int16]string{ - 1: "req", -} - -func (p *TraceServiceGetTraceArgs) IsSetReq() bool { - return p.Req != nil -} - -func (p *TraceServiceGetTraceArgs) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *TraceServiceGetTraceArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewGetTraceRequest() - if err := _field.Read(iprot); err != nil { - return err - } - p.Req = _field - return nil -} - -func (p *TraceServiceGetTraceArgs) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("GetTrace_args"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *TraceServiceGetTraceArgs) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { - goto WriteFieldBeginError - } - if err := p.Req.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} - -func (p *TraceServiceGetTraceArgs) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("TraceServiceGetTraceArgs(%+v)", *p) - -} - -func (p *TraceServiceGetTraceArgs) DeepEqual(ano *TraceServiceGetTraceArgs) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.Req) { - return false - } - return true -} - -func (p *TraceServiceGetTraceArgs) Field1DeepEqual(src *GetTraceRequest) bool { - - if !p.Req.DeepEqual(src) { - return false - } - return true -} - -type TraceServiceGetTraceResult struct { - Success *GetTraceResponse `thrift:"success,0,optional" frugal:"0,optional,GetTraceResponse"` -} - -func NewTraceServiceGetTraceResult() *TraceServiceGetTraceResult { - return &TraceServiceGetTraceResult{} -} - -func (p *TraceServiceGetTraceResult) InitDefault() { -} - -var TraceServiceGetTraceResult_Success_DEFAULT *GetTraceResponse - -func (p *TraceServiceGetTraceResult) GetSuccess() (v *GetTraceResponse) { - if p == nil { - return - } - if !p.IsSetSuccess() { - return TraceServiceGetTraceResult_Success_DEFAULT - } - return p.Success -} -func (p *TraceServiceGetTraceResult) SetSuccess(x interface{}) { - p.Success = x.(*GetTraceResponse) -} - -var fieldIDToName_TraceServiceGetTraceResult = map[int16]string{ - 0: "success", -} - -func (p *TraceServiceGetTraceResult) IsSetSuccess() bool { - return p.Success != nil -} - -func (p *TraceServiceGetTraceResult) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 0: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField0(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *TraceServiceGetTraceResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewGetTraceResponse() - if err := _field.Read(iprot); err != nil { - return err - } - p.Success = _field - return nil -} - -func (p *TraceServiceGetTraceResult) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("GetTrace_result"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField0(oprot); err != nil { - fieldId = 0 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *TraceServiceGetTraceResult) writeField0(oprot thrift.TProtocol) (err error) { - if p.IsSetSuccess() { - if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { - goto WriteFieldBeginError - } - if err := p.Success.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) -} - -func (p *TraceServiceGetTraceResult) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("TraceServiceGetTraceResult(%+v)", *p) - -} - -func (p *TraceServiceGetTraceResult) DeepEqual(ano *TraceServiceGetTraceResult) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field0DeepEqual(ano.Success) { - return false - } - return true -} - -func (p *TraceServiceGetTraceResult) Field0DeepEqual(src *GetTraceResponse) bool { - - if !p.Success.DeepEqual(src) { - return false - } - return true -} - -type TraceServiceBatchGetTracesAdvanceInfoArgs struct { - Req *BatchGetTracesAdvanceInfoRequest `thrift:"req,1" frugal:"1,default,BatchGetTracesAdvanceInfoRequest"` -} - -func NewTraceServiceBatchGetTracesAdvanceInfoArgs() *TraceServiceBatchGetTracesAdvanceInfoArgs { - return &TraceServiceBatchGetTracesAdvanceInfoArgs{} -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) InitDefault() { -} - -var TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT *BatchGetTracesAdvanceInfoRequest - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) GetReq() (v *BatchGetTracesAdvanceInfoRequest) { - if p == nil { +func (p *TraceServiceClient) GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) { + var _args TraceServiceGetTracesMetaInfoArgs + _args.Req = req + var _result TraceServiceGetTracesMetaInfoResult + if err = p.Client_().Call(ctx, "GetTracesMetaInfo", &_args, &_result); err != nil { return } - if !p.IsSetReq() { - return TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT - } - return p.Req -} -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) SetReq(val *BatchGetTracesAdvanceInfoRequest) { - p.Req = val -} - -var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs = map[int16]string{ - 1: "req", -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) IsSetReq() bool { - return p.Req != nil + return _result.GetSuccess(), nil } - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError +func (p *TraceServiceClient) CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) { + var _args TraceServiceCreateViewArgs + _args.Req = req + var _result TraceServiceCreateViewResult + if err = p.Client_().Call(ctx, "CreateView", &_args, &_result); err != nil { + return } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) + return _result.GetSuccess(), nil } - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewBatchGetTracesAdvanceInfoRequest() - if err := _field.Read(iprot); err != nil { - return err +func (p *TraceServiceClient) UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) { + var _args TraceServiceUpdateViewArgs + _args.Req = req + var _result TraceServiceUpdateViewResult + if err = p.Client_().Call(ctx, "UpdateView", &_args, &_result); err != nil { + return } - p.Req = _field - return nil + return _result.GetSuccess(), nil } - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_args"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError +func (p *TraceServiceClient) DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) { + var _args TraceServiceDeleteViewArgs + _args.Req = req + var _result TraceServiceDeleteViewResult + if err = p.Client_().Call(ctx, "DeleteView", &_args, &_result); err != nil { + return } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) { + var _args TraceServiceListViewsArgs + _args.Req = req + var _result TraceServiceListViewsResult + if err = p.Client_().Call(ctx, "ListViews", &_args, &_result); err != nil { + return } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) + return _result.GetSuccess(), nil } - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { - goto WriteFieldBeginError +func (p *TraceServiceClient) CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) { + var _args TraceServiceCreateManualAnnotationArgs + _args.Req = req + var _result TraceServiceCreateManualAnnotationResult + if err = p.Client_().Call(ctx, "CreateManualAnnotation", &_args, &_result); err != nil { + return } - if err := p.Req.Write(oprot); err != nil { - return err + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) { + var _args TraceServiceUpdateManualAnnotationArgs + _args.Req = req + var _result TraceServiceUpdateManualAnnotationResult + if err = p.Client_().Call(ctx, "UpdateManualAnnotation", &_args, &_result); err != nil { + return } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) { + var _args TraceServiceDeleteManualAnnotationArgs + _args.Req = req + var _result TraceServiceDeleteManualAnnotationResult + if err = p.Client_().Call(ctx, "DeleteManualAnnotation", &_args, &_result); err != nil { + return } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) + return _result.GetSuccess(), nil } - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) String() string { - if p == nil { - return "" +func (p *TraceServiceClient) ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) { + var _args TraceServiceListAnnotationsArgs + _args.Req = req + var _result TraceServiceListAnnotationsResult + if err = p.Client_().Call(ctx, "ListAnnotations", &_args, &_result); err != nil { + return } - return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoArgs(%+v)", *p) - + return _result.GetSuccess(), nil } - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoArgs) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false +func (p *TraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (r *ChangeEvaluatorScoreResponse, err error) { + var _args TraceServiceChangeEvaluatorScoreArgs + _args.Req = req + var _result TraceServiceChangeEvaluatorScoreResult + if err = p.Client_().Call(ctx, "ChangeEvaluatorScore", &_args, &_result); err != nil { + return } - if !p.Field1DeepEqual(ano.Req) { - return false + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (r *ListAnnotationEvaluatorsResponse, err error) { + var _args TraceServiceListAnnotationEvaluatorsArgs + _args.Req = req + var _result TraceServiceListAnnotationEvaluatorsResult + if err = p.Client_().Call(ctx, "ListAnnotationEvaluators", &_args, &_result); err != nil { + return } - return true + return _result.GetSuccess(), nil } - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Field1DeepEqual(src *BatchGetTracesAdvanceInfoRequest) bool { - - if !p.Req.DeepEqual(src) { - return false +func (p *TraceServiceClient) ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (r *ExtractSpanInfoResponse, err error) { + var _args TraceServiceExtractSpanInfoArgs + _args.Req = req + var _result TraceServiceExtractSpanInfoResult + if err = p.Client_().Call(ctx, "ExtractSpanInfo", &_args, &_result); err != nil { + return } - return true + return _result.GetSuccess(), nil } -type TraceServiceBatchGetTracesAdvanceInfoResult struct { - Success *BatchGetTracesAdvanceInfoResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetTracesAdvanceInfoResponse"` +type TraceServiceProcessor struct { + processorMap map[string]thrift.TProcessorFunction + handler TraceService } -func NewTraceServiceBatchGetTracesAdvanceInfoResult() *TraceServiceBatchGetTracesAdvanceInfoResult { - return &TraceServiceBatchGetTracesAdvanceInfoResult{} +func (p *TraceServiceProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) { + p.processorMap[key] = processor } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) InitDefault() { +func (p *TraceServiceProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) { + processor, ok = p.processorMap[key] + return processor, ok } -var TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT *BatchGetTracesAdvanceInfoResponse +func (p *TraceServiceProcessor) ProcessorMap() map[string]thrift.TProcessorFunction { + return p.processorMap +} -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) GetSuccess() (v *BatchGetTracesAdvanceInfoResponse) { - if p == nil { - return +func NewTraceServiceProcessor(handler TraceService) *TraceServiceProcessor { + self := &TraceServiceProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)} + self.AddToProcessorMap("ListSpans", &traceServiceProcessorListSpans{handler: handler}) + self.AddToProcessorMap("GetTrace", &traceServiceProcessorGetTrace{handler: handler}) + self.AddToProcessorMap("BatchGetTracesAdvanceInfo", &traceServiceProcessorBatchGetTracesAdvanceInfo{handler: handler}) + self.AddToProcessorMap("IngestTracesInner", &traceServiceProcessorIngestTracesInner{handler: handler}) + self.AddToProcessorMap("GetTracesMetaInfo", &traceServiceProcessorGetTracesMetaInfo{handler: handler}) + self.AddToProcessorMap("CreateView", &traceServiceProcessorCreateView{handler: handler}) + self.AddToProcessorMap("UpdateView", &traceServiceProcessorUpdateView{handler: handler}) + self.AddToProcessorMap("DeleteView", &traceServiceProcessorDeleteView{handler: handler}) + self.AddToProcessorMap("ListViews", &traceServiceProcessorListViews{handler: handler}) + self.AddToProcessorMap("CreateManualAnnotation", &traceServiceProcessorCreateManualAnnotation{handler: handler}) + self.AddToProcessorMap("UpdateManualAnnotation", &traceServiceProcessorUpdateManualAnnotation{handler: handler}) + self.AddToProcessorMap("DeleteManualAnnotation", &traceServiceProcessorDeleteManualAnnotation{handler: handler}) + self.AddToProcessorMap("ListAnnotations", &traceServiceProcessorListAnnotations{handler: handler}) + self.AddToProcessorMap("ChangeEvaluatorScore", &traceServiceProcessorChangeEvaluatorScore{handler: handler}) + self.AddToProcessorMap("ListAnnotationEvaluators", &traceServiceProcessorListAnnotationEvaluators{handler: handler}) + self.AddToProcessorMap("ExtractSpanInfo", &traceServiceProcessorExtractSpanInfo{handler: handler}) + return self +} +func (p *TraceServiceProcessor) Process(ctx context.Context, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + name, _, seqId, err := iprot.ReadMessageBegin() + if err != nil { + return false, err } - if !p.IsSetSuccess() { - return TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT + if processor, ok := p.GetProcessorFunction(name); ok { + return processor.Process(ctx, seqId, iprot, oprot) } - return p.Success -} -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) SetSuccess(x interface{}) { - p.Success = x.(*BatchGetTracesAdvanceInfoResponse) -} - -var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult = map[int16]string{ - 0: "success", + iprot.Skip(thrift.STRUCT) + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name) + oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, x } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) IsSetSuccess() bool { - return p.Success != nil +type traceServiceProcessorListSpans struct { + handler TraceService } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError +func (p *traceServiceProcessorListSpans) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListSpansArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 0: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField0(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListSpansResult{} + var retval *ListSpansResponse + if retval, err2 = p.handler.ListSpans(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListSpans: "+err2.Error()) + oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError + if err2 = oprot.WriteMessageBegin("ListSpans", thrift.REPLY, seqId); err2 != nil { + err = err2 } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +type traceServiceProcessorGetTrace struct { + handler TraceService } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewBatchGetTracesAdvanceInfoResponse() - if err := _field.Read(iprot); err != nil { - return err +func (p *traceServiceProcessorGetTrace) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceGetTraceArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - p.Success = _field - return nil -} -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_result"); err != nil { - goto WriteStructBeginError + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceGetTraceResult{} + var retval *GetTraceResponse + if retval, err2 = p.handler.GetTrace(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTrace: "+err2.Error()) + oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if p != nil { - if err = p.writeField0(oprot); err != nil { - fieldId = 0 - goto WriteFieldError - } + if err2 = oprot.WriteMessageBegin("GetTrace", thrift.REPLY, seqId); err2 != nil { + err = err2 } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) writeField0(oprot thrift.TProtocol) (err error) { - if p.IsSetSuccess() { - if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { - goto WriteFieldBeginError - } - if err := p.Success.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +type traceServiceProcessorBatchGetTracesAdvanceInfo struct { + handler TraceService } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) String() string { - if p == nil { - return "" +func (p *traceServiceProcessorBatchGetTracesAdvanceInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceBatchGetTracesAdvanceInfoArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoResult(%+v)", *p) - -} -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoResult) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceBatchGetTracesAdvanceInfoResult{} + var retval *BatchGetTracesAdvanceInfoResponse + if retval, err2 = p.handler.BatchGetTracesAdvanceInfo(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing BatchGetTracesAdvanceInfo: "+err2.Error()) + oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if !p.Field0DeepEqual(ano.Success) { - return false + if err2 = oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.REPLY, seqId); err2 != nil { + err = err2 } - return true -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Field0DeepEqual(src *BatchGetTracesAdvanceInfoResponse) bool { - - if !p.Success.DeepEqual(src) { - return false + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 } - return true -} - -type TraceServiceIngestTracesInnerArgs struct { - Req *IngestTracesRequest `thrift:"req,1" frugal:"1,default,IngestTracesRequest"` -} - -func NewTraceServiceIngestTracesInnerArgs() *TraceServiceIngestTracesInnerArgs { - return &TraceServiceIngestTracesInnerArgs{} -} - -func (p *TraceServiceIngestTracesInnerArgs) InitDefault() { -} - -var TraceServiceIngestTracesInnerArgs_Req_DEFAULT *IngestTracesRequest - -func (p *TraceServiceIngestTracesInnerArgs) GetReq() (v *IngestTracesRequest) { - if p == nil { + if err != nil { return } - if !p.IsSetReq() { - return TraceServiceIngestTracesInnerArgs_Req_DEFAULT - } - return p.Req -} -func (p *TraceServiceIngestTracesInnerArgs) SetReq(val *IngestTracesRequest) { - p.Req = val -} - -var fieldIDToName_TraceServiceIngestTracesInnerArgs = map[int16]string{ - 1: "req", + return true, err } -func (p *TraceServiceIngestTracesInnerArgs) IsSetReq() bool { - return p.Req != nil +type traceServiceProcessorIngestTracesInner struct { + handler TraceService } -func (p *TraceServiceIngestTracesInnerArgs) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError +func (p *traceServiceProcessorIngestTracesInner) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceIngestTracesInnerArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceIngestTracesInnerResult{} + var retval *IngestTracesResponse + if retval, err2 = p.handler.IngestTracesInner(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing IngestTracesInner: "+err2.Error()) + oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError + if err2 = oprot.WriteMessageBegin("IngestTracesInner", thrift.REPLY, seqId); err2 != nil { + err = err2 } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err } -func (p *TraceServiceIngestTracesInnerArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewIngestTracesRequest() - if err := _field.Read(iprot); err != nil { - return err - } - p.Req = _field - return nil +type traceServiceProcessorGetTracesMetaInfo struct { + handler TraceService } -func (p *TraceServiceIngestTracesInnerArgs) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("IngestTracesInner_args"); err != nil { - goto WriteStructBeginError +func (p *traceServiceProcessorGetTracesMetaInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceGetTracesMetaInfoArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceGetTracesMetaInfoResult{} + var retval *GetTracesMetaInfoResponse + if retval, err2 = p.handler.GetTracesMetaInfo(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTracesMetaInfo: "+err2.Error()) + oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError + if err2 = oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.REPLY, seqId); err2 != nil { + err = err2 } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *TraceServiceIngestTracesInnerArgs) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { - goto WriteFieldBeginError + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 } - if err := p.Req.Write(oprot); err != nil { - return err + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError + if err != nil { + return } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) + return true, err } -func (p *TraceServiceIngestTracesInnerArgs) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("TraceServiceIngestTracesInnerArgs(%+v)", *p) - +type traceServiceProcessorCreateView struct { + handler TraceService } -func (p *TraceServiceIngestTracesInnerArgs) DeepEqual(ano *TraceServiceIngestTracesInnerArgs) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.Req) { - return false +func (p *traceServiceProcessorCreateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceCreateViewArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - return true -} - -func (p *TraceServiceIngestTracesInnerArgs) Field1DeepEqual(src *IngestTracesRequest) bool { - if !p.Req.DeepEqual(src) { - return false + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceCreateViewResult{} + var retval *CreateViewResponse + if retval, err2 = p.handler.CreateView(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateView: "+err2.Error()) + oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("CreateView", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 } - return true -} - -type TraceServiceIngestTracesInnerResult struct { - Success *IngestTracesResponse `thrift:"success,0,optional" frugal:"0,optional,IngestTracesResponse"` -} - -func NewTraceServiceIngestTracesInnerResult() *TraceServiceIngestTracesInnerResult { - return &TraceServiceIngestTracesInnerResult{} -} - -func (p *TraceServiceIngestTracesInnerResult) InitDefault() { -} - -var TraceServiceIngestTracesInnerResult_Success_DEFAULT *IngestTracesResponse - -func (p *TraceServiceIngestTracesInnerResult) GetSuccess() (v *IngestTracesResponse) { - if p == nil { - return + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 } - if !p.IsSetSuccess() { - return TraceServiceIngestTracesInnerResult_Success_DEFAULT + if err != nil { + return } - return p.Success -} -func (p *TraceServiceIngestTracesInnerResult) SetSuccess(x interface{}) { - p.Success = x.(*IngestTracesResponse) -} - -var fieldIDToName_TraceServiceIngestTracesInnerResult = map[int16]string{ - 0: "success", + return true, err } -func (p *TraceServiceIngestTracesInnerResult) IsSetSuccess() bool { - return p.Success != nil +type traceServiceProcessorUpdateView struct { + handler TraceService } -func (p *TraceServiceIngestTracesInnerResult) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError +func (p *traceServiceProcessorUpdateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceUpdateViewArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 0: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField0(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceUpdateViewResult{} + var retval *UpdateViewResponse + if retval, err2 = p.handler.UpdateView(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateView: "+err2.Error()) + oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError + if err2 = oprot.WriteMessageBegin("UpdateView", thrift.REPLY, seqId); err2 != nil { + err = err2 } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +type traceServiceProcessorDeleteView struct { + handler TraceService } -func (p *TraceServiceIngestTracesInnerResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewIngestTracesResponse() - if err := _field.Read(iprot); err != nil { - return err +func (p *traceServiceProcessorDeleteView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceDeleteViewArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - p.Success = _field - return nil -} -func (p *TraceServiceIngestTracesInnerResult) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("IngestTracesInner_result"); err != nil { - goto WriteStructBeginError + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceDeleteViewResult{} + var retval *DeleteViewResponse + if retval, err2 = p.handler.DeleteView(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteView: "+err2.Error()) + oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if p != nil { - if err = p.writeField0(oprot); err != nil { - fieldId = 0 - goto WriteFieldError - } + if err2 = oprot.WriteMessageBegin("DeleteView", thrift.REPLY, seqId); err2 != nil { + err = err2 } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err } -func (p *TraceServiceIngestTracesInnerResult) writeField0(oprot thrift.TProtocol) (err error) { - if p.IsSetSuccess() { - if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { - goto WriteFieldBeginError - } - if err := p.Success.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +type traceServiceProcessorListViews struct { + handler TraceService } -func (p *TraceServiceIngestTracesInnerResult) String() string { - if p == nil { - return "" +func (p *traceServiceProcessorListViews) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListViewsArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - return fmt.Sprintf("TraceServiceIngestTracesInnerResult(%+v)", *p) - -} -func (p *TraceServiceIngestTracesInnerResult) DeepEqual(ano *TraceServiceIngestTracesInnerResult) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListViewsResult{} + var retval *ListViewsResponse + if retval, err2 = p.handler.ListViews(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListViews: "+err2.Error()) + oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if !p.Field0DeepEqual(ano.Success) { - return false + if err2 = oprot.WriteMessageBegin("ListViews", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 } - return true -} - -func (p *TraceServiceIngestTracesInnerResult) Field0DeepEqual(src *IngestTracesResponse) bool { - - if !p.Success.DeepEqual(src) { - return false + if err != nil { + return } - return true -} - -type TraceServiceGetTracesMetaInfoArgs struct { - Req *GetTracesMetaInfoRequest `thrift:"req,1" frugal:"1,default,GetTracesMetaInfoRequest"` -} - -func NewTraceServiceGetTracesMetaInfoArgs() *TraceServiceGetTracesMetaInfoArgs { - return &TraceServiceGetTracesMetaInfoArgs{} + return true, err } -func (p *TraceServiceGetTracesMetaInfoArgs) InitDefault() { +type traceServiceProcessorCreateManualAnnotation struct { + handler TraceService } -var TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT *GetTracesMetaInfoRequest +func (p *traceServiceProcessorCreateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceCreateManualAnnotationArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } -func (p *TraceServiceGetTracesMetaInfoArgs) GetReq() (v *GetTracesMetaInfoRequest) { - if p == nil { - return + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceCreateManualAnnotationResult{} + var retval *CreateManualAnnotationResponse + if retval, err2 = p.handler.CreateManualAnnotation(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateManualAnnotation: "+err2.Error()) + oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if !p.IsSetReq() { - return TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT + if err2 = oprot.WriteMessageBegin("CreateManualAnnotation", thrift.REPLY, seqId); err2 != nil { + err = err2 } - return p.Req -} -func (p *TraceServiceGetTracesMetaInfoArgs) SetReq(val *GetTracesMetaInfoRequest) { - p.Req = val -} - -var fieldIDToName_TraceServiceGetTracesMetaInfoArgs = map[int16]string{ - 1: "req", -} - -func (p *TraceServiceGetTracesMetaInfoArgs) IsSetReq() bool { - return p.Req != nil -} - -func (p *TraceServiceGetTracesMetaInfoArgs) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) + if err != nil { + return + } + return true, err } -func (p *TraceServiceGetTracesMetaInfoArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewGetTracesMetaInfoRequest() - if err := _field.Read(iprot); err != nil { - return err - } - p.Req = _field - return nil +type traceServiceProcessorUpdateManualAnnotation struct { + handler TraceService } -func (p *TraceServiceGetTracesMetaInfoArgs) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("GetTracesMetaInfo_args"); err != nil { - goto WriteStructBeginError +func (p *traceServiceProcessorUpdateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceUpdateManualAnnotationArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceUpdateManualAnnotationResult{} + var retval *UpdateManualAnnotationResponse + if retval, err2 = p.handler.UpdateManualAnnotation(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateManualAnnotation: "+err2.Error()) + oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError + if err2 = oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.REPLY, seqId); err2 != nil { + err = err2 } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *TraceServiceGetTracesMetaInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { - goto WriteFieldBeginError + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 } - if err := p.Req.Write(oprot); err != nil { - return err + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError + if err != nil { + return } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) + return true, err } -func (p *TraceServiceGetTracesMetaInfoArgs) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("TraceServiceGetTracesMetaInfoArgs(%+v)", *p) - +type traceServiceProcessorDeleteManualAnnotation struct { + handler TraceService } -func (p *TraceServiceGetTracesMetaInfoArgs) DeepEqual(ano *TraceServiceGetTracesMetaInfoArgs) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false +func (p *traceServiceProcessorDeleteManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceDeleteManualAnnotationArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceDeleteManualAnnotationResult{} + var retval *DeleteManualAnnotationResponse + if retval, err2 = p.handler.DeleteManualAnnotation(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteManualAnnotation: "+err2.Error()) + oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 } - if !p.Field1DeepEqual(ano.Req) { - return false + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 } - return true -} - -func (p *TraceServiceGetTracesMetaInfoArgs) Field1DeepEqual(src *GetTracesMetaInfoRequest) bool { - - if !p.Req.DeepEqual(src) { - return false + if err != nil { + return } - return true -} - -type TraceServiceGetTracesMetaInfoResult struct { - Success *GetTracesMetaInfoResponse `thrift:"success,0,optional" frugal:"0,optional,GetTracesMetaInfoResponse"` -} - -func NewTraceServiceGetTracesMetaInfoResult() *TraceServiceGetTracesMetaInfoResult { - return &TraceServiceGetTracesMetaInfoResult{} + return true, err } -func (p *TraceServiceGetTracesMetaInfoResult) InitDefault() { +type traceServiceProcessorListAnnotations struct { + handler TraceService } -var TraceServiceGetTracesMetaInfoResult_Success_DEFAULT *GetTracesMetaInfoResponse +func (p *traceServiceProcessorListAnnotations) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListAnnotationsArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } -func (p *TraceServiceGetTracesMetaInfoResult) GetSuccess() (v *GetTracesMetaInfoResponse) { - if p == nil { - return + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListAnnotationsResult{} + var retval *ListAnnotationsResponse + if retval, err2 = p.handler.ListAnnotations(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotations: "+err2.Error()) + oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if !p.IsSetSuccess() { - return TraceServiceGetTracesMetaInfoResult_Success_DEFAULT + if err2 = oprot.WriteMessageBegin("ListAnnotations", thrift.REPLY, seqId); err2 != nil { + err = err2 } - return p.Success -} -func (p *TraceServiceGetTracesMetaInfoResult) SetSuccess(x interface{}) { - p.Success = x.(*GetTracesMetaInfoResponse) -} - -var fieldIDToName_TraceServiceGetTracesMetaInfoResult = map[int16]string{ - 0: "success", + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err } -func (p *TraceServiceGetTracesMetaInfoResult) IsSetSuccess() bool { - return p.Success != nil +type traceServiceProcessorChangeEvaluatorScore struct { + handler TraceService } -func (p *TraceServiceGetTracesMetaInfoResult) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError +func (p *traceServiceProcessorChangeEvaluatorScore) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceChangeEvaluatorScoreArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 0: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField0(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceChangeEvaluatorScoreResult{} + var retval *ChangeEvaluatorScoreResponse + if retval, err2 = p.handler.ChangeEvaluatorScore(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ChangeEvaluatorScore: "+err2.Error()) + oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError + if err2 = oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.REPLY, seqId); err2 != nil { + err = err2 } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err } -func (p *TraceServiceGetTracesMetaInfoResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewGetTracesMetaInfoResponse() - if err := _field.Read(iprot); err != nil { - return err - } - p.Success = _field - return nil +type traceServiceProcessorListAnnotationEvaluators struct { + handler TraceService } -func (p *TraceServiceGetTracesMetaInfoResult) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("GetTracesMetaInfo_result"); err != nil { - goto WriteStructBeginError +func (p *traceServiceProcessorListAnnotationEvaluators) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListAnnotationEvaluatorsArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err } - if p != nil { - if err = p.writeField0(oprot); err != nil { - fieldId = 0 - goto WriteFieldError - } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListAnnotationEvaluatorsResult{} + var retval *ListAnnotationEvaluatorsResponse + if retval, err2 = p.handler.ListAnnotationEvaluators(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotationEvaluators: "+err2.Error()) + oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError + if err2 = oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.REPLY, seqId); err2 != nil { + err = err2 } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *TraceServiceGetTracesMetaInfoResult) writeField0(oprot thrift.TProtocol) (err error) { - if p.IsSetSuccess() { - if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { - goto WriteFieldBeginError - } - if err := p.Success.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) -} - -func (p *TraceServiceGetTracesMetaInfoResult) String() string { - if p == nil { - return "" + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 } - return fmt.Sprintf("TraceServiceGetTracesMetaInfoResult(%+v)", *p) - + if err != nil { + return + } + return true, err } -func (p *TraceServiceGetTracesMetaInfoResult) DeepEqual(ano *TraceServiceGetTracesMetaInfoResult) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field0DeepEqual(ano.Success) { - return false - } - return true +type traceServiceProcessorExtractSpanInfo struct { + handler TraceService } -func (p *TraceServiceGetTracesMetaInfoResult) Field0DeepEqual(src *GetTracesMetaInfoResponse) bool { +func (p *traceServiceProcessorExtractSpanInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceExtractSpanInfoArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ExtractSpanInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } - if !p.Success.DeepEqual(src) { - return false + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceExtractSpanInfoResult{} + var retval *ExtractSpanInfoResponse + if retval, err2 = p.handler.ExtractSpanInfo(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ExtractSpanInfo: "+err2.Error()) + oprot.WriteMessageBegin("ExtractSpanInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - return true + if err2 = oprot.WriteMessageBegin("ExtractSpanInfo", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err } -type TraceServiceCreateViewArgs struct { - Req *CreateViewRequest `thrift:"req,1" frugal:"1,default,CreateViewRequest"` +type TraceServiceListSpansArgs struct { + Req *ListSpansRequest `thrift:"req,1" frugal:"1,default,ListSpansRequest"` } -func NewTraceServiceCreateViewArgs() *TraceServiceCreateViewArgs { - return &TraceServiceCreateViewArgs{} +func NewTraceServiceListSpansArgs() *TraceServiceListSpansArgs { + return &TraceServiceListSpansArgs{} } -func (p *TraceServiceCreateViewArgs) InitDefault() { +func (p *TraceServiceListSpansArgs) InitDefault() { } -var TraceServiceCreateViewArgs_Req_DEFAULT *CreateViewRequest +var TraceServiceListSpansArgs_Req_DEFAULT *ListSpansRequest -func (p *TraceServiceCreateViewArgs) GetReq() (v *CreateViewRequest) { +func (p *TraceServiceListSpansArgs) GetReq() (v *ListSpansRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceCreateViewArgs_Req_DEFAULT + return TraceServiceListSpansArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceCreateViewArgs) SetReq(val *CreateViewRequest) { +func (p *TraceServiceListSpansArgs) SetReq(val *ListSpansRequest) { p.Req = val } -var fieldIDToName_TraceServiceCreateViewArgs = map[int16]string{ +var fieldIDToName_TraceServiceListSpansArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceCreateViewArgs) IsSetReq() bool { +func (p *TraceServiceListSpansArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceCreateViewArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListSpansArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -21510,7 +16081,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -21520,8 +16091,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateViewArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewCreateViewRequest() +func (p *TraceServiceListSpansArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListSpansRequest() if err := _field.Read(iprot); err != nil { return err } @@ -21529,9 +16100,9 @@ func (p *TraceServiceCreateViewArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceCreateViewArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListSpansArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateView_args"); err != nil { + if err = oprot.WriteStructBegin("ListSpans_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -21557,7 +16128,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListSpansArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -21574,15 +16145,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceCreateViewArgs) String() string { +func (p *TraceServiceListSpansArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateViewArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceListSpansArgs(%+v)", *p) } -func (p *TraceServiceCreateViewArgs) DeepEqual(ano *TraceServiceCreateViewArgs) bool { +func (p *TraceServiceListSpansArgs) DeepEqual(ano *TraceServiceListSpansArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -21594,7 +16165,7 @@ func (p *TraceServiceCreateViewArgs) DeepEqual(ano *TraceServiceCreateViewArgs) return true } -func (p *TraceServiceCreateViewArgs) Field1DeepEqual(src *CreateViewRequest) bool { +func (p *TraceServiceListSpansArgs) Field1DeepEqual(src *ListSpansRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -21602,41 +16173,41 @@ func (p *TraceServiceCreateViewArgs) Field1DeepEqual(src *CreateViewRequest) boo return true } -type TraceServiceCreateViewResult struct { - Success *CreateViewResponse `thrift:"success,0,optional" frugal:"0,optional,CreateViewResponse"` +type TraceServiceListSpansResult struct { + Success *ListSpansResponse `thrift:"success,0,optional" frugal:"0,optional,ListSpansResponse"` } -func NewTraceServiceCreateViewResult() *TraceServiceCreateViewResult { - return &TraceServiceCreateViewResult{} +func NewTraceServiceListSpansResult() *TraceServiceListSpansResult { + return &TraceServiceListSpansResult{} } -func (p *TraceServiceCreateViewResult) InitDefault() { +func (p *TraceServiceListSpansResult) InitDefault() { } -var TraceServiceCreateViewResult_Success_DEFAULT *CreateViewResponse +var TraceServiceListSpansResult_Success_DEFAULT *ListSpansResponse -func (p *TraceServiceCreateViewResult) GetSuccess() (v *CreateViewResponse) { +func (p *TraceServiceListSpansResult) GetSuccess() (v *ListSpansResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceCreateViewResult_Success_DEFAULT + return TraceServiceListSpansResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceCreateViewResult) SetSuccess(x interface{}) { - p.Success = x.(*CreateViewResponse) +func (p *TraceServiceListSpansResult) SetSuccess(x interface{}) { + p.Success = x.(*ListSpansResponse) } -var fieldIDToName_TraceServiceCreateViewResult = map[int16]string{ +var fieldIDToName_TraceServiceListSpansResult = map[int16]string{ 0: "success", } -func (p *TraceServiceCreateViewResult) IsSetSuccess() bool { +func (p *TraceServiceListSpansResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceCreateViewResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListSpansResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -21681,7 +16252,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -21691,8 +16262,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateViewResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewCreateViewResponse() +func (p *TraceServiceListSpansResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListSpansResponse() if err := _field.Read(iprot); err != nil { return err } @@ -21700,9 +16271,9 @@ func (p *TraceServiceCreateViewResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceCreateViewResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListSpansResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateView_result"); err != nil { + if err = oprot.WriteStructBegin("ListSpans_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -21728,7 +16299,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateViewResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListSpansResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -21747,15 +16318,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceCreateViewResult) String() string { +func (p *TraceServiceListSpansResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateViewResult(%+v)", *p) + return fmt.Sprintf("TraceServiceListSpansResult(%+v)", *p) } -func (p *TraceServiceCreateViewResult) DeepEqual(ano *TraceServiceCreateViewResult) bool { +func (p *TraceServiceListSpansResult) DeepEqual(ano *TraceServiceListSpansResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -21767,7 +16338,7 @@ func (p *TraceServiceCreateViewResult) DeepEqual(ano *TraceServiceCreateViewResu return true } -func (p *TraceServiceCreateViewResult) Field0DeepEqual(src *CreateViewResponse) bool { +func (p *TraceServiceListSpansResult) Field0DeepEqual(src *ListSpansResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -21775,41 +16346,41 @@ func (p *TraceServiceCreateViewResult) Field0DeepEqual(src *CreateViewResponse) return true } -type TraceServiceUpdateViewArgs struct { - Req *UpdateViewRequest `thrift:"req,1" frugal:"1,default,UpdateViewRequest"` +type TraceServiceGetTraceArgs struct { + Req *GetTraceRequest `thrift:"req,1" frugal:"1,default,GetTraceRequest"` } -func NewTraceServiceUpdateViewArgs() *TraceServiceUpdateViewArgs { - return &TraceServiceUpdateViewArgs{} +func NewTraceServiceGetTraceArgs() *TraceServiceGetTraceArgs { + return &TraceServiceGetTraceArgs{} } -func (p *TraceServiceUpdateViewArgs) InitDefault() { +func (p *TraceServiceGetTraceArgs) InitDefault() { } -var TraceServiceUpdateViewArgs_Req_DEFAULT *UpdateViewRequest +var TraceServiceGetTraceArgs_Req_DEFAULT *GetTraceRequest -func (p *TraceServiceUpdateViewArgs) GetReq() (v *UpdateViewRequest) { +func (p *TraceServiceGetTraceArgs) GetReq() (v *GetTraceRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceUpdateViewArgs_Req_DEFAULT + return TraceServiceGetTraceArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceUpdateViewArgs) SetReq(val *UpdateViewRequest) { +func (p *TraceServiceGetTraceArgs) SetReq(val *GetTraceRequest) { p.Req = val } -var fieldIDToName_TraceServiceUpdateViewArgs = map[int16]string{ +var fieldIDToName_TraceServiceGetTraceArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceUpdateViewArgs) IsSetReq() bool { +func (p *TraceServiceGetTraceArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceUpdateViewArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTraceArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -21854,7 +16425,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -21864,8 +16435,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateViewArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewUpdateViewRequest() +func (p *TraceServiceGetTraceArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewGetTraceRequest() if err := _field.Read(iprot); err != nil { return err } @@ -21873,9 +16444,9 @@ func (p *TraceServiceUpdateViewArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceUpdateViewArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTraceArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateView_args"); err != nil { + if err = oprot.WriteStructBegin("GetTrace_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -21901,7 +16472,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTraceArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -21918,15 +16489,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceUpdateViewArgs) String() string { +func (p *TraceServiceGetTraceArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateViewArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceGetTraceArgs(%+v)", *p) } -func (p *TraceServiceUpdateViewArgs) DeepEqual(ano *TraceServiceUpdateViewArgs) bool { +func (p *TraceServiceGetTraceArgs) DeepEqual(ano *TraceServiceGetTraceArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -21938,7 +16509,7 @@ func (p *TraceServiceUpdateViewArgs) DeepEqual(ano *TraceServiceUpdateViewArgs) return true } -func (p *TraceServiceUpdateViewArgs) Field1DeepEqual(src *UpdateViewRequest) bool { +func (p *TraceServiceGetTraceArgs) Field1DeepEqual(src *GetTraceRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -21946,41 +16517,41 @@ func (p *TraceServiceUpdateViewArgs) Field1DeepEqual(src *UpdateViewRequest) boo return true } -type TraceServiceUpdateViewResult struct { - Success *UpdateViewResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateViewResponse"` +type TraceServiceGetTraceResult struct { + Success *GetTraceResponse `thrift:"success,0,optional" frugal:"0,optional,GetTraceResponse"` } -func NewTraceServiceUpdateViewResult() *TraceServiceUpdateViewResult { - return &TraceServiceUpdateViewResult{} +func NewTraceServiceGetTraceResult() *TraceServiceGetTraceResult { + return &TraceServiceGetTraceResult{} } -func (p *TraceServiceUpdateViewResult) InitDefault() { +func (p *TraceServiceGetTraceResult) InitDefault() { } -var TraceServiceUpdateViewResult_Success_DEFAULT *UpdateViewResponse +var TraceServiceGetTraceResult_Success_DEFAULT *GetTraceResponse -func (p *TraceServiceUpdateViewResult) GetSuccess() (v *UpdateViewResponse) { +func (p *TraceServiceGetTraceResult) GetSuccess() (v *GetTraceResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceUpdateViewResult_Success_DEFAULT + return TraceServiceGetTraceResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceUpdateViewResult) SetSuccess(x interface{}) { - p.Success = x.(*UpdateViewResponse) +func (p *TraceServiceGetTraceResult) SetSuccess(x interface{}) { + p.Success = x.(*GetTraceResponse) } -var fieldIDToName_TraceServiceUpdateViewResult = map[int16]string{ +var fieldIDToName_TraceServiceGetTraceResult = map[int16]string{ 0: "success", } -func (p *TraceServiceUpdateViewResult) IsSetSuccess() bool { +func (p *TraceServiceGetTraceResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceUpdateViewResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTraceResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -22025,7 +16596,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -22035,8 +16606,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateViewResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewUpdateViewResponse() +func (p *TraceServiceGetTraceResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewGetTraceResponse() if err := _field.Read(iprot); err != nil { return err } @@ -22044,9 +16615,9 @@ func (p *TraceServiceUpdateViewResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceUpdateViewResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTraceResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateView_result"); err != nil { + if err = oprot.WriteStructBegin("GetTrace_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -22072,7 +16643,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateViewResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTraceResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -22091,15 +16662,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceUpdateViewResult) String() string { +func (p *TraceServiceGetTraceResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateViewResult(%+v)", *p) + return fmt.Sprintf("TraceServiceGetTraceResult(%+v)", *p) } -func (p *TraceServiceUpdateViewResult) DeepEqual(ano *TraceServiceUpdateViewResult) bool { +func (p *TraceServiceGetTraceResult) DeepEqual(ano *TraceServiceGetTraceResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -22111,7 +16682,7 @@ func (p *TraceServiceUpdateViewResult) DeepEqual(ano *TraceServiceUpdateViewResu return true } -func (p *TraceServiceUpdateViewResult) Field0DeepEqual(src *UpdateViewResponse) bool { +func (p *TraceServiceGetTraceResult) Field0DeepEqual(src *GetTraceResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -22119,41 +16690,41 @@ func (p *TraceServiceUpdateViewResult) Field0DeepEqual(src *UpdateViewResponse) return true } -type TraceServiceDeleteViewArgs struct { - Req *DeleteViewRequest `thrift:"req,1" frugal:"1,default,DeleteViewRequest"` +type TraceServiceBatchGetTracesAdvanceInfoArgs struct { + Req *BatchGetTracesAdvanceInfoRequest `thrift:"req,1" frugal:"1,default,BatchGetTracesAdvanceInfoRequest"` } -func NewTraceServiceDeleteViewArgs() *TraceServiceDeleteViewArgs { - return &TraceServiceDeleteViewArgs{} +func NewTraceServiceBatchGetTracesAdvanceInfoArgs() *TraceServiceBatchGetTracesAdvanceInfoArgs { + return &TraceServiceBatchGetTracesAdvanceInfoArgs{} } -func (p *TraceServiceDeleteViewArgs) InitDefault() { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) InitDefault() { } -var TraceServiceDeleteViewArgs_Req_DEFAULT *DeleteViewRequest +var TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT *BatchGetTracesAdvanceInfoRequest -func (p *TraceServiceDeleteViewArgs) GetReq() (v *DeleteViewRequest) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) GetReq() (v *BatchGetTracesAdvanceInfoRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceDeleteViewArgs_Req_DEFAULT + return TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceDeleteViewArgs) SetReq(val *DeleteViewRequest) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) SetReq(val *BatchGetTracesAdvanceInfoRequest) { p.Req = val } -var fieldIDToName_TraceServiceDeleteViewArgs = map[int16]string{ +var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceDeleteViewArgs) IsSetReq() bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceDeleteViewArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -22198,7 +16769,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -22208,8 +16779,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteViewArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewDeleteViewRequest() +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewBatchGetTracesAdvanceInfoRequest() if err := _field.Read(iprot); err != nil { return err } @@ -22217,9 +16788,9 @@ func (p *TraceServiceDeleteViewArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceDeleteViewArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteView_args"); err != nil { + if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -22245,7 +16816,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteViewArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -22262,15 +16833,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceDeleteViewArgs) String() string { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteViewArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoArgs(%+v)", *p) } -func (p *TraceServiceDeleteViewArgs) DeepEqual(ano *TraceServiceDeleteViewArgs) bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -22282,7 +16853,7 @@ func (p *TraceServiceDeleteViewArgs) DeepEqual(ano *TraceServiceDeleteViewArgs) return true } -func (p *TraceServiceDeleteViewArgs) Field1DeepEqual(src *DeleteViewRequest) bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Field1DeepEqual(src *BatchGetTracesAdvanceInfoRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -22290,41 +16861,41 @@ func (p *TraceServiceDeleteViewArgs) Field1DeepEqual(src *DeleteViewRequest) boo return true } -type TraceServiceDeleteViewResult struct { - Success *DeleteViewResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteViewResponse"` +type TraceServiceBatchGetTracesAdvanceInfoResult struct { + Success *BatchGetTracesAdvanceInfoResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetTracesAdvanceInfoResponse"` } -func NewTraceServiceDeleteViewResult() *TraceServiceDeleteViewResult { - return &TraceServiceDeleteViewResult{} +func NewTraceServiceBatchGetTracesAdvanceInfoResult() *TraceServiceBatchGetTracesAdvanceInfoResult { + return &TraceServiceBatchGetTracesAdvanceInfoResult{} } -func (p *TraceServiceDeleteViewResult) InitDefault() { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) InitDefault() { } -var TraceServiceDeleteViewResult_Success_DEFAULT *DeleteViewResponse +var TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT *BatchGetTracesAdvanceInfoResponse -func (p *TraceServiceDeleteViewResult) GetSuccess() (v *DeleteViewResponse) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) GetSuccess() (v *BatchGetTracesAdvanceInfoResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceDeleteViewResult_Success_DEFAULT + return TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceDeleteViewResult) SetSuccess(x interface{}) { - p.Success = x.(*DeleteViewResponse) +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) SetSuccess(x interface{}) { + p.Success = x.(*BatchGetTracesAdvanceInfoResponse) } -var fieldIDToName_TraceServiceDeleteViewResult = map[int16]string{ +var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult = map[int16]string{ 0: "success", } -func (p *TraceServiceDeleteViewResult) IsSetSuccess() bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceDeleteViewResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -22369,7 +16940,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -22379,8 +16950,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteViewResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewDeleteViewResponse() +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewBatchGetTracesAdvanceInfoResponse() if err := _field.Read(iprot); err != nil { return err } @@ -22388,9 +16959,9 @@ func (p *TraceServiceDeleteViewResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceDeleteViewResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteView_result"); err != nil { + if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -22416,7 +16987,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteViewResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -22435,15 +17006,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceDeleteViewResult) String() string { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteViewResult(%+v)", *p) + return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoResult(%+v)", *p) } -func (p *TraceServiceDeleteViewResult) DeepEqual(ano *TraceServiceDeleteViewResult) bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -22455,7 +17026,7 @@ func (p *TraceServiceDeleteViewResult) DeepEqual(ano *TraceServiceDeleteViewResu return true } -func (p *TraceServiceDeleteViewResult) Field0DeepEqual(src *DeleteViewResponse) bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Field0DeepEqual(src *BatchGetTracesAdvanceInfoResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -22463,41 +17034,41 @@ func (p *TraceServiceDeleteViewResult) Field0DeepEqual(src *DeleteViewResponse) return true } -type TraceServiceListViewsArgs struct { - Req *ListViewsRequest `thrift:"req,1" frugal:"1,default,ListViewsRequest"` +type TraceServiceIngestTracesInnerArgs struct { + Req *IngestTracesRequest `thrift:"req,1" frugal:"1,default,IngestTracesRequest"` } -func NewTraceServiceListViewsArgs() *TraceServiceListViewsArgs { - return &TraceServiceListViewsArgs{} +func NewTraceServiceIngestTracesInnerArgs() *TraceServiceIngestTracesInnerArgs { + return &TraceServiceIngestTracesInnerArgs{} } -func (p *TraceServiceListViewsArgs) InitDefault() { +func (p *TraceServiceIngestTracesInnerArgs) InitDefault() { } -var TraceServiceListViewsArgs_Req_DEFAULT *ListViewsRequest +var TraceServiceIngestTracesInnerArgs_Req_DEFAULT *IngestTracesRequest -func (p *TraceServiceListViewsArgs) GetReq() (v *ListViewsRequest) { +func (p *TraceServiceIngestTracesInnerArgs) GetReq() (v *IngestTracesRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceListViewsArgs_Req_DEFAULT + return TraceServiceIngestTracesInnerArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceListViewsArgs) SetReq(val *ListViewsRequest) { +func (p *TraceServiceIngestTracesInnerArgs) SetReq(val *IngestTracesRequest) { p.Req = val } -var fieldIDToName_TraceServiceListViewsArgs = map[int16]string{ +var fieldIDToName_TraceServiceIngestTracesInnerArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceListViewsArgs) IsSetReq() bool { +func (p *TraceServiceIngestTracesInnerArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceListViewsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -22542,7 +17113,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -22552,8 +17123,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListViewsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListViewsRequest() +func (p *TraceServiceIngestTracesInnerArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewIngestTracesRequest() if err := _field.Read(iprot); err != nil { return err } @@ -22561,9 +17132,9 @@ func (p *TraceServiceListViewsArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListViewsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListViews_args"); err != nil { + if err = oprot.WriteStructBegin("IngestTracesInner_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -22589,7 +17160,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListViewsArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -22606,15 +17177,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceListViewsArgs) String() string { +func (p *TraceServiceIngestTracesInnerArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListViewsArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceIngestTracesInnerArgs(%+v)", *p) } -func (p *TraceServiceListViewsArgs) DeepEqual(ano *TraceServiceListViewsArgs) bool { +func (p *TraceServiceIngestTracesInnerArgs) DeepEqual(ano *TraceServiceIngestTracesInnerArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -22626,7 +17197,7 @@ func (p *TraceServiceListViewsArgs) DeepEqual(ano *TraceServiceListViewsArgs) bo return true } -func (p *TraceServiceListViewsArgs) Field1DeepEqual(src *ListViewsRequest) bool { +func (p *TraceServiceIngestTracesInnerArgs) Field1DeepEqual(src *IngestTracesRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -22634,41 +17205,41 @@ func (p *TraceServiceListViewsArgs) Field1DeepEqual(src *ListViewsRequest) bool return true } -type TraceServiceListViewsResult struct { - Success *ListViewsResponse `thrift:"success,0,optional" frugal:"0,optional,ListViewsResponse"` +type TraceServiceIngestTracesInnerResult struct { + Success *IngestTracesResponse `thrift:"success,0,optional" frugal:"0,optional,IngestTracesResponse"` } -func NewTraceServiceListViewsResult() *TraceServiceListViewsResult { - return &TraceServiceListViewsResult{} +func NewTraceServiceIngestTracesInnerResult() *TraceServiceIngestTracesInnerResult { + return &TraceServiceIngestTracesInnerResult{} } -func (p *TraceServiceListViewsResult) InitDefault() { +func (p *TraceServiceIngestTracesInnerResult) InitDefault() { } -var TraceServiceListViewsResult_Success_DEFAULT *ListViewsResponse +var TraceServiceIngestTracesInnerResult_Success_DEFAULT *IngestTracesResponse -func (p *TraceServiceListViewsResult) GetSuccess() (v *ListViewsResponse) { +func (p *TraceServiceIngestTracesInnerResult) GetSuccess() (v *IngestTracesResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceListViewsResult_Success_DEFAULT + return TraceServiceIngestTracesInnerResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceListViewsResult) SetSuccess(x interface{}) { - p.Success = x.(*ListViewsResponse) +func (p *TraceServiceIngestTracesInnerResult) SetSuccess(x interface{}) { + p.Success = x.(*IngestTracesResponse) } -var fieldIDToName_TraceServiceListViewsResult = map[int16]string{ +var fieldIDToName_TraceServiceIngestTracesInnerResult = map[int16]string{ 0: "success", } -func (p *TraceServiceListViewsResult) IsSetSuccess() bool { +func (p *TraceServiceIngestTracesInnerResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceListViewsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -22713,7 +17284,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -22723,8 +17294,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListViewsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListViewsResponse() +func (p *TraceServiceIngestTracesInnerResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewIngestTracesResponse() if err := _field.Read(iprot); err != nil { return err } @@ -22732,9 +17303,9 @@ func (p *TraceServiceListViewsResult) ReadField0(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListViewsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListViews_result"); err != nil { + if err = oprot.WriteStructBegin("IngestTracesInner_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -22760,7 +17331,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListViewsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -22779,15 +17350,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceListViewsResult) String() string { +func (p *TraceServiceIngestTracesInnerResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListViewsResult(%+v)", *p) + return fmt.Sprintf("TraceServiceIngestTracesInnerResult(%+v)", *p) } -func (p *TraceServiceListViewsResult) DeepEqual(ano *TraceServiceListViewsResult) bool { +func (p *TraceServiceIngestTracesInnerResult) DeepEqual(ano *TraceServiceIngestTracesInnerResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -22799,7 +17370,7 @@ func (p *TraceServiceListViewsResult) DeepEqual(ano *TraceServiceListViewsResult return true } -func (p *TraceServiceListViewsResult) Field0DeepEqual(src *ListViewsResponse) bool { +func (p *TraceServiceIngestTracesInnerResult) Field0DeepEqual(src *IngestTracesResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -22807,41 +17378,41 @@ func (p *TraceServiceListViewsResult) Field0DeepEqual(src *ListViewsResponse) bo return true } -type TraceServiceCreateManualAnnotationArgs struct { - Req *CreateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,CreateManualAnnotationRequest"` +type TraceServiceGetTracesMetaInfoArgs struct { + Req *GetTracesMetaInfoRequest `thrift:"req,1" frugal:"1,default,GetTracesMetaInfoRequest"` } -func NewTraceServiceCreateManualAnnotationArgs() *TraceServiceCreateManualAnnotationArgs { - return &TraceServiceCreateManualAnnotationArgs{} +func NewTraceServiceGetTracesMetaInfoArgs() *TraceServiceGetTracesMetaInfoArgs { + return &TraceServiceGetTracesMetaInfoArgs{} } -func (p *TraceServiceCreateManualAnnotationArgs) InitDefault() { +func (p *TraceServiceGetTracesMetaInfoArgs) InitDefault() { } -var TraceServiceCreateManualAnnotationArgs_Req_DEFAULT *CreateManualAnnotationRequest +var TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT *GetTracesMetaInfoRequest -func (p *TraceServiceCreateManualAnnotationArgs) GetReq() (v *CreateManualAnnotationRequest) { +func (p *TraceServiceGetTracesMetaInfoArgs) GetReq() (v *GetTracesMetaInfoRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceCreateManualAnnotationArgs_Req_DEFAULT + return TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceCreateManualAnnotationArgs) SetReq(val *CreateManualAnnotationRequest) { +func (p *TraceServiceGetTracesMetaInfoArgs) SetReq(val *GetTracesMetaInfoRequest) { p.Req = val } -var fieldIDToName_TraceServiceCreateManualAnnotationArgs = map[int16]string{ +var fieldIDToName_TraceServiceGetTracesMetaInfoArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceCreateManualAnnotationArgs) IsSetReq() bool { +func (p *TraceServiceGetTracesMetaInfoArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceCreateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -22886,7 +17457,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -22896,8 +17467,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewCreateManualAnnotationRequest() +func (p *TraceServiceGetTracesMetaInfoArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewGetTracesMetaInfoRequest() if err := _field.Read(iprot); err != nil { return err } @@ -22905,9 +17476,9 @@ func (p *TraceServiceCreateManualAnnotationArgs) ReadField1(iprot thrift.TProtoc return nil } -func (p *TraceServiceCreateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateManualAnnotation_args"); err != nil { + if err = oprot.WriteStructBegin("GetTracesMetaInfo_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -22933,7 +17504,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -22950,15 +17521,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationArgs) String() string { +func (p *TraceServiceGetTracesMetaInfoArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateManualAnnotationArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceGetTracesMetaInfoArgs(%+v)", *p) } -func (p *TraceServiceCreateManualAnnotationArgs) DeepEqual(ano *TraceServiceCreateManualAnnotationArgs) bool { +func (p *TraceServiceGetTracesMetaInfoArgs) DeepEqual(ano *TraceServiceGetTracesMetaInfoArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -22970,7 +17541,7 @@ func (p *TraceServiceCreateManualAnnotationArgs) DeepEqual(ano *TraceServiceCrea return true } -func (p *TraceServiceCreateManualAnnotationArgs) Field1DeepEqual(src *CreateManualAnnotationRequest) bool { +func (p *TraceServiceGetTracesMetaInfoArgs) Field1DeepEqual(src *GetTracesMetaInfoRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -22978,41 +17549,41 @@ func (p *TraceServiceCreateManualAnnotationArgs) Field1DeepEqual(src *CreateManu return true } -type TraceServiceCreateManualAnnotationResult struct { - Success *CreateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,CreateManualAnnotationResponse"` +type TraceServiceGetTracesMetaInfoResult struct { + Success *GetTracesMetaInfoResponse `thrift:"success,0,optional" frugal:"0,optional,GetTracesMetaInfoResponse"` } -func NewTraceServiceCreateManualAnnotationResult() *TraceServiceCreateManualAnnotationResult { - return &TraceServiceCreateManualAnnotationResult{} +func NewTraceServiceGetTracesMetaInfoResult() *TraceServiceGetTracesMetaInfoResult { + return &TraceServiceGetTracesMetaInfoResult{} } -func (p *TraceServiceCreateManualAnnotationResult) InitDefault() { +func (p *TraceServiceGetTracesMetaInfoResult) InitDefault() { } -var TraceServiceCreateManualAnnotationResult_Success_DEFAULT *CreateManualAnnotationResponse +var TraceServiceGetTracesMetaInfoResult_Success_DEFAULT *GetTracesMetaInfoResponse -func (p *TraceServiceCreateManualAnnotationResult) GetSuccess() (v *CreateManualAnnotationResponse) { +func (p *TraceServiceGetTracesMetaInfoResult) GetSuccess() (v *GetTracesMetaInfoResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceCreateManualAnnotationResult_Success_DEFAULT + return TraceServiceGetTracesMetaInfoResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceCreateManualAnnotationResult) SetSuccess(x interface{}) { - p.Success = x.(*CreateManualAnnotationResponse) +func (p *TraceServiceGetTracesMetaInfoResult) SetSuccess(x interface{}) { + p.Success = x.(*GetTracesMetaInfoResponse) } -var fieldIDToName_TraceServiceCreateManualAnnotationResult = map[int16]string{ +var fieldIDToName_TraceServiceGetTracesMetaInfoResult = map[int16]string{ 0: "success", } -func (p *TraceServiceCreateManualAnnotationResult) IsSetSuccess() bool { +func (p *TraceServiceGetTracesMetaInfoResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceCreateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -23057,7 +17628,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -23067,8 +17638,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewCreateManualAnnotationResponse() +func (p *TraceServiceGetTracesMetaInfoResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewGetTracesMetaInfoResponse() if err := _field.Read(iprot); err != nil { return err } @@ -23076,9 +17647,9 @@ func (p *TraceServiceCreateManualAnnotationResult) ReadField0(iprot thrift.TProt return nil } -func (p *TraceServiceCreateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateManualAnnotation_result"); err != nil { + if err = oprot.WriteStructBegin("GetTracesMetaInfo_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -23104,7 +17675,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -23123,15 +17694,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationResult) String() string { +func (p *TraceServiceGetTracesMetaInfoResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateManualAnnotationResult(%+v)", *p) + return fmt.Sprintf("TraceServiceGetTracesMetaInfoResult(%+v)", *p) } -func (p *TraceServiceCreateManualAnnotationResult) DeepEqual(ano *TraceServiceCreateManualAnnotationResult) bool { +func (p *TraceServiceGetTracesMetaInfoResult) DeepEqual(ano *TraceServiceGetTracesMetaInfoResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -23143,7 +17714,7 @@ func (p *TraceServiceCreateManualAnnotationResult) DeepEqual(ano *TraceServiceCr return true } -func (p *TraceServiceCreateManualAnnotationResult) Field0DeepEqual(src *CreateManualAnnotationResponse) bool { +func (p *TraceServiceGetTracesMetaInfoResult) Field0DeepEqual(src *GetTracesMetaInfoResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -23151,41 +17722,41 @@ func (p *TraceServiceCreateManualAnnotationResult) Field0DeepEqual(src *CreateMa return true } -type TraceServiceUpdateManualAnnotationArgs struct { - Req *UpdateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,UpdateManualAnnotationRequest"` +type TraceServiceCreateViewArgs struct { + Req *CreateViewRequest `thrift:"req,1" frugal:"1,default,CreateViewRequest"` } -func NewTraceServiceUpdateManualAnnotationArgs() *TraceServiceUpdateManualAnnotationArgs { - return &TraceServiceUpdateManualAnnotationArgs{} +func NewTraceServiceCreateViewArgs() *TraceServiceCreateViewArgs { + return &TraceServiceCreateViewArgs{} } -func (p *TraceServiceUpdateManualAnnotationArgs) InitDefault() { +func (p *TraceServiceCreateViewArgs) InitDefault() { } -var TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT *UpdateManualAnnotationRequest +var TraceServiceCreateViewArgs_Req_DEFAULT *CreateViewRequest -func (p *TraceServiceUpdateManualAnnotationArgs) GetReq() (v *UpdateManualAnnotationRequest) { +func (p *TraceServiceCreateViewArgs) GetReq() (v *CreateViewRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT + return TraceServiceCreateViewArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceUpdateManualAnnotationArgs) SetReq(val *UpdateManualAnnotationRequest) { +func (p *TraceServiceCreateViewArgs) SetReq(val *CreateViewRequest) { p.Req = val } -var fieldIDToName_TraceServiceUpdateManualAnnotationArgs = map[int16]string{ +var fieldIDToName_TraceServiceCreateViewArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceUpdateManualAnnotationArgs) IsSetReq() bool { +func (p *TraceServiceCreateViewArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceUpdateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -23230,7 +17801,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -23240,8 +17811,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewUpdateManualAnnotationRequest() +func (p *TraceServiceCreateViewArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCreateViewRequest() if err := _field.Read(iprot); err != nil { return err } @@ -23249,9 +17820,9 @@ func (p *TraceServiceUpdateManualAnnotationArgs) ReadField1(iprot thrift.TProtoc return nil } -func (p *TraceServiceUpdateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateManualAnnotation_args"); err != nil { + if err = oprot.WriteStructBegin("CreateView_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -23277,7 +17848,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -23294,15 +17865,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) String() string { +func (p *TraceServiceCreateViewArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateManualAnnotationArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateViewArgs(%+v)", *p) } -func (p *TraceServiceUpdateManualAnnotationArgs) DeepEqual(ano *TraceServiceUpdateManualAnnotationArgs) bool { +func (p *TraceServiceCreateViewArgs) DeepEqual(ano *TraceServiceCreateViewArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -23314,7 +17885,7 @@ func (p *TraceServiceUpdateManualAnnotationArgs) DeepEqual(ano *TraceServiceUpda return true } -func (p *TraceServiceUpdateManualAnnotationArgs) Field1DeepEqual(src *UpdateManualAnnotationRequest) bool { +func (p *TraceServiceCreateViewArgs) Field1DeepEqual(src *CreateViewRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -23322,41 +17893,41 @@ func (p *TraceServiceUpdateManualAnnotationArgs) Field1DeepEqual(src *UpdateManu return true } -type TraceServiceUpdateManualAnnotationResult struct { - Success *UpdateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateManualAnnotationResponse"` +type TraceServiceCreateViewResult struct { + Success *CreateViewResponse `thrift:"success,0,optional" frugal:"0,optional,CreateViewResponse"` } -func NewTraceServiceUpdateManualAnnotationResult() *TraceServiceUpdateManualAnnotationResult { - return &TraceServiceUpdateManualAnnotationResult{} +func NewTraceServiceCreateViewResult() *TraceServiceCreateViewResult { + return &TraceServiceCreateViewResult{} } -func (p *TraceServiceUpdateManualAnnotationResult) InitDefault() { +func (p *TraceServiceCreateViewResult) InitDefault() { } -var TraceServiceUpdateManualAnnotationResult_Success_DEFAULT *UpdateManualAnnotationResponse +var TraceServiceCreateViewResult_Success_DEFAULT *CreateViewResponse -func (p *TraceServiceUpdateManualAnnotationResult) GetSuccess() (v *UpdateManualAnnotationResponse) { +func (p *TraceServiceCreateViewResult) GetSuccess() (v *CreateViewResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceUpdateManualAnnotationResult_Success_DEFAULT + return TraceServiceCreateViewResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceUpdateManualAnnotationResult) SetSuccess(x interface{}) { - p.Success = x.(*UpdateManualAnnotationResponse) +func (p *TraceServiceCreateViewResult) SetSuccess(x interface{}) { + p.Success = x.(*CreateViewResponse) } -var fieldIDToName_TraceServiceUpdateManualAnnotationResult = map[int16]string{ +var fieldIDToName_TraceServiceCreateViewResult = map[int16]string{ 0: "success", } -func (p *TraceServiceUpdateManualAnnotationResult) IsSetSuccess() bool { +func (p *TraceServiceCreateViewResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceUpdateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -23401,7 +17972,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -23411,8 +17982,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewUpdateManualAnnotationResponse() +func (p *TraceServiceCreateViewResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCreateViewResponse() if err := _field.Read(iprot); err != nil { return err } @@ -23420,9 +17991,9 @@ func (p *TraceServiceUpdateManualAnnotationResult) ReadField0(iprot thrift.TProt return nil } -func (p *TraceServiceUpdateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateManualAnnotation_result"); err != nil { + if err = oprot.WriteStructBegin("CreateView_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -23448,7 +18019,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -23467,15 +18038,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationResult) String() string { +func (p *TraceServiceCreateViewResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateManualAnnotationResult(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateViewResult(%+v)", *p) } -func (p *TraceServiceUpdateManualAnnotationResult) DeepEqual(ano *TraceServiceUpdateManualAnnotationResult) bool { +func (p *TraceServiceCreateViewResult) DeepEqual(ano *TraceServiceCreateViewResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -23487,7 +18058,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) DeepEqual(ano *TraceServiceUp return true } -func (p *TraceServiceUpdateManualAnnotationResult) Field0DeepEqual(src *UpdateManualAnnotationResponse) bool { +func (p *TraceServiceCreateViewResult) Field0DeepEqual(src *CreateViewResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -23495,41 +18066,41 @@ func (p *TraceServiceUpdateManualAnnotationResult) Field0DeepEqual(src *UpdateMa return true } -type TraceServiceDeleteManualAnnotationArgs struct { - Req *DeleteManualAnnotationRequest `thrift:"req,1" frugal:"1,default,DeleteManualAnnotationRequest"` +type TraceServiceUpdateViewArgs struct { + Req *UpdateViewRequest `thrift:"req,1" frugal:"1,default,UpdateViewRequest"` } -func NewTraceServiceDeleteManualAnnotationArgs() *TraceServiceDeleteManualAnnotationArgs { - return &TraceServiceDeleteManualAnnotationArgs{} +func NewTraceServiceUpdateViewArgs() *TraceServiceUpdateViewArgs { + return &TraceServiceUpdateViewArgs{} } -func (p *TraceServiceDeleteManualAnnotationArgs) InitDefault() { +func (p *TraceServiceUpdateViewArgs) InitDefault() { } -var TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT *DeleteManualAnnotationRequest +var TraceServiceUpdateViewArgs_Req_DEFAULT *UpdateViewRequest -func (p *TraceServiceDeleteManualAnnotationArgs) GetReq() (v *DeleteManualAnnotationRequest) { +func (p *TraceServiceUpdateViewArgs) GetReq() (v *UpdateViewRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT + return TraceServiceUpdateViewArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceDeleteManualAnnotationArgs) SetReq(val *DeleteManualAnnotationRequest) { +func (p *TraceServiceUpdateViewArgs) SetReq(val *UpdateViewRequest) { p.Req = val } -var fieldIDToName_TraceServiceDeleteManualAnnotationArgs = map[int16]string{ +var fieldIDToName_TraceServiceUpdateViewArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceDeleteManualAnnotationArgs) IsSetReq() bool { +func (p *TraceServiceUpdateViewArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceDeleteManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -23574,7 +18145,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -23584,8 +18155,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewDeleteManualAnnotationRequest() +func (p *TraceServiceUpdateViewArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewUpdateViewRequest() if err := _field.Read(iprot); err != nil { return err } @@ -23593,9 +18164,9 @@ func (p *TraceServiceDeleteManualAnnotationArgs) ReadField1(iprot thrift.TProtoc return nil } -func (p *TraceServiceDeleteManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteManualAnnotation_args"); err != nil { + if err = oprot.WriteStructBegin("UpdateView_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -23621,7 +18192,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -23638,15 +18209,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) String() string { +func (p *TraceServiceUpdateViewArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteManualAnnotationArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateViewArgs(%+v)", *p) } -func (p *TraceServiceDeleteManualAnnotationArgs) DeepEqual(ano *TraceServiceDeleteManualAnnotationArgs) bool { +func (p *TraceServiceUpdateViewArgs) DeepEqual(ano *TraceServiceUpdateViewArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -23658,7 +18229,7 @@ func (p *TraceServiceDeleteManualAnnotationArgs) DeepEqual(ano *TraceServiceDele return true } -func (p *TraceServiceDeleteManualAnnotationArgs) Field1DeepEqual(src *DeleteManualAnnotationRequest) bool { +func (p *TraceServiceUpdateViewArgs) Field1DeepEqual(src *UpdateViewRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -23666,41 +18237,41 @@ func (p *TraceServiceDeleteManualAnnotationArgs) Field1DeepEqual(src *DeleteManu return true } -type TraceServiceDeleteManualAnnotationResult struct { - Success *DeleteManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteManualAnnotationResponse"` +type TraceServiceUpdateViewResult struct { + Success *UpdateViewResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateViewResponse"` } -func NewTraceServiceDeleteManualAnnotationResult() *TraceServiceDeleteManualAnnotationResult { - return &TraceServiceDeleteManualAnnotationResult{} +func NewTraceServiceUpdateViewResult() *TraceServiceUpdateViewResult { + return &TraceServiceUpdateViewResult{} } -func (p *TraceServiceDeleteManualAnnotationResult) InitDefault() { +func (p *TraceServiceUpdateViewResult) InitDefault() { } -var TraceServiceDeleteManualAnnotationResult_Success_DEFAULT *DeleteManualAnnotationResponse +var TraceServiceUpdateViewResult_Success_DEFAULT *UpdateViewResponse -func (p *TraceServiceDeleteManualAnnotationResult) GetSuccess() (v *DeleteManualAnnotationResponse) { +func (p *TraceServiceUpdateViewResult) GetSuccess() (v *UpdateViewResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceDeleteManualAnnotationResult_Success_DEFAULT + return TraceServiceUpdateViewResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceDeleteManualAnnotationResult) SetSuccess(x interface{}) { - p.Success = x.(*DeleteManualAnnotationResponse) +func (p *TraceServiceUpdateViewResult) SetSuccess(x interface{}) { + p.Success = x.(*UpdateViewResponse) } -var fieldIDToName_TraceServiceDeleteManualAnnotationResult = map[int16]string{ +var fieldIDToName_TraceServiceUpdateViewResult = map[int16]string{ 0: "success", } -func (p *TraceServiceDeleteManualAnnotationResult) IsSetSuccess() bool { +func (p *TraceServiceUpdateViewResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceDeleteManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -23745,7 +18316,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -23755,8 +18326,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewDeleteManualAnnotationResponse() +func (p *TraceServiceUpdateViewResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewUpdateViewResponse() if err := _field.Read(iprot); err != nil { return err } @@ -23764,9 +18335,9 @@ func (p *TraceServiceDeleteManualAnnotationResult) ReadField0(iprot thrift.TProt return nil } -func (p *TraceServiceDeleteManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteManualAnnotation_result"); err != nil { + if err = oprot.WriteStructBegin("UpdateView_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -23792,7 +18363,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -23811,15 +18382,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationResult) String() string { +func (p *TraceServiceUpdateViewResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteManualAnnotationResult(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateViewResult(%+v)", *p) } -func (p *TraceServiceDeleteManualAnnotationResult) DeepEqual(ano *TraceServiceDeleteManualAnnotationResult) bool { +func (p *TraceServiceUpdateViewResult) DeepEqual(ano *TraceServiceUpdateViewResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -23831,7 +18402,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) DeepEqual(ano *TraceServiceDe return true } -func (p *TraceServiceDeleteManualAnnotationResult) Field0DeepEqual(src *DeleteManualAnnotationResponse) bool { +func (p *TraceServiceUpdateViewResult) Field0DeepEqual(src *UpdateViewResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -23839,41 +18410,41 @@ func (p *TraceServiceDeleteManualAnnotationResult) Field0DeepEqual(src *DeleteMa return true } -type TraceServiceListAnnotationsArgs struct { - Req *ListAnnotationsRequest `thrift:"req,1" frugal:"1,default,ListAnnotationsRequest"` +type TraceServiceDeleteViewArgs struct { + Req *DeleteViewRequest `thrift:"req,1" frugal:"1,default,DeleteViewRequest"` } -func NewTraceServiceListAnnotationsArgs() *TraceServiceListAnnotationsArgs { - return &TraceServiceListAnnotationsArgs{} +func NewTraceServiceDeleteViewArgs() *TraceServiceDeleteViewArgs { + return &TraceServiceDeleteViewArgs{} } -func (p *TraceServiceListAnnotationsArgs) InitDefault() { +func (p *TraceServiceDeleteViewArgs) InitDefault() { } -var TraceServiceListAnnotationsArgs_Req_DEFAULT *ListAnnotationsRequest +var TraceServiceDeleteViewArgs_Req_DEFAULT *DeleteViewRequest -func (p *TraceServiceListAnnotationsArgs) GetReq() (v *ListAnnotationsRequest) { +func (p *TraceServiceDeleteViewArgs) GetReq() (v *DeleteViewRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceListAnnotationsArgs_Req_DEFAULT + return TraceServiceDeleteViewArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceListAnnotationsArgs) SetReq(val *ListAnnotationsRequest) { +func (p *TraceServiceDeleteViewArgs) SetReq(val *DeleteViewRequest) { p.Req = val } -var fieldIDToName_TraceServiceListAnnotationsArgs = map[int16]string{ +var fieldIDToName_TraceServiceDeleteViewArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceListAnnotationsArgs) IsSetReq() bool { +func (p *TraceServiceDeleteViewArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceListAnnotationsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -23918,7 +18489,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -23928,8 +18499,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListAnnotationsRequest() +func (p *TraceServiceDeleteViewArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewDeleteViewRequest() if err := _field.Read(iprot); err != nil { return err } @@ -23937,9 +18508,9 @@ func (p *TraceServiceListAnnotationsArgs) ReadField1(iprot thrift.TProtocol) err return nil } -func (p *TraceServiceListAnnotationsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListAnnotations_args"); err != nil { + if err = oprot.WriteStructBegin("DeleteView_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -23965,7 +18536,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -23982,15 +18553,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceListAnnotationsArgs) String() string { +func (p *TraceServiceDeleteViewArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListAnnotationsArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceDeleteViewArgs(%+v)", *p) } -func (p *TraceServiceListAnnotationsArgs) DeepEqual(ano *TraceServiceListAnnotationsArgs) bool { +func (p *TraceServiceDeleteViewArgs) DeepEqual(ano *TraceServiceDeleteViewArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -24002,7 +18573,7 @@ func (p *TraceServiceListAnnotationsArgs) DeepEqual(ano *TraceServiceListAnnotat return true } -func (p *TraceServiceListAnnotationsArgs) Field1DeepEqual(src *ListAnnotationsRequest) bool { +func (p *TraceServiceDeleteViewArgs) Field1DeepEqual(src *DeleteViewRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -24010,41 +18581,41 @@ func (p *TraceServiceListAnnotationsArgs) Field1DeepEqual(src *ListAnnotationsRe return true } -type TraceServiceListAnnotationsResult struct { - Success *ListAnnotationsResponse `thrift:"success,0,optional" frugal:"0,optional,ListAnnotationsResponse"` +type TraceServiceDeleteViewResult struct { + Success *DeleteViewResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteViewResponse"` } -func NewTraceServiceListAnnotationsResult() *TraceServiceListAnnotationsResult { - return &TraceServiceListAnnotationsResult{} +func NewTraceServiceDeleteViewResult() *TraceServiceDeleteViewResult { + return &TraceServiceDeleteViewResult{} } -func (p *TraceServiceListAnnotationsResult) InitDefault() { +func (p *TraceServiceDeleteViewResult) InitDefault() { } -var TraceServiceListAnnotationsResult_Success_DEFAULT *ListAnnotationsResponse +var TraceServiceDeleteViewResult_Success_DEFAULT *DeleteViewResponse -func (p *TraceServiceListAnnotationsResult) GetSuccess() (v *ListAnnotationsResponse) { +func (p *TraceServiceDeleteViewResult) GetSuccess() (v *DeleteViewResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceListAnnotationsResult_Success_DEFAULT + return TraceServiceDeleteViewResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceListAnnotationsResult) SetSuccess(x interface{}) { - p.Success = x.(*ListAnnotationsResponse) +func (p *TraceServiceDeleteViewResult) SetSuccess(x interface{}) { + p.Success = x.(*DeleteViewResponse) } -var fieldIDToName_TraceServiceListAnnotationsResult = map[int16]string{ +var fieldIDToName_TraceServiceDeleteViewResult = map[int16]string{ 0: "success", } -func (p *TraceServiceListAnnotationsResult) IsSetSuccess() bool { +func (p *TraceServiceDeleteViewResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceListAnnotationsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -24089,7 +18660,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -24098,9 +18669,9 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } - -func (p *TraceServiceListAnnotationsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListAnnotationsResponse() + +func (p *TraceServiceDeleteViewResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewDeleteViewResponse() if err := _field.Read(iprot); err != nil { return err } @@ -24108,9 +18679,9 @@ func (p *TraceServiceListAnnotationsResult) ReadField0(iprot thrift.TProtocol) e return nil } -func (p *TraceServiceListAnnotationsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListAnnotations_result"); err != nil { + if err = oprot.WriteStructBegin("DeleteView_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -24136,7 +18707,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -24155,15 +18726,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceListAnnotationsResult) String() string { +func (p *TraceServiceDeleteViewResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListAnnotationsResult(%+v)", *p) + return fmt.Sprintf("TraceServiceDeleteViewResult(%+v)", *p) } -func (p *TraceServiceListAnnotationsResult) DeepEqual(ano *TraceServiceListAnnotationsResult) bool { +func (p *TraceServiceDeleteViewResult) DeepEqual(ano *TraceServiceDeleteViewResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -24175,7 +18746,7 @@ func (p *TraceServiceListAnnotationsResult) DeepEqual(ano *TraceServiceListAnnot return true } -func (p *TraceServiceListAnnotationsResult) Field0DeepEqual(src *ListAnnotationsResponse) bool { +func (p *TraceServiceDeleteViewResult) Field0DeepEqual(src *DeleteViewResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -24183,41 +18754,41 @@ func (p *TraceServiceListAnnotationsResult) Field0DeepEqual(src *ListAnnotations return true } -type TraceServiceChangeEvaluatorScoreArgs struct { - Req *ChangeEvaluatorScoreRequest `thrift:"req,1" frugal:"1,default,ChangeEvaluatorScoreRequest"` +type TraceServiceListViewsArgs struct { + Req *ListViewsRequest `thrift:"req,1" frugal:"1,default,ListViewsRequest"` } -func NewTraceServiceChangeEvaluatorScoreArgs() *TraceServiceChangeEvaluatorScoreArgs { - return &TraceServiceChangeEvaluatorScoreArgs{} +func NewTraceServiceListViewsArgs() *TraceServiceListViewsArgs { + return &TraceServiceListViewsArgs{} } -func (p *TraceServiceChangeEvaluatorScoreArgs) InitDefault() { +func (p *TraceServiceListViewsArgs) InitDefault() { } -var TraceServiceChangeEvaluatorScoreArgs_Req_DEFAULT *ChangeEvaluatorScoreRequest +var TraceServiceListViewsArgs_Req_DEFAULT *ListViewsRequest -func (p *TraceServiceChangeEvaluatorScoreArgs) GetReq() (v *ChangeEvaluatorScoreRequest) { +func (p *TraceServiceListViewsArgs) GetReq() (v *ListViewsRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceChangeEvaluatorScoreArgs_Req_DEFAULT + return TraceServiceListViewsArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceChangeEvaluatorScoreArgs) SetReq(val *ChangeEvaluatorScoreRequest) { +func (p *TraceServiceListViewsArgs) SetReq(val *ListViewsRequest) { p.Req = val } -var fieldIDToName_TraceServiceChangeEvaluatorScoreArgs = map[int16]string{ +var fieldIDToName_TraceServiceListViewsArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceChangeEvaluatorScoreArgs) IsSetReq() bool { +func (p *TraceServiceListViewsArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceChangeEvaluatorScoreArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -24262,7 +18833,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -24272,8 +18843,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceChangeEvaluatorScoreArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewChangeEvaluatorScoreRequest() +func (p *TraceServiceListViewsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListViewsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -24281,9 +18852,9 @@ func (p *TraceServiceChangeEvaluatorScoreArgs) ReadField1(iprot thrift.TProtocol return nil } -func (p *TraceServiceChangeEvaluatorScoreArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ChangeEvaluatorScore_args"); err != nil { + if err = oprot.WriteStructBegin("ListViews_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -24309,7 +18880,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceChangeEvaluatorScoreArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -24326,15 +18897,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceChangeEvaluatorScoreArgs) String() string { +func (p *TraceServiceListViewsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceChangeEvaluatorScoreArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceListViewsArgs(%+v)", *p) } -func (p *TraceServiceChangeEvaluatorScoreArgs) DeepEqual(ano *TraceServiceChangeEvaluatorScoreArgs) bool { +func (p *TraceServiceListViewsArgs) DeepEqual(ano *TraceServiceListViewsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -24346,7 +18917,7 @@ func (p *TraceServiceChangeEvaluatorScoreArgs) DeepEqual(ano *TraceServiceChange return true } -func (p *TraceServiceChangeEvaluatorScoreArgs) Field1DeepEqual(src *ChangeEvaluatorScoreRequest) bool { +func (p *TraceServiceListViewsArgs) Field1DeepEqual(src *ListViewsRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -24354,41 +18925,41 @@ func (p *TraceServiceChangeEvaluatorScoreArgs) Field1DeepEqual(src *ChangeEvalua return true } -type TraceServiceChangeEvaluatorScoreResult struct { - Success *ChangeEvaluatorScoreResponse `thrift:"success,0,optional" frugal:"0,optional,ChangeEvaluatorScoreResponse"` +type TraceServiceListViewsResult struct { + Success *ListViewsResponse `thrift:"success,0,optional" frugal:"0,optional,ListViewsResponse"` } -func NewTraceServiceChangeEvaluatorScoreResult() *TraceServiceChangeEvaluatorScoreResult { - return &TraceServiceChangeEvaluatorScoreResult{} +func NewTraceServiceListViewsResult() *TraceServiceListViewsResult { + return &TraceServiceListViewsResult{} } -func (p *TraceServiceChangeEvaluatorScoreResult) InitDefault() { +func (p *TraceServiceListViewsResult) InitDefault() { } -var TraceServiceChangeEvaluatorScoreResult_Success_DEFAULT *ChangeEvaluatorScoreResponse +var TraceServiceListViewsResult_Success_DEFAULT *ListViewsResponse -func (p *TraceServiceChangeEvaluatorScoreResult) GetSuccess() (v *ChangeEvaluatorScoreResponse) { +func (p *TraceServiceListViewsResult) GetSuccess() (v *ListViewsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceChangeEvaluatorScoreResult_Success_DEFAULT + return TraceServiceListViewsResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceChangeEvaluatorScoreResult) SetSuccess(x interface{}) { - p.Success = x.(*ChangeEvaluatorScoreResponse) +func (p *TraceServiceListViewsResult) SetSuccess(x interface{}) { + p.Success = x.(*ListViewsResponse) } -var fieldIDToName_TraceServiceChangeEvaluatorScoreResult = map[int16]string{ +var fieldIDToName_TraceServiceListViewsResult = map[int16]string{ 0: "success", } -func (p *TraceServiceChangeEvaluatorScoreResult) IsSetSuccess() bool { +func (p *TraceServiceListViewsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceChangeEvaluatorScoreResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -24433,7 +19004,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -24443,8 +19014,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceChangeEvaluatorScoreResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewChangeEvaluatorScoreResponse() +func (p *TraceServiceListViewsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListViewsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -24452,9 +19023,9 @@ func (p *TraceServiceChangeEvaluatorScoreResult) ReadField0(iprot thrift.TProtoc return nil } -func (p *TraceServiceChangeEvaluatorScoreResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ChangeEvaluatorScore_result"); err != nil { + if err = oprot.WriteStructBegin("ListViews_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -24480,7 +19051,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceChangeEvaluatorScoreResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -24499,15 +19070,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceChangeEvaluatorScoreResult) String() string { +func (p *TraceServiceListViewsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceChangeEvaluatorScoreResult(%+v)", *p) + return fmt.Sprintf("TraceServiceListViewsResult(%+v)", *p) } -func (p *TraceServiceChangeEvaluatorScoreResult) DeepEqual(ano *TraceServiceChangeEvaluatorScoreResult) bool { +func (p *TraceServiceListViewsResult) DeepEqual(ano *TraceServiceListViewsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -24519,7 +19090,7 @@ func (p *TraceServiceChangeEvaluatorScoreResult) DeepEqual(ano *TraceServiceChan return true } -func (p *TraceServiceChangeEvaluatorScoreResult) Field0DeepEqual(src *ChangeEvaluatorScoreResponse) bool { +func (p *TraceServiceListViewsResult) Field0DeepEqual(src *ListViewsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -24527,41 +19098,41 @@ func (p *TraceServiceChangeEvaluatorScoreResult) Field0DeepEqual(src *ChangeEval return true } -type TraceServiceListAnnotationEvaluatorsArgs struct { - Req *ListAnnotationEvaluatorsRequest `thrift:"req,1" frugal:"1,default,ListAnnotationEvaluatorsRequest"` +type TraceServiceCreateManualAnnotationArgs struct { + Req *CreateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,CreateManualAnnotationRequest"` } -func NewTraceServiceListAnnotationEvaluatorsArgs() *TraceServiceListAnnotationEvaluatorsArgs { - return &TraceServiceListAnnotationEvaluatorsArgs{} +func NewTraceServiceCreateManualAnnotationArgs() *TraceServiceCreateManualAnnotationArgs { + return &TraceServiceCreateManualAnnotationArgs{} } -func (p *TraceServiceListAnnotationEvaluatorsArgs) InitDefault() { +func (p *TraceServiceCreateManualAnnotationArgs) InitDefault() { } -var TraceServiceListAnnotationEvaluatorsArgs_Req_DEFAULT *ListAnnotationEvaluatorsRequest +var TraceServiceCreateManualAnnotationArgs_Req_DEFAULT *CreateManualAnnotationRequest -func (p *TraceServiceListAnnotationEvaluatorsArgs) GetReq() (v *ListAnnotationEvaluatorsRequest) { +func (p *TraceServiceCreateManualAnnotationArgs) GetReq() (v *CreateManualAnnotationRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceListAnnotationEvaluatorsArgs_Req_DEFAULT + return TraceServiceCreateManualAnnotationArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceListAnnotationEvaluatorsArgs) SetReq(val *ListAnnotationEvaluatorsRequest) { +func (p *TraceServiceCreateManualAnnotationArgs) SetReq(val *CreateManualAnnotationRequest) { p.Req = val } -var fieldIDToName_TraceServiceListAnnotationEvaluatorsArgs = map[int16]string{ +var fieldIDToName_TraceServiceCreateManualAnnotationArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceListAnnotationEvaluatorsArgs) IsSetReq() bool { +func (p *TraceServiceCreateManualAnnotationArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceListAnnotationEvaluatorsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -24606,7 +19177,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -24616,8 +19187,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListAnnotationEvaluatorsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListAnnotationEvaluatorsRequest() +func (p *TraceServiceCreateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCreateManualAnnotationRequest() if err := _field.Read(iprot); err != nil { return err } @@ -24625,9 +19196,9 @@ func (p *TraceServiceListAnnotationEvaluatorsArgs) ReadField1(iprot thrift.TProt return nil } -func (p *TraceServiceListAnnotationEvaluatorsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListAnnotationEvaluators_args"); err != nil { + if err = oprot.WriteStructBegin("CreateManualAnnotation_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -24653,7 +19224,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListAnnotationEvaluatorsArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -24670,15 +19241,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceListAnnotationEvaluatorsArgs) String() string { +func (p *TraceServiceCreateManualAnnotationArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListAnnotationEvaluatorsArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateManualAnnotationArgs(%+v)", *p) } -func (p *TraceServiceListAnnotationEvaluatorsArgs) DeepEqual(ano *TraceServiceListAnnotationEvaluatorsArgs) bool { +func (p *TraceServiceCreateManualAnnotationArgs) DeepEqual(ano *TraceServiceCreateManualAnnotationArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -24690,7 +19261,7 @@ func (p *TraceServiceListAnnotationEvaluatorsArgs) DeepEqual(ano *TraceServiceLi return true } -func (p *TraceServiceListAnnotationEvaluatorsArgs) Field1DeepEqual(src *ListAnnotationEvaluatorsRequest) bool { +func (p *TraceServiceCreateManualAnnotationArgs) Field1DeepEqual(src *CreateManualAnnotationRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -24698,41 +19269,41 @@ func (p *TraceServiceListAnnotationEvaluatorsArgs) Field1DeepEqual(src *ListAnno return true } -type TraceServiceListAnnotationEvaluatorsResult struct { - Success *ListAnnotationEvaluatorsResponse `thrift:"success,0,optional" frugal:"0,optional,ListAnnotationEvaluatorsResponse"` +type TraceServiceCreateManualAnnotationResult struct { + Success *CreateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,CreateManualAnnotationResponse"` } -func NewTraceServiceListAnnotationEvaluatorsResult() *TraceServiceListAnnotationEvaluatorsResult { - return &TraceServiceListAnnotationEvaluatorsResult{} +func NewTraceServiceCreateManualAnnotationResult() *TraceServiceCreateManualAnnotationResult { + return &TraceServiceCreateManualAnnotationResult{} } -func (p *TraceServiceListAnnotationEvaluatorsResult) InitDefault() { +func (p *TraceServiceCreateManualAnnotationResult) InitDefault() { } -var TraceServiceListAnnotationEvaluatorsResult_Success_DEFAULT *ListAnnotationEvaluatorsResponse +var TraceServiceCreateManualAnnotationResult_Success_DEFAULT *CreateManualAnnotationResponse -func (p *TraceServiceListAnnotationEvaluatorsResult) GetSuccess() (v *ListAnnotationEvaluatorsResponse) { +func (p *TraceServiceCreateManualAnnotationResult) GetSuccess() (v *CreateManualAnnotationResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceListAnnotationEvaluatorsResult_Success_DEFAULT + return TraceServiceCreateManualAnnotationResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceListAnnotationEvaluatorsResult) SetSuccess(x interface{}) { - p.Success = x.(*ListAnnotationEvaluatorsResponse) +func (p *TraceServiceCreateManualAnnotationResult) SetSuccess(x interface{}) { + p.Success = x.(*CreateManualAnnotationResponse) } -var fieldIDToName_TraceServiceListAnnotationEvaluatorsResult = map[int16]string{ +var fieldIDToName_TraceServiceCreateManualAnnotationResult = map[int16]string{ 0: "success", } -func (p *TraceServiceListAnnotationEvaluatorsResult) IsSetSuccess() bool { +func (p *TraceServiceCreateManualAnnotationResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceListAnnotationEvaluatorsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -24777,7 +19348,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -24787,8 +19358,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListAnnotationEvaluatorsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListAnnotationEvaluatorsResponse() +func (p *TraceServiceCreateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCreateManualAnnotationResponse() if err := _field.Read(iprot); err != nil { return err } @@ -24796,9 +19367,9 @@ func (p *TraceServiceListAnnotationEvaluatorsResult) ReadField0(iprot thrift.TPr return nil } -func (p *TraceServiceListAnnotationEvaluatorsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListAnnotationEvaluators_result"); err != nil { + if err = oprot.WriteStructBegin("CreateManualAnnotation_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -24824,7 +19395,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListAnnotationEvaluatorsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -24843,15 +19414,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceListAnnotationEvaluatorsResult) String() string { +func (p *TraceServiceCreateManualAnnotationResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListAnnotationEvaluatorsResult(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateManualAnnotationResult(%+v)", *p) } -func (p *TraceServiceListAnnotationEvaluatorsResult) DeepEqual(ano *TraceServiceListAnnotationEvaluatorsResult) bool { +func (p *TraceServiceCreateManualAnnotationResult) DeepEqual(ano *TraceServiceCreateManualAnnotationResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -24863,7 +19434,7 @@ func (p *TraceServiceListAnnotationEvaluatorsResult) DeepEqual(ano *TraceService return true } -func (p *TraceServiceListAnnotationEvaluatorsResult) Field0DeepEqual(src *ListAnnotationEvaluatorsResponse) bool { +func (p *TraceServiceCreateManualAnnotationResult) Field0DeepEqual(src *CreateManualAnnotationResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -24871,41 +19442,41 @@ func (p *TraceServiceListAnnotationEvaluatorsResult) Field0DeepEqual(src *ListAn return true } -type TraceServiceExtractSpanInfoArgs struct { - Req *ExtractSpanInfoRequest `thrift:"req,1" frugal:"1,default,ExtractSpanInfoRequest"` +type TraceServiceUpdateManualAnnotationArgs struct { + Req *UpdateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,UpdateManualAnnotationRequest"` } -func NewTraceServiceExtractSpanInfoArgs() *TraceServiceExtractSpanInfoArgs { - return &TraceServiceExtractSpanInfoArgs{} +func NewTraceServiceUpdateManualAnnotationArgs() *TraceServiceUpdateManualAnnotationArgs { + return &TraceServiceUpdateManualAnnotationArgs{} } -func (p *TraceServiceExtractSpanInfoArgs) InitDefault() { +func (p *TraceServiceUpdateManualAnnotationArgs) InitDefault() { } -var TraceServiceExtractSpanInfoArgs_Req_DEFAULT *ExtractSpanInfoRequest +var TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT *UpdateManualAnnotationRequest -func (p *TraceServiceExtractSpanInfoArgs) GetReq() (v *ExtractSpanInfoRequest) { +func (p *TraceServiceUpdateManualAnnotationArgs) GetReq() (v *UpdateManualAnnotationRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceExtractSpanInfoArgs_Req_DEFAULT + return TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceExtractSpanInfoArgs) SetReq(val *ExtractSpanInfoRequest) { +func (p *TraceServiceUpdateManualAnnotationArgs) SetReq(val *UpdateManualAnnotationRequest) { p.Req = val } -var fieldIDToName_TraceServiceExtractSpanInfoArgs = map[int16]string{ +var fieldIDToName_TraceServiceUpdateManualAnnotationArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceExtractSpanInfoArgs) IsSetReq() bool { +func (p *TraceServiceUpdateManualAnnotationArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceExtractSpanInfoArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -24950,7 +19521,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -24960,8 +19531,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceExtractSpanInfoArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewExtractSpanInfoRequest() +func (p *TraceServiceUpdateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewUpdateManualAnnotationRequest() if err := _field.Read(iprot); err != nil { return err } @@ -24969,9 +19540,9 @@ func (p *TraceServiceExtractSpanInfoArgs) ReadField1(iprot thrift.TProtocol) err return nil } -func (p *TraceServiceExtractSpanInfoArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ExtractSpanInfo_args"); err != nil { + if err = oprot.WriteStructBegin("UpdateManualAnnotation_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -24997,7 +19568,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceExtractSpanInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -25014,15 +19585,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceExtractSpanInfoArgs) String() string { +func (p *TraceServiceUpdateManualAnnotationArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceExtractSpanInfoArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateManualAnnotationArgs(%+v)", *p) } -func (p *TraceServiceExtractSpanInfoArgs) DeepEqual(ano *TraceServiceExtractSpanInfoArgs) bool { +func (p *TraceServiceUpdateManualAnnotationArgs) DeepEqual(ano *TraceServiceUpdateManualAnnotationArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -25034,7 +19605,7 @@ func (p *TraceServiceExtractSpanInfoArgs) DeepEqual(ano *TraceServiceExtractSpan return true } -func (p *TraceServiceExtractSpanInfoArgs) Field1DeepEqual(src *ExtractSpanInfoRequest) bool { +func (p *TraceServiceUpdateManualAnnotationArgs) Field1DeepEqual(src *UpdateManualAnnotationRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -25042,41 +19613,41 @@ func (p *TraceServiceExtractSpanInfoArgs) Field1DeepEqual(src *ExtractSpanInfoRe return true } -type TraceServiceExtractSpanInfoResult struct { - Success *ExtractSpanInfoResponse `thrift:"success,0,optional" frugal:"0,optional,ExtractSpanInfoResponse"` +type TraceServiceUpdateManualAnnotationResult struct { + Success *UpdateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateManualAnnotationResponse"` } -func NewTraceServiceExtractSpanInfoResult() *TraceServiceExtractSpanInfoResult { - return &TraceServiceExtractSpanInfoResult{} +func NewTraceServiceUpdateManualAnnotationResult() *TraceServiceUpdateManualAnnotationResult { + return &TraceServiceUpdateManualAnnotationResult{} } -func (p *TraceServiceExtractSpanInfoResult) InitDefault() { +func (p *TraceServiceUpdateManualAnnotationResult) InitDefault() { } -var TraceServiceExtractSpanInfoResult_Success_DEFAULT *ExtractSpanInfoResponse +var TraceServiceUpdateManualAnnotationResult_Success_DEFAULT *UpdateManualAnnotationResponse -func (p *TraceServiceExtractSpanInfoResult) GetSuccess() (v *ExtractSpanInfoResponse) { +func (p *TraceServiceUpdateManualAnnotationResult) GetSuccess() (v *UpdateManualAnnotationResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceExtractSpanInfoResult_Success_DEFAULT + return TraceServiceUpdateManualAnnotationResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceExtractSpanInfoResult) SetSuccess(x interface{}) { - p.Success = x.(*ExtractSpanInfoResponse) +func (p *TraceServiceUpdateManualAnnotationResult) SetSuccess(x interface{}) { + p.Success = x.(*UpdateManualAnnotationResponse) } -var fieldIDToName_TraceServiceExtractSpanInfoResult = map[int16]string{ +var fieldIDToName_TraceServiceUpdateManualAnnotationResult = map[int16]string{ 0: "success", } -func (p *TraceServiceExtractSpanInfoResult) IsSetSuccess() bool { +func (p *TraceServiceUpdateManualAnnotationResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceExtractSpanInfoResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -25121,7 +19692,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -25131,8 +19702,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceExtractSpanInfoResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewExtractSpanInfoResponse() +func (p *TraceServiceUpdateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewUpdateManualAnnotationResponse() if err := _field.Read(iprot); err != nil { return err } @@ -25140,9 +19711,9 @@ func (p *TraceServiceExtractSpanInfoResult) ReadField0(iprot thrift.TProtocol) e return nil } -func (p *TraceServiceExtractSpanInfoResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ExtractSpanInfo_result"); err != nil { + if err = oprot.WriteStructBegin("UpdateManualAnnotation_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -25168,7 +19739,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceExtractSpanInfoResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -25187,15 +19758,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceExtractSpanInfoResult) String() string { +func (p *TraceServiceUpdateManualAnnotationResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceExtractSpanInfoResult(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateManualAnnotationResult(%+v)", *p) } -func (p *TraceServiceExtractSpanInfoResult) DeepEqual(ano *TraceServiceExtractSpanInfoResult) bool { +func (p *TraceServiceUpdateManualAnnotationResult) DeepEqual(ano *TraceServiceUpdateManualAnnotationResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -25207,7 +19778,7 @@ func (p *TraceServiceExtractSpanInfoResult) DeepEqual(ano *TraceServiceExtractSp return true } -func (p *TraceServiceExtractSpanInfoResult) Field0DeepEqual(src *ExtractSpanInfoResponse) bool { +func (p *TraceServiceUpdateManualAnnotationResult) Field0DeepEqual(src *UpdateManualAnnotationResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -25215,41 +19786,41 @@ func (p *TraceServiceExtractSpanInfoResult) Field0DeepEqual(src *ExtractSpanInfo return true } -type TraceServiceCheckTaskNameArgs struct { - Req *CheckTaskNameRequest `thrift:"req,1" frugal:"1,default,CheckTaskNameRequest"` +type TraceServiceDeleteManualAnnotationArgs struct { + Req *DeleteManualAnnotationRequest `thrift:"req,1" frugal:"1,default,DeleteManualAnnotationRequest"` } -func NewTraceServiceCheckTaskNameArgs() *TraceServiceCheckTaskNameArgs { - return &TraceServiceCheckTaskNameArgs{} +func NewTraceServiceDeleteManualAnnotationArgs() *TraceServiceDeleteManualAnnotationArgs { + return &TraceServiceDeleteManualAnnotationArgs{} } -func (p *TraceServiceCheckTaskNameArgs) InitDefault() { +func (p *TraceServiceDeleteManualAnnotationArgs) InitDefault() { } -var TraceServiceCheckTaskNameArgs_Req_DEFAULT *CheckTaskNameRequest +var TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT *DeleteManualAnnotationRequest -func (p *TraceServiceCheckTaskNameArgs) GetReq() (v *CheckTaskNameRequest) { +func (p *TraceServiceDeleteManualAnnotationArgs) GetReq() (v *DeleteManualAnnotationRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceCheckTaskNameArgs_Req_DEFAULT + return TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceCheckTaskNameArgs) SetReq(val *CheckTaskNameRequest) { +func (p *TraceServiceDeleteManualAnnotationArgs) SetReq(val *DeleteManualAnnotationRequest) { p.Req = val } -var fieldIDToName_TraceServiceCheckTaskNameArgs = map[int16]string{ +var fieldIDToName_TraceServiceDeleteManualAnnotationArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceCheckTaskNameArgs) IsSetReq() bool { +func (p *TraceServiceDeleteManualAnnotationArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceCheckTaskNameArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -25294,7 +19865,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCheckTaskNameArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -25304,8 +19875,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCheckTaskNameArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewCheckTaskNameRequest() +func (p *TraceServiceDeleteManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewDeleteManualAnnotationRequest() if err := _field.Read(iprot); err != nil { return err } @@ -25313,9 +19884,9 @@ func (p *TraceServiceCheckTaskNameArgs) ReadField1(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceCheckTaskNameArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CheckTaskName_args"); err != nil { + if err = oprot.WriteStructBegin("DeleteManualAnnotation_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -25341,7 +19912,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCheckTaskNameArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -25358,15 +19929,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceCheckTaskNameArgs) String() string { +func (p *TraceServiceDeleteManualAnnotationArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCheckTaskNameArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceDeleteManualAnnotationArgs(%+v)", *p) } -func (p *TraceServiceCheckTaskNameArgs) DeepEqual(ano *TraceServiceCheckTaskNameArgs) bool { +func (p *TraceServiceDeleteManualAnnotationArgs) DeepEqual(ano *TraceServiceDeleteManualAnnotationArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -25378,7 +19949,7 @@ func (p *TraceServiceCheckTaskNameArgs) DeepEqual(ano *TraceServiceCheckTaskName return true } -func (p *TraceServiceCheckTaskNameArgs) Field1DeepEqual(src *CheckTaskNameRequest) bool { +func (p *TraceServiceDeleteManualAnnotationArgs) Field1DeepEqual(src *DeleteManualAnnotationRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -25386,41 +19957,41 @@ func (p *TraceServiceCheckTaskNameArgs) Field1DeepEqual(src *CheckTaskNameReques return true } -type TraceServiceCheckTaskNameResult struct { - Success *CheckTaskNameResponse `thrift:"success,0,optional" frugal:"0,optional,CheckTaskNameResponse"` +type TraceServiceDeleteManualAnnotationResult struct { + Success *DeleteManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteManualAnnotationResponse"` } -func NewTraceServiceCheckTaskNameResult() *TraceServiceCheckTaskNameResult { - return &TraceServiceCheckTaskNameResult{} +func NewTraceServiceDeleteManualAnnotationResult() *TraceServiceDeleteManualAnnotationResult { + return &TraceServiceDeleteManualAnnotationResult{} } -func (p *TraceServiceCheckTaskNameResult) InitDefault() { +func (p *TraceServiceDeleteManualAnnotationResult) InitDefault() { } -var TraceServiceCheckTaskNameResult_Success_DEFAULT *CheckTaskNameResponse +var TraceServiceDeleteManualAnnotationResult_Success_DEFAULT *DeleteManualAnnotationResponse -func (p *TraceServiceCheckTaskNameResult) GetSuccess() (v *CheckTaskNameResponse) { +func (p *TraceServiceDeleteManualAnnotationResult) GetSuccess() (v *DeleteManualAnnotationResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceCheckTaskNameResult_Success_DEFAULT + return TraceServiceDeleteManualAnnotationResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceCheckTaskNameResult) SetSuccess(x interface{}) { - p.Success = x.(*CheckTaskNameResponse) +func (p *TraceServiceDeleteManualAnnotationResult) SetSuccess(x interface{}) { + p.Success = x.(*DeleteManualAnnotationResponse) } -var fieldIDToName_TraceServiceCheckTaskNameResult = map[int16]string{ +var fieldIDToName_TraceServiceDeleteManualAnnotationResult = map[int16]string{ 0: "success", } -func (p *TraceServiceCheckTaskNameResult) IsSetSuccess() bool { +func (p *TraceServiceDeleteManualAnnotationResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceCheckTaskNameResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -25465,7 +20036,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCheckTaskNameResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -25475,8 +20046,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCheckTaskNameResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewCheckTaskNameResponse() +func (p *TraceServiceDeleteManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewDeleteManualAnnotationResponse() if err := _field.Read(iprot); err != nil { return err } @@ -25484,9 +20055,9 @@ func (p *TraceServiceCheckTaskNameResult) ReadField0(iprot thrift.TProtocol) err return nil } -func (p *TraceServiceCheckTaskNameResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CheckTaskName_result"); err != nil { + if err = oprot.WriteStructBegin("DeleteManualAnnotation_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -25512,7 +20083,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCheckTaskNameResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -25531,15 +20102,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceCheckTaskNameResult) String() string { +func (p *TraceServiceDeleteManualAnnotationResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCheckTaskNameResult(%+v)", *p) + return fmt.Sprintf("TraceServiceDeleteManualAnnotationResult(%+v)", *p) } -func (p *TraceServiceCheckTaskNameResult) DeepEqual(ano *TraceServiceCheckTaskNameResult) bool { +func (p *TraceServiceDeleteManualAnnotationResult) DeepEqual(ano *TraceServiceDeleteManualAnnotationResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -25551,7 +20122,7 @@ func (p *TraceServiceCheckTaskNameResult) DeepEqual(ano *TraceServiceCheckTaskNa return true } -func (p *TraceServiceCheckTaskNameResult) Field0DeepEqual(src *CheckTaskNameResponse) bool { +func (p *TraceServiceDeleteManualAnnotationResult) Field0DeepEqual(src *DeleteManualAnnotationResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -25559,41 +20130,41 @@ func (p *TraceServiceCheckTaskNameResult) Field0DeepEqual(src *CheckTaskNameResp return true } -type TraceServiceCreateTaskArgs struct { - Req *CreateTaskRequest `thrift:"req,1" frugal:"1,default,CreateTaskRequest"` +type TraceServiceListAnnotationsArgs struct { + Req *ListAnnotationsRequest `thrift:"req,1" frugal:"1,default,ListAnnotationsRequest"` } -func NewTraceServiceCreateTaskArgs() *TraceServiceCreateTaskArgs { - return &TraceServiceCreateTaskArgs{} +func NewTraceServiceListAnnotationsArgs() *TraceServiceListAnnotationsArgs { + return &TraceServiceListAnnotationsArgs{} } -func (p *TraceServiceCreateTaskArgs) InitDefault() { +func (p *TraceServiceListAnnotationsArgs) InitDefault() { } -var TraceServiceCreateTaskArgs_Req_DEFAULT *CreateTaskRequest +var TraceServiceListAnnotationsArgs_Req_DEFAULT *ListAnnotationsRequest -func (p *TraceServiceCreateTaskArgs) GetReq() (v *CreateTaskRequest) { +func (p *TraceServiceListAnnotationsArgs) GetReq() (v *ListAnnotationsRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceCreateTaskArgs_Req_DEFAULT + return TraceServiceListAnnotationsArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceCreateTaskArgs) SetReq(val *CreateTaskRequest) { +func (p *TraceServiceListAnnotationsArgs) SetReq(val *ListAnnotationsRequest) { p.Req = val } -var fieldIDToName_TraceServiceCreateTaskArgs = map[int16]string{ +var fieldIDToName_TraceServiceListAnnotationsArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceCreateTaskArgs) IsSetReq() bool { +func (p *TraceServiceListAnnotationsArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceCreateTaskArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -25638,7 +20209,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateTaskArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -25648,8 +20219,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateTaskArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewCreateTaskRequest() +func (p *TraceServiceListAnnotationsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListAnnotationsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -25657,9 +20228,9 @@ func (p *TraceServiceCreateTaskArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceCreateTaskArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateTask_args"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotations_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -25685,7 +20256,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateTaskArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -25702,15 +20273,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceCreateTaskArgs) String() string { +func (p *TraceServiceListAnnotationsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateTaskArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceListAnnotationsArgs(%+v)", *p) } -func (p *TraceServiceCreateTaskArgs) DeepEqual(ano *TraceServiceCreateTaskArgs) bool { +func (p *TraceServiceListAnnotationsArgs) DeepEqual(ano *TraceServiceListAnnotationsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -25722,7 +20293,7 @@ func (p *TraceServiceCreateTaskArgs) DeepEqual(ano *TraceServiceCreateTaskArgs) return true } -func (p *TraceServiceCreateTaskArgs) Field1DeepEqual(src *CreateTaskRequest) bool { +func (p *TraceServiceListAnnotationsArgs) Field1DeepEqual(src *ListAnnotationsRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -25730,41 +20301,41 @@ func (p *TraceServiceCreateTaskArgs) Field1DeepEqual(src *CreateTaskRequest) boo return true } -type TraceServiceCreateTaskResult struct { - Success *CreateTaskResponse `thrift:"success,0,optional" frugal:"0,optional,CreateTaskResponse"` +type TraceServiceListAnnotationsResult struct { + Success *ListAnnotationsResponse `thrift:"success,0,optional" frugal:"0,optional,ListAnnotationsResponse"` } -func NewTraceServiceCreateTaskResult() *TraceServiceCreateTaskResult { - return &TraceServiceCreateTaskResult{} +func NewTraceServiceListAnnotationsResult() *TraceServiceListAnnotationsResult { + return &TraceServiceListAnnotationsResult{} } -func (p *TraceServiceCreateTaskResult) InitDefault() { +func (p *TraceServiceListAnnotationsResult) InitDefault() { } -var TraceServiceCreateTaskResult_Success_DEFAULT *CreateTaskResponse +var TraceServiceListAnnotationsResult_Success_DEFAULT *ListAnnotationsResponse -func (p *TraceServiceCreateTaskResult) GetSuccess() (v *CreateTaskResponse) { +func (p *TraceServiceListAnnotationsResult) GetSuccess() (v *ListAnnotationsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceCreateTaskResult_Success_DEFAULT + return TraceServiceListAnnotationsResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceCreateTaskResult) SetSuccess(x interface{}) { - p.Success = x.(*CreateTaskResponse) +func (p *TraceServiceListAnnotationsResult) SetSuccess(x interface{}) { + p.Success = x.(*ListAnnotationsResponse) } -var fieldIDToName_TraceServiceCreateTaskResult = map[int16]string{ +var fieldIDToName_TraceServiceListAnnotationsResult = map[int16]string{ 0: "success", } -func (p *TraceServiceCreateTaskResult) IsSetSuccess() bool { +func (p *TraceServiceListAnnotationsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceCreateTaskResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -25809,7 +20380,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateTaskResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -25819,8 +20390,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateTaskResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewCreateTaskResponse() +func (p *TraceServiceListAnnotationsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListAnnotationsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -25828,9 +20399,9 @@ func (p *TraceServiceCreateTaskResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceCreateTaskResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateTask_result"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotations_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -25856,7 +20427,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateTaskResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -25875,15 +20446,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceCreateTaskResult) String() string { +func (p *TraceServiceListAnnotationsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateTaskResult(%+v)", *p) + return fmt.Sprintf("TraceServiceListAnnotationsResult(%+v)", *p) } -func (p *TraceServiceCreateTaskResult) DeepEqual(ano *TraceServiceCreateTaskResult) bool { +func (p *TraceServiceListAnnotationsResult) DeepEqual(ano *TraceServiceListAnnotationsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -25895,7 +20466,7 @@ func (p *TraceServiceCreateTaskResult) DeepEqual(ano *TraceServiceCreateTaskResu return true } -func (p *TraceServiceCreateTaskResult) Field0DeepEqual(src *CreateTaskResponse) bool { +func (p *TraceServiceListAnnotationsResult) Field0DeepEqual(src *ListAnnotationsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -25903,41 +20474,41 @@ func (p *TraceServiceCreateTaskResult) Field0DeepEqual(src *CreateTaskResponse) return true } -type TraceServiceUpdateTaskArgs struct { - Req *UpdateTaskRequest `thrift:"req,1" frugal:"1,default,UpdateTaskRequest"` +type TraceServiceChangeEvaluatorScoreArgs struct { + Req *ChangeEvaluatorScoreRequest `thrift:"req,1" frugal:"1,default,ChangeEvaluatorScoreRequest"` } -func NewTraceServiceUpdateTaskArgs() *TraceServiceUpdateTaskArgs { - return &TraceServiceUpdateTaskArgs{} +func NewTraceServiceChangeEvaluatorScoreArgs() *TraceServiceChangeEvaluatorScoreArgs { + return &TraceServiceChangeEvaluatorScoreArgs{} } -func (p *TraceServiceUpdateTaskArgs) InitDefault() { +func (p *TraceServiceChangeEvaluatorScoreArgs) InitDefault() { } -var TraceServiceUpdateTaskArgs_Req_DEFAULT *UpdateTaskRequest +var TraceServiceChangeEvaluatorScoreArgs_Req_DEFAULT *ChangeEvaluatorScoreRequest -func (p *TraceServiceUpdateTaskArgs) GetReq() (v *UpdateTaskRequest) { +func (p *TraceServiceChangeEvaluatorScoreArgs) GetReq() (v *ChangeEvaluatorScoreRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceUpdateTaskArgs_Req_DEFAULT + return TraceServiceChangeEvaluatorScoreArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceUpdateTaskArgs) SetReq(val *UpdateTaskRequest) { +func (p *TraceServiceChangeEvaluatorScoreArgs) SetReq(val *ChangeEvaluatorScoreRequest) { p.Req = val } -var fieldIDToName_TraceServiceUpdateTaskArgs = map[int16]string{ +var fieldIDToName_TraceServiceChangeEvaluatorScoreArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceUpdateTaskArgs) IsSetReq() bool { +func (p *TraceServiceChangeEvaluatorScoreArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceUpdateTaskArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -25982,7 +20553,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateTaskArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -25992,8 +20563,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateTaskArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewUpdateTaskRequest() +func (p *TraceServiceChangeEvaluatorScoreArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewChangeEvaluatorScoreRequest() if err := _field.Read(iprot); err != nil { return err } @@ -26001,9 +20572,9 @@ func (p *TraceServiceUpdateTaskArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceUpdateTaskArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateTask_args"); err != nil { + if err = oprot.WriteStructBegin("ChangeEvaluatorScore_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -26029,7 +20600,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateTaskArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -26046,15 +20617,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceUpdateTaskArgs) String() string { +func (p *TraceServiceChangeEvaluatorScoreArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateTaskArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceChangeEvaluatorScoreArgs(%+v)", *p) } -func (p *TraceServiceUpdateTaskArgs) DeepEqual(ano *TraceServiceUpdateTaskArgs) bool { +func (p *TraceServiceChangeEvaluatorScoreArgs) DeepEqual(ano *TraceServiceChangeEvaluatorScoreArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -26066,7 +20637,7 @@ func (p *TraceServiceUpdateTaskArgs) DeepEqual(ano *TraceServiceUpdateTaskArgs) return true } -func (p *TraceServiceUpdateTaskArgs) Field1DeepEqual(src *UpdateTaskRequest) bool { +func (p *TraceServiceChangeEvaluatorScoreArgs) Field1DeepEqual(src *ChangeEvaluatorScoreRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -26074,41 +20645,41 @@ func (p *TraceServiceUpdateTaskArgs) Field1DeepEqual(src *UpdateTaskRequest) boo return true } -type TraceServiceUpdateTaskResult struct { - Success *UpdateTaskResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateTaskResponse"` +type TraceServiceChangeEvaluatorScoreResult struct { + Success *ChangeEvaluatorScoreResponse `thrift:"success,0,optional" frugal:"0,optional,ChangeEvaluatorScoreResponse"` } -func NewTraceServiceUpdateTaskResult() *TraceServiceUpdateTaskResult { - return &TraceServiceUpdateTaskResult{} +func NewTraceServiceChangeEvaluatorScoreResult() *TraceServiceChangeEvaluatorScoreResult { + return &TraceServiceChangeEvaluatorScoreResult{} } -func (p *TraceServiceUpdateTaskResult) InitDefault() { +func (p *TraceServiceChangeEvaluatorScoreResult) InitDefault() { } -var TraceServiceUpdateTaskResult_Success_DEFAULT *UpdateTaskResponse +var TraceServiceChangeEvaluatorScoreResult_Success_DEFAULT *ChangeEvaluatorScoreResponse -func (p *TraceServiceUpdateTaskResult) GetSuccess() (v *UpdateTaskResponse) { +func (p *TraceServiceChangeEvaluatorScoreResult) GetSuccess() (v *ChangeEvaluatorScoreResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceUpdateTaskResult_Success_DEFAULT + return TraceServiceChangeEvaluatorScoreResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceUpdateTaskResult) SetSuccess(x interface{}) { - p.Success = x.(*UpdateTaskResponse) +func (p *TraceServiceChangeEvaluatorScoreResult) SetSuccess(x interface{}) { + p.Success = x.(*ChangeEvaluatorScoreResponse) } -var fieldIDToName_TraceServiceUpdateTaskResult = map[int16]string{ +var fieldIDToName_TraceServiceChangeEvaluatorScoreResult = map[int16]string{ 0: "success", } -func (p *TraceServiceUpdateTaskResult) IsSetSuccess() bool { +func (p *TraceServiceChangeEvaluatorScoreResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceUpdateTaskResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -26153,7 +20724,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateTaskResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -26163,8 +20734,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateTaskResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewUpdateTaskResponse() +func (p *TraceServiceChangeEvaluatorScoreResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewChangeEvaluatorScoreResponse() if err := _field.Read(iprot); err != nil { return err } @@ -26172,9 +20743,9 @@ func (p *TraceServiceUpdateTaskResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceUpdateTaskResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateTask_result"); err != nil { + if err = oprot.WriteStructBegin("ChangeEvaluatorScore_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -26200,7 +20771,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateTaskResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceChangeEvaluatorScoreResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -26219,15 +20790,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceUpdateTaskResult) String() string { +func (p *TraceServiceChangeEvaluatorScoreResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateTaskResult(%+v)", *p) + return fmt.Sprintf("TraceServiceChangeEvaluatorScoreResult(%+v)", *p) } -func (p *TraceServiceUpdateTaskResult) DeepEqual(ano *TraceServiceUpdateTaskResult) bool { +func (p *TraceServiceChangeEvaluatorScoreResult) DeepEqual(ano *TraceServiceChangeEvaluatorScoreResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -26239,7 +20810,7 @@ func (p *TraceServiceUpdateTaskResult) DeepEqual(ano *TraceServiceUpdateTaskResu return true } -func (p *TraceServiceUpdateTaskResult) Field0DeepEqual(src *UpdateTaskResponse) bool { +func (p *TraceServiceChangeEvaluatorScoreResult) Field0DeepEqual(src *ChangeEvaluatorScoreResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -26247,41 +20818,41 @@ func (p *TraceServiceUpdateTaskResult) Field0DeepEqual(src *UpdateTaskResponse) return true } -type TraceServiceListTasksArgs struct { - Req *ListTasksRequest `thrift:"req,1" frugal:"1,default,ListTasksRequest"` +type TraceServiceListAnnotationEvaluatorsArgs struct { + Req *ListAnnotationEvaluatorsRequest `thrift:"req,1" frugal:"1,default,ListAnnotationEvaluatorsRequest"` } -func NewTraceServiceListTasksArgs() *TraceServiceListTasksArgs { - return &TraceServiceListTasksArgs{} +func NewTraceServiceListAnnotationEvaluatorsArgs() *TraceServiceListAnnotationEvaluatorsArgs { + return &TraceServiceListAnnotationEvaluatorsArgs{} } -func (p *TraceServiceListTasksArgs) InitDefault() { +func (p *TraceServiceListAnnotationEvaluatorsArgs) InitDefault() { } -var TraceServiceListTasksArgs_Req_DEFAULT *ListTasksRequest +var TraceServiceListAnnotationEvaluatorsArgs_Req_DEFAULT *ListAnnotationEvaluatorsRequest -func (p *TraceServiceListTasksArgs) GetReq() (v *ListTasksRequest) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) GetReq() (v *ListAnnotationEvaluatorsRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceListTasksArgs_Req_DEFAULT + return TraceServiceListAnnotationEvaluatorsArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceListTasksArgs) SetReq(val *ListTasksRequest) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) SetReq(val *ListAnnotationEvaluatorsRequest) { p.Req = val } -var fieldIDToName_TraceServiceListTasksArgs = map[int16]string{ +var fieldIDToName_TraceServiceListAnnotationEvaluatorsArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceListTasksArgs) IsSetReq() bool { +func (p *TraceServiceListAnnotationEvaluatorsArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceListTasksArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -26326,7 +20897,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListTasksArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -26336,8 +20907,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListTasksArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListTasksRequest() +func (p *TraceServiceListAnnotationEvaluatorsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListAnnotationEvaluatorsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -26345,9 +20916,9 @@ func (p *TraceServiceListTasksArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListTasksArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListTasks_args"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotationEvaluators_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -26373,7 +20944,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListTasksArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -26390,15 +20961,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceListTasksArgs) String() string { +func (p *TraceServiceListAnnotationEvaluatorsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListTasksArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceListAnnotationEvaluatorsArgs(%+v)", *p) } -func (p *TraceServiceListTasksArgs) DeepEqual(ano *TraceServiceListTasksArgs) bool { +func (p *TraceServiceListAnnotationEvaluatorsArgs) DeepEqual(ano *TraceServiceListAnnotationEvaluatorsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -26410,7 +20981,7 @@ func (p *TraceServiceListTasksArgs) DeepEqual(ano *TraceServiceListTasksArgs) bo return true } -func (p *TraceServiceListTasksArgs) Field1DeepEqual(src *ListTasksRequest) bool { +func (p *TraceServiceListAnnotationEvaluatorsArgs) Field1DeepEqual(src *ListAnnotationEvaluatorsRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -26418,41 +20989,41 @@ func (p *TraceServiceListTasksArgs) Field1DeepEqual(src *ListTasksRequest) bool return true } -type TraceServiceListTasksResult struct { - Success *ListTasksResponse `thrift:"success,0,optional" frugal:"0,optional,ListTasksResponse"` +type TraceServiceListAnnotationEvaluatorsResult struct { + Success *ListAnnotationEvaluatorsResponse `thrift:"success,0,optional" frugal:"0,optional,ListAnnotationEvaluatorsResponse"` } -func NewTraceServiceListTasksResult() *TraceServiceListTasksResult { - return &TraceServiceListTasksResult{} +func NewTraceServiceListAnnotationEvaluatorsResult() *TraceServiceListAnnotationEvaluatorsResult { + return &TraceServiceListAnnotationEvaluatorsResult{} } -func (p *TraceServiceListTasksResult) InitDefault() { +func (p *TraceServiceListAnnotationEvaluatorsResult) InitDefault() { } -var TraceServiceListTasksResult_Success_DEFAULT *ListTasksResponse +var TraceServiceListAnnotationEvaluatorsResult_Success_DEFAULT *ListAnnotationEvaluatorsResponse -func (p *TraceServiceListTasksResult) GetSuccess() (v *ListTasksResponse) { +func (p *TraceServiceListAnnotationEvaluatorsResult) GetSuccess() (v *ListAnnotationEvaluatorsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceListTasksResult_Success_DEFAULT + return TraceServiceListAnnotationEvaluatorsResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceListTasksResult) SetSuccess(x interface{}) { - p.Success = x.(*ListTasksResponse) +func (p *TraceServiceListAnnotationEvaluatorsResult) SetSuccess(x interface{}) { + p.Success = x.(*ListAnnotationEvaluatorsResponse) } -var fieldIDToName_TraceServiceListTasksResult = map[int16]string{ +var fieldIDToName_TraceServiceListAnnotationEvaluatorsResult = map[int16]string{ 0: "success", } -func (p *TraceServiceListTasksResult) IsSetSuccess() bool { +func (p *TraceServiceListAnnotationEvaluatorsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceListTasksResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -26497,7 +21068,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListTasksResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -26507,8 +21078,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListTasksResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListTasksResponse() +func (p *TraceServiceListAnnotationEvaluatorsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListAnnotationEvaluatorsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -26516,9 +21087,9 @@ func (p *TraceServiceListTasksResult) ReadField0(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListTasksResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListTasks_result"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotationEvaluators_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -26544,7 +21115,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListTasksResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationEvaluatorsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -26563,15 +21134,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceListTasksResult) String() string { +func (p *TraceServiceListAnnotationEvaluatorsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListTasksResult(%+v)", *p) + return fmt.Sprintf("TraceServiceListAnnotationEvaluatorsResult(%+v)", *p) } -func (p *TraceServiceListTasksResult) DeepEqual(ano *TraceServiceListTasksResult) bool { +func (p *TraceServiceListAnnotationEvaluatorsResult) DeepEqual(ano *TraceServiceListAnnotationEvaluatorsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -26583,7 +21154,7 @@ func (p *TraceServiceListTasksResult) DeepEqual(ano *TraceServiceListTasksResult return true } -func (p *TraceServiceListTasksResult) Field0DeepEqual(src *ListTasksResponse) bool { +func (p *TraceServiceListAnnotationEvaluatorsResult) Field0DeepEqual(src *ListAnnotationEvaluatorsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -26591,41 +21162,41 @@ func (p *TraceServiceListTasksResult) Field0DeepEqual(src *ListTasksResponse) bo return true } -type TraceServiceGetTaskArgs struct { - Req *GetTaskRequest `thrift:"req,1" frugal:"1,default,GetTaskRequest"` +type TraceServiceExtractSpanInfoArgs struct { + Req *ExtractSpanInfoRequest `thrift:"req,1" frugal:"1,default,ExtractSpanInfoRequest"` } -func NewTraceServiceGetTaskArgs() *TraceServiceGetTaskArgs { - return &TraceServiceGetTaskArgs{} +func NewTraceServiceExtractSpanInfoArgs() *TraceServiceExtractSpanInfoArgs { + return &TraceServiceExtractSpanInfoArgs{} } -func (p *TraceServiceGetTaskArgs) InitDefault() { +func (p *TraceServiceExtractSpanInfoArgs) InitDefault() { } -var TraceServiceGetTaskArgs_Req_DEFAULT *GetTaskRequest +var TraceServiceExtractSpanInfoArgs_Req_DEFAULT *ExtractSpanInfoRequest -func (p *TraceServiceGetTaskArgs) GetReq() (v *GetTaskRequest) { +func (p *TraceServiceExtractSpanInfoArgs) GetReq() (v *ExtractSpanInfoRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceGetTaskArgs_Req_DEFAULT + return TraceServiceExtractSpanInfoArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceGetTaskArgs) SetReq(val *GetTaskRequest) { +func (p *TraceServiceExtractSpanInfoArgs) SetReq(val *ExtractSpanInfoRequest) { p.Req = val } -var fieldIDToName_TraceServiceGetTaskArgs = map[int16]string{ +var fieldIDToName_TraceServiceExtractSpanInfoArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceGetTaskArgs) IsSetReq() bool { +func (p *TraceServiceExtractSpanInfoArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceGetTaskArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -26670,7 +21241,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTaskArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -26680,8 +21251,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceGetTaskArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewGetTaskRequest() +func (p *TraceServiceExtractSpanInfoArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewExtractSpanInfoRequest() if err := _field.Read(iprot); err != nil { return err } @@ -26689,9 +21260,9 @@ func (p *TraceServiceGetTaskArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceGetTaskArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetTask_args"); err != nil { + if err = oprot.WriteStructBegin("ExtractSpanInfo_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -26717,7 +21288,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceGetTaskArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -26734,15 +21305,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceGetTaskArgs) String() string { +func (p *TraceServiceExtractSpanInfoArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceGetTaskArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceExtractSpanInfoArgs(%+v)", *p) } -func (p *TraceServiceGetTaskArgs) DeepEqual(ano *TraceServiceGetTaskArgs) bool { +func (p *TraceServiceExtractSpanInfoArgs) DeepEqual(ano *TraceServiceExtractSpanInfoArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -26754,7 +21325,7 @@ func (p *TraceServiceGetTaskArgs) DeepEqual(ano *TraceServiceGetTaskArgs) bool { return true } -func (p *TraceServiceGetTaskArgs) Field1DeepEqual(src *GetTaskRequest) bool { +func (p *TraceServiceExtractSpanInfoArgs) Field1DeepEqual(src *ExtractSpanInfoRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -26762,41 +21333,41 @@ func (p *TraceServiceGetTaskArgs) Field1DeepEqual(src *GetTaskRequest) bool { return true } -type TraceServiceGetTaskResult struct { - Success *GetTaskResponse `thrift:"success,0,optional" frugal:"0,optional,GetTaskResponse"` +type TraceServiceExtractSpanInfoResult struct { + Success *ExtractSpanInfoResponse `thrift:"success,0,optional" frugal:"0,optional,ExtractSpanInfoResponse"` } -func NewTraceServiceGetTaskResult() *TraceServiceGetTaskResult { - return &TraceServiceGetTaskResult{} +func NewTraceServiceExtractSpanInfoResult() *TraceServiceExtractSpanInfoResult { + return &TraceServiceExtractSpanInfoResult{} } -func (p *TraceServiceGetTaskResult) InitDefault() { +func (p *TraceServiceExtractSpanInfoResult) InitDefault() { } -var TraceServiceGetTaskResult_Success_DEFAULT *GetTaskResponse +var TraceServiceExtractSpanInfoResult_Success_DEFAULT *ExtractSpanInfoResponse -func (p *TraceServiceGetTaskResult) GetSuccess() (v *GetTaskResponse) { +func (p *TraceServiceExtractSpanInfoResult) GetSuccess() (v *ExtractSpanInfoResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceGetTaskResult_Success_DEFAULT + return TraceServiceExtractSpanInfoResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceGetTaskResult) SetSuccess(x interface{}) { - p.Success = x.(*GetTaskResponse) +func (p *TraceServiceExtractSpanInfoResult) SetSuccess(x interface{}) { + p.Success = x.(*ExtractSpanInfoResponse) } -var fieldIDToName_TraceServiceGetTaskResult = map[int16]string{ +var fieldIDToName_TraceServiceExtractSpanInfoResult = map[int16]string{ 0: "success", } -func (p *TraceServiceGetTaskResult) IsSetSuccess() bool { +func (p *TraceServiceExtractSpanInfoResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceGetTaskResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -26841,7 +21412,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTaskResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -26851,8 +21422,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceGetTaskResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewGetTaskResponse() +func (p *TraceServiceExtractSpanInfoResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewExtractSpanInfoResponse() if err := _field.Read(iprot); err != nil { return err } @@ -26860,9 +21431,9 @@ func (p *TraceServiceGetTaskResult) ReadField0(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceGetTaskResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetTask_result"); err != nil { + if err = oprot.WriteStructBegin("ExtractSpanInfo_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -26888,7 +21459,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceGetTaskResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExtractSpanInfoResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -26907,15 +21478,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceGetTaskResult) String() string { +func (p *TraceServiceExtractSpanInfoResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceGetTaskResult(%+v)", *p) + return fmt.Sprintf("TraceServiceExtractSpanInfoResult(%+v)", *p) } -func (p *TraceServiceGetTaskResult) DeepEqual(ano *TraceServiceGetTaskResult) bool { +func (p *TraceServiceExtractSpanInfoResult) DeepEqual(ano *TraceServiceExtractSpanInfoResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -26927,7 +21498,7 @@ func (p *TraceServiceGetTaskResult) DeepEqual(ano *TraceServiceGetTaskResult) bo return true } -func (p *TraceServiceGetTaskResult) Field0DeepEqual(src *GetTaskResponse) bool { +func (p *TraceServiceExtractSpanInfoResult) Field0DeepEqual(src *ExtractSpanInfoResponse) bool { if !p.Success.DeepEqual(src) { return false diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go index fa8feb311..72eb0d543 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go @@ -424,115 +424,3 @@ func (p *ExtractSpanInfoResponse) IsValid() error { } return nil } -func (p *CreateTaskRequest) IsValid() error { - if p.Task != nil { - if err := p.Task.IsValid(); err != nil { - return fmt.Errorf("field Task not valid, %w", err) - } - } - if p.Base != nil { - if err := p.Base.IsValid(); err != nil { - return fmt.Errorf("field Base not valid, %w", err) - } - } - return nil -} -func (p *CreateTaskResponse) IsValid() error { - if p.BaseResp != nil { - if err := p.BaseResp.IsValid(); err != nil { - return fmt.Errorf("field BaseResp not valid, %w", err) - } - } - return nil -} -func (p *UpdateTaskRequest) IsValid() error { - if p.WorkspaceID <= int64(0) { - return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) - } - if p.EffectiveTime != nil { - if err := p.EffectiveTime.IsValid(); err != nil { - return fmt.Errorf("field EffectiveTime not valid, %w", err) - } - } - if p.Base != nil { - if err := p.Base.IsValid(); err != nil { - return fmt.Errorf("field Base not valid, %w", err) - } - } - return nil -} -func (p *UpdateTaskResponse) IsValid() error { - if p.BaseResp != nil { - if err := p.BaseResp.IsValid(); err != nil { - return fmt.Errorf("field BaseResp not valid, %w", err) - } - } - return nil -} -func (p *ListTasksRequest) IsValid() error { - if p.WorkspaceID <= int64(0) { - return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) - } - if p.TaskFilters != nil { - if err := p.TaskFilters.IsValid(); err != nil { - return fmt.Errorf("field TaskFilters not valid, %w", err) - } - } - if p.Base != nil { - if err := p.Base.IsValid(); err != nil { - return fmt.Errorf("field Base not valid, %w", err) - } - } - return nil -} -func (p *ListTasksResponse) IsValid() error { - if p.BaseResp != nil { - if err := p.BaseResp.IsValid(); err != nil { - return fmt.Errorf("field BaseResp not valid, %w", err) - } - } - return nil -} -func (p *GetTaskRequest) IsValid() error { - if p.WorkspaceID <= int64(0) { - return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) - } - if p.Base != nil { - if err := p.Base.IsValid(); err != nil { - return fmt.Errorf("field Base not valid, %w", err) - } - } - return nil -} -func (p *GetTaskResponse) IsValid() error { - if p.Task != nil { - if err := p.Task.IsValid(); err != nil { - return fmt.Errorf("field Task not valid, %w", err) - } - } - if p.BaseResp != nil { - if err := p.BaseResp.IsValid(); err != nil { - return fmt.Errorf("field BaseResp not valid, %w", err) - } - } - return nil -} -func (p *CheckTaskNameRequest) IsValid() error { - if p.WorkspaceID <= int64(0) { - return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) - } - if p.Base != nil { - if err := p.Base.IsValid(); err != nil { - return fmt.Errorf("field Base not valid, %w", err) - } - } - return nil -} -func (p *CheckTaskNameResponse) IsValid() error { - if p.BaseResp != nil { - if err := p.BaseResp.IsValid(); err != nil { - return fmt.Errorf("field BaseResp not valid, %w", err) - } - } - return nil -} diff --git a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go index 958685abb..952dab120 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go @@ -11077,3587 +11077,7 @@ func (p *ExtractSpanInfoResponse) DeepCopy(s interface{}) error { return nil } -func (p *CreateTaskRequest) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - var issetTask bool = false - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetTask = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - if !issetTask { - fieldId = 1 - goto RequiredFieldNotSetError - } - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskRequest[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_CreateTaskRequest[fieldId])) -} - -func (p *CreateTaskRequest) FastReadField1(buf []byte) (int, error) { - offset := 0 - _field := task.NewTask() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Task = _field - return offset, nil -} - -func (p *CreateTaskRequest) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBase() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Base = _field - return offset, nil -} - -func (p *CreateTaskRequest) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *CreateTaskRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *CreateTaskRequest) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field255Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *CreateTaskRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) - offset += p.Task.FastWriteNocopy(buf[offset:], w) - return offset -} - -func (p *CreateTaskRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetBase() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.Base.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *CreateTaskRequest) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += p.Task.BLength() - return l -} - -func (p *CreateTaskRequest) field255Length() int { - l := 0 - if p.IsSetBase() { - l += thrift.Binary.FieldBeginLength() - l += p.Base.BLength() - } - return l -} - -func (p *CreateTaskRequest) DeepCopy(s interface{}) error { - src, ok := s.(*CreateTaskRequest) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _task *task.Task - if src.Task != nil { - _task = &task.Task{} - if err := _task.DeepCopy(src.Task); err != nil { - return err - } - } - p.Task = _task - - var _base *base.Base - if src.Base != nil { - _base = &base.Base{} - if err := _base.DeepCopy(src.Base); err != nil { - return err - } - } - p.Base = _base - - return nil -} - -func (p *CreateTaskResponse) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateTaskResponse[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *CreateTaskResponse) FastReadField1(buf []byte) (int, error) { - offset := 0 - - var _field *int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.TaskID = _field - return offset, nil -} - -func (p *CreateTaskResponse) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBaseResp() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.BaseResp = _field - return offset, nil -} - -func (p *CreateTaskResponse) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *CreateTaskResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *CreateTaskResponse) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field255Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *CreateTaskResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetTaskID() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], *p.TaskID) - } - return offset -} - -func (p *CreateTaskResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetBaseResp() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *CreateTaskResponse) field1Length() int { - l := 0 - if p.IsSetTaskID() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - } - return l -} - -func (p *CreateTaskResponse) field255Length() int { - l := 0 - if p.IsSetBaseResp() { - l += thrift.Binary.FieldBeginLength() - l += p.BaseResp.BLength() - } - return l -} - -func (p *CreateTaskResponse) DeepCopy(s interface{}) error { - src, ok := s.(*CreateTaskResponse) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - if src.TaskID != nil { - tmp := *src.TaskID - p.TaskID = &tmp - } - - var _baseResp *base.BaseResp - if src.BaseResp != nil { - _baseResp = &base.BaseResp{} - if err := _baseResp.DeepCopy(src.BaseResp); err != nil { - return err - } - } - p.BaseResp = _baseResp - - return nil -} - -func (p *UpdateTaskRequest) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - var issetTaskID bool = false - var issetWorkspaceID bool = false - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetTaskID = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 2: - if fieldTypeId == thrift.I64 { - l, err = p.FastReadField2(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetWorkspaceID = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 3: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField3(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 4: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField4(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 5: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField5(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 6: - if fieldTypeId == thrift.DOUBLE { - l, err = p.FastReadField6(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - if !issetTaskID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetWorkspaceID { - fieldId = 2 - goto RequiredFieldNotSetError - } - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskRequest[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_UpdateTaskRequest[fieldId])) -} - -func (p *UpdateTaskRequest) FastReadField1(buf []byte) (int, error) { - offset := 0 - - var _field int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.TaskID = _field - return offset, nil -} - -func (p *UpdateTaskRequest) FastReadField2(buf []byte) (int, error) { - offset := 0 - - var _field int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.WorkspaceID = _field - return offset, nil -} - -func (p *UpdateTaskRequest) FastReadField3(buf []byte) (int, error) { - offset := 0 - - var _field *task.TaskStatus - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.TaskStatus = _field - return offset, nil -} - -func (p *UpdateTaskRequest) FastReadField4(buf []byte) (int, error) { - offset := 0 - - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.Description = _field - return offset, nil -} - -func (p *UpdateTaskRequest) FastReadField5(buf []byte) (int, error) { - offset := 0 - _field := task.NewEffectiveTime() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.EffectiveTime = _field - return offset, nil -} - -func (p *UpdateTaskRequest) FastReadField6(buf []byte) (int, error) { - offset := 0 - - var _field *float64 - if v, l, err := thrift.Binary.ReadDouble(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.SampleRate = _field - return offset, nil -} - -func (p *UpdateTaskRequest) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBase() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Base = _field - return offset, nil -} - -func (p *UpdateTaskRequest) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *UpdateTaskRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) - offset += p.fastWriteField6(buf[offset:], w) - offset += p.fastWriteField3(buf[offset:], w) - offset += p.fastWriteField4(buf[offset:], w) - offset += p.fastWriteField5(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *UpdateTaskRequest) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field2Length() - l += p.field3Length() - l += p.field4Length() - l += p.field5Length() - l += p.field6Length() - l += p.field255Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *UpdateTaskRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], p.TaskID) - return offset -} - -func (p *UpdateTaskRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) - offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) - return offset -} - -func (p *UpdateTaskRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetTaskStatus() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.TaskStatus) - } - return offset -} - -func (p *UpdateTaskRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetDescription() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Description) - } - return offset -} - -func (p *UpdateTaskRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetEffectiveTime() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 5) - offset += p.EffectiveTime.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *UpdateTaskRequest) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetSampleRate() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.DOUBLE, 6) - offset += thrift.Binary.WriteDouble(buf[offset:], *p.SampleRate) - } - return offset -} - -func (p *UpdateTaskRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetBase() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.Base.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *UpdateTaskRequest) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - return l -} - -func (p *UpdateTaskRequest) field2Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - return l -} - -func (p *UpdateTaskRequest) field3Length() int { - l := 0 - if p.IsSetTaskStatus() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.TaskStatus) - } - return l -} - -func (p *UpdateTaskRequest) field4Length() int { - l := 0 - if p.IsSetDescription() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Description) - } - return l -} - -func (p *UpdateTaskRequest) field5Length() int { - l := 0 - if p.IsSetEffectiveTime() { - l += thrift.Binary.FieldBeginLength() - l += p.EffectiveTime.BLength() - } - return l -} - -func (p *UpdateTaskRequest) field6Length() int { - l := 0 - if p.IsSetSampleRate() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.DoubleLength() - } - return l -} - -func (p *UpdateTaskRequest) field255Length() int { - l := 0 - if p.IsSetBase() { - l += thrift.Binary.FieldBeginLength() - l += p.Base.BLength() - } - return l -} - -func (p *UpdateTaskRequest) DeepCopy(s interface{}) error { - src, ok := s.(*UpdateTaskRequest) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - p.TaskID = src.TaskID - - p.WorkspaceID = src.WorkspaceID - - if src.TaskStatus != nil { - tmp := *src.TaskStatus - p.TaskStatus = &tmp - } - - if src.Description != nil { - var tmp string - if *src.Description != "" { - tmp = kutils.StringDeepCopy(*src.Description) - } - p.Description = &tmp - } - - var _effectiveTime *task.EffectiveTime - if src.EffectiveTime != nil { - _effectiveTime = &task.EffectiveTime{} - if err := _effectiveTime.DeepCopy(src.EffectiveTime); err != nil { - return err - } - } - p.EffectiveTime = _effectiveTime - - if src.SampleRate != nil { - tmp := *src.SampleRate - p.SampleRate = &tmp - } - - var _base *base.Base - if src.Base != nil { - _base = &base.Base{} - if err := _base.DeepCopy(src.Base); err != nil { - return err - } - } - p.Base = _base - - return nil -} - -func (p *UpdateTaskResponse) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_UpdateTaskResponse[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *UpdateTaskResponse) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBaseResp() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.BaseResp = _field - return offset, nil -} - -func (p *UpdateTaskResponse) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *UpdateTaskResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *UpdateTaskResponse) BLength() int { - l := 0 - if p != nil { - l += p.field255Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *UpdateTaskResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetBaseResp() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *UpdateTaskResponse) field255Length() int { - l := 0 - if p.IsSetBaseResp() { - l += thrift.Binary.FieldBeginLength() - l += p.BaseResp.BLength() - } - return l -} - -func (p *UpdateTaskResponse) DeepCopy(s interface{}) error { - src, ok := s.(*UpdateTaskResponse) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _baseResp *base.BaseResp - if src.BaseResp != nil { - _baseResp = &base.BaseResp{} - if err := _baseResp.DeepCopy(src.BaseResp); err != nil { - return err - } - } - p.BaseResp = _baseResp - - return nil -} - -func (p *ListTasksRequest) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - var issetWorkspaceID bool = false - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetWorkspaceID = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 2: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField2(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 101: - if fieldTypeId == thrift.I32 { - l, err = p.FastReadField101(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 102: - if fieldTypeId == thrift.I32 { - l, err = p.FastReadField102(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 103: - if fieldTypeId == thrift.I32 { - l, err = p.FastReadField103(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - if !issetWorkspaceID { - fieldId = 1 - goto RequiredFieldNotSetError - } - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksRequest[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ListTasksRequest[fieldId])) -} - -func (p *ListTasksRequest) FastReadField1(buf []byte) (int, error) { - offset := 0 - - var _field int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.WorkspaceID = _field - return offset, nil -} - -func (p *ListTasksRequest) FastReadField2(buf []byte) (int, error) { - offset := 0 - _field := filter.NewTaskFilterFields() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.TaskFilters = _field - return offset, nil -} - -func (p *ListTasksRequest) FastReadField101(buf []byte) (int, error) { - offset := 0 - - var _field *int32 - if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.Limit = _field - return offset, nil -} - -func (p *ListTasksRequest) FastReadField102(buf []byte) (int, error) { - offset := 0 - - var _field *int32 - if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.Offset = _field - return offset, nil -} - -func (p *ListTasksRequest) FastReadField103(buf []byte) (int, error) { - offset := 0 - - var _field *OrderType - if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - - tmp := OrderType(v) - _field = &tmp - } - p.OrderBy = _field - return offset, nil -} - -func (p *ListTasksRequest) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBase() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Base = _field - return offset, nil -} - -func (p *ListTasksRequest) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *ListTasksRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField101(buf[offset:], w) - offset += p.fastWriteField102(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) - offset += p.fastWriteField103(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *ListTasksRequest) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field2Length() - l += p.field101Length() - l += p.field102Length() - l += p.field103Length() - l += p.field255Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *ListTasksRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) - return offset -} - -func (p *ListTasksRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetTaskFilters() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 2) - offset += p.TaskFilters.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *ListTasksRequest) fastWriteField101(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetLimit() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 101) - offset += thrift.Binary.WriteI32(buf[offset:], *p.Limit) - } - return offset -} - -func (p *ListTasksRequest) fastWriteField102(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetOffset() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 102) - offset += thrift.Binary.WriteI32(buf[offset:], *p.Offset) - } - return offset -} - -func (p *ListTasksRequest) fastWriteField103(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetOrderBy() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 103) - offset += thrift.Binary.WriteI32(buf[offset:], int32(*p.OrderBy)) - } - return offset -} - -func (p *ListTasksRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetBase() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.Base.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *ListTasksRequest) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - return l -} - -func (p *ListTasksRequest) field2Length() int { - l := 0 - if p.IsSetTaskFilters() { - l += thrift.Binary.FieldBeginLength() - l += p.TaskFilters.BLength() - } - return l -} - -func (p *ListTasksRequest) field101Length() int { - l := 0 - if p.IsSetLimit() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I32Length() - } - return l -} - -func (p *ListTasksRequest) field102Length() int { - l := 0 - if p.IsSetOffset() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I32Length() - } - return l -} - -func (p *ListTasksRequest) field103Length() int { - l := 0 - if p.IsSetOrderBy() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I32Length() - } - return l -} - -func (p *ListTasksRequest) field255Length() int { - l := 0 - if p.IsSetBase() { - l += thrift.Binary.FieldBeginLength() - l += p.Base.BLength() - } - return l -} - -func (p *ListTasksRequest) DeepCopy(s interface{}) error { - src, ok := s.(*ListTasksRequest) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - p.WorkspaceID = src.WorkspaceID - - var _taskFilters *filter.TaskFilterFields - if src.TaskFilters != nil { - _taskFilters = &filter.TaskFilterFields{} - if err := _taskFilters.DeepCopy(src.TaskFilters); err != nil { - return err - } - } - p.TaskFilters = _taskFilters - - if src.Limit != nil { - tmp := *src.Limit - p.Limit = &tmp - } - - if src.Offset != nil { - tmp := *src.Offset - p.Offset = &tmp - } - - if src.OrderBy != nil { - tmp := *src.OrderBy - p.OrderBy = &tmp - } - - var _base *base.Base - if src.Base != nil { - _base = &base.Base{} - if err := _base.DeepCopy(src.Base); err != nil { - return err - } - } - p.Base = _base - - return nil -} - -func (p *ListTasksResponse) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.LIST { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 100: - if fieldTypeId == thrift.I64 { - l, err = p.FastReadField100(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListTasksResponse[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *ListTasksResponse) FastReadField1(buf []byte) (int, error) { - offset := 0 - - _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) - offset += l - if err != nil { - return offset, err - } - _field := make([]*task.Task, 0, size) - values := make([]task.Task, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - if l, err := _elem.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - - _field = append(_field, _elem) - } - p.Tasks = _field - return offset, nil -} - -func (p *ListTasksResponse) FastReadField100(buf []byte) (int, error) { - offset := 0 - - var _field *int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.Total = _field - return offset, nil -} - -func (p *ListTasksResponse) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBaseResp() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.BaseResp = _field - return offset, nil -} - -func (p *ListTasksResponse) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *ListTasksResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField100(buf[offset:], w) - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *ListTasksResponse) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field100Length() - l += p.field255Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *ListTasksResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetTasks() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) - listBeginOffset := offset - offset += thrift.Binary.ListBeginLength() - var length int - for _, v := range p.Tasks { - length++ - offset += v.FastWriteNocopy(buf[offset:], w) - } - thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) - } - return offset -} - -func (p *ListTasksResponse) fastWriteField100(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetTotal() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 100) - offset += thrift.Binary.WriteI64(buf[offset:], *p.Total) - } - return offset -} - -func (p *ListTasksResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetBaseResp() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *ListTasksResponse) field1Length() int { - l := 0 - if p.IsSetTasks() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.ListBeginLength() - for _, v := range p.Tasks { - _ = v - l += v.BLength() - } - } - return l -} - -func (p *ListTasksResponse) field100Length() int { - l := 0 - if p.IsSetTotal() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - } - return l -} - -func (p *ListTasksResponse) field255Length() int { - l := 0 - if p.IsSetBaseResp() { - l += thrift.Binary.FieldBeginLength() - l += p.BaseResp.BLength() - } - return l -} - -func (p *ListTasksResponse) DeepCopy(s interface{}) error { - src, ok := s.(*ListTasksResponse) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - if src.Tasks != nil { - p.Tasks = make([]*task.Task, 0, len(src.Tasks)) - for _, elem := range src.Tasks { - var _elem *task.Task - if elem != nil { - _elem = &task.Task{} - if err := _elem.DeepCopy(elem); err != nil { - return err - } - } - - p.Tasks = append(p.Tasks, _elem) - } - } - - if src.Total != nil { - tmp := *src.Total - p.Total = &tmp - } - - var _baseResp *base.BaseResp - if src.BaseResp != nil { - _baseResp = &base.BaseResp{} - if err := _baseResp.DeepCopy(src.BaseResp); err != nil { - return err - } - } - p.BaseResp = _baseResp - - return nil -} - -func (p *GetTaskRequest) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - var issetTaskID bool = false - var issetWorkspaceID bool = false - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetTaskID = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 2: - if fieldTypeId == thrift.I64 { - l, err = p.FastReadField2(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetWorkspaceID = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - if !issetTaskID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetWorkspaceID { - fieldId = 2 - goto RequiredFieldNotSetError - } - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskRequest[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_GetTaskRequest[fieldId])) -} - -func (p *GetTaskRequest) FastReadField1(buf []byte) (int, error) { - offset := 0 - - var _field int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.TaskID = _field - return offset, nil -} - -func (p *GetTaskRequest) FastReadField2(buf []byte) (int, error) { - offset := 0 - - var _field int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.WorkspaceID = _field - return offset, nil -} - -func (p *GetTaskRequest) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBase() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Base = _field - return offset, nil -} - -func (p *GetTaskRequest) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *GetTaskRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *GetTaskRequest) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field2Length() - l += p.field255Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *GetTaskRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], p.TaskID) - return offset -} - -func (p *GetTaskRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) - offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) - return offset -} - -func (p *GetTaskRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetBase() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.Base.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *GetTaskRequest) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - return l -} - -func (p *GetTaskRequest) field2Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - return l -} - -func (p *GetTaskRequest) field255Length() int { - l := 0 - if p.IsSetBase() { - l += thrift.Binary.FieldBeginLength() - l += p.Base.BLength() - } - return l -} - -func (p *GetTaskRequest) DeepCopy(s interface{}) error { - src, ok := s.(*GetTaskRequest) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - p.TaskID = src.TaskID - - p.WorkspaceID = src.WorkspaceID - - var _base *base.Base - if src.Base != nil { - _base = &base.Base{} - if err := _base.DeepCopy(src.Base); err != nil { - return err - } - } - p.Base = _base - - return nil -} - -func (p *GetTaskResponse) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetTaskResponse[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *GetTaskResponse) FastReadField1(buf []byte) (int, error) { - offset := 0 - _field := task.NewTask() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Task = _field - return offset, nil -} - -func (p *GetTaskResponse) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBaseResp() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.BaseResp = _field - return offset, nil -} - -func (p *GetTaskResponse) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *GetTaskResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *GetTaskResponse) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field255Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *GetTaskResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetTask() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) - offset += p.Task.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *GetTaskResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetBaseResp() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *GetTaskResponse) field1Length() int { - l := 0 - if p.IsSetTask() { - l += thrift.Binary.FieldBeginLength() - l += p.Task.BLength() - } - return l -} - -func (p *GetTaskResponse) field255Length() int { - l := 0 - if p.IsSetBaseResp() { - l += thrift.Binary.FieldBeginLength() - l += p.BaseResp.BLength() - } - return l -} - -func (p *GetTaskResponse) DeepCopy(s interface{}) error { - src, ok := s.(*GetTaskResponse) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _task *task.Task - if src.Task != nil { - _task = &task.Task{} - if err := _task.DeepCopy(src.Task); err != nil { - return err - } - } - p.Task = _task - - var _baseResp *base.BaseResp - if src.BaseResp != nil { - _baseResp = &base.BaseResp{} - if err := _baseResp.DeepCopy(src.BaseResp); err != nil { - return err - } - } - p.BaseResp = _baseResp - - return nil -} - -func (p *CheckTaskNameRequest) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - var issetWorkspaceID bool = false - var issetName bool = false - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetWorkspaceID = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 2: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField2(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetName = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - if !issetWorkspaceID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetName { - fieldId = 2 - goto RequiredFieldNotSetError - } - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameRequest[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_CheckTaskNameRequest[fieldId])) -} - -func (p *CheckTaskNameRequest) FastReadField1(buf []byte) (int, error) { - offset := 0 - - var _field int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.WorkspaceID = _field - return offset, nil -} - -func (p *CheckTaskNameRequest) FastReadField2(buf []byte) (int, error) { - offset := 0 - - var _field string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.Name = _field - return offset, nil -} - -func (p *CheckTaskNameRequest) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBase() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Base = _field - return offset, nil -} - -func (p *CheckTaskNameRequest) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *CheckTaskNameRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *CheckTaskNameRequest) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field2Length() - l += p.field255Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *CheckTaskNameRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) - return offset -} - -func (p *CheckTaskNameRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.Name) - return offset -} - -func (p *CheckTaskNameRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetBase() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.Base.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *CheckTaskNameRequest) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - return l -} - -func (p *CheckTaskNameRequest) field2Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(p.Name) - return l -} - -func (p *CheckTaskNameRequest) field255Length() int { - l := 0 - if p.IsSetBase() { - l += thrift.Binary.FieldBeginLength() - l += p.Base.BLength() - } - return l -} - -func (p *CheckTaskNameRequest) DeepCopy(s interface{}) error { - src, ok := s.(*CheckTaskNameRequest) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - p.WorkspaceID = src.WorkspaceID - - if src.Name != "" { - p.Name = kutils.StringDeepCopy(src.Name) - } - - var _base *base.Base - if src.Base != nil { - _base = &base.Base{} - if err := _base.DeepCopy(src.Base); err != nil { - return err - } - } - p.Base = _base - - return nil -} - -func (p *CheckTaskNameResponse) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.BOOL { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 2: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField2(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CheckTaskNameResponse[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *CheckTaskNameResponse) FastReadField1(buf []byte) (int, error) { - offset := 0 - - var _field *bool - if v, l, err := thrift.Binary.ReadBool(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.Pass = _field - return offset, nil -} - -func (p *CheckTaskNameResponse) FastReadField2(buf []byte) (int, error) { - offset := 0 - - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.Message = _field - return offset, nil -} - -func (p *CheckTaskNameResponse) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBaseResp() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.BaseResp = _field - return offset, nil -} - -func (p *CheckTaskNameResponse) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *CheckTaskNameResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *CheckTaskNameResponse) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field2Length() - l += p.field255Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *CheckTaskNameResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetPass() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.BOOL, 1) - offset += thrift.Binary.WriteBool(buf[offset:], *p.Pass) - } - return offset -} - -func (p *CheckTaskNameResponse) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetMessage() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Message) - } - return offset -} - -func (p *CheckTaskNameResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) - return offset -} - -func (p *CheckTaskNameResponse) field1Length() int { - l := 0 - if p.IsSetPass() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.BoolLength() - } - return l -} - -func (p *CheckTaskNameResponse) field2Length() int { - l := 0 - if p.IsSetMessage() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Message) - } - return l -} - -func (p *CheckTaskNameResponse) field255Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += p.BaseResp.BLength() - return l -} - -func (p *CheckTaskNameResponse) DeepCopy(s interface{}) error { - src, ok := s.(*CheckTaskNameResponse) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - if src.Pass != nil { - tmp := *src.Pass - p.Pass = &tmp - } - - if src.Message != nil { - var tmp string - if *src.Message != "" { - tmp = kutils.StringDeepCopy(*src.Message) - } - p.Message = &tmp - } - - var _baseResp *base.BaseResp - if src.BaseResp != nil { - _baseResp = &base.BaseResp{} - if err := _baseResp.DeepCopy(src.BaseResp); err != nil { - return err - } - } - p.BaseResp = _baseResp - - return nil -} - -func (p *TraceServiceListSpansArgs) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *TraceServiceListSpansArgs) FastReadField1(buf []byte) (int, error) { - offset := 0 - _field := NewListSpansRequest() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Req = _field - return offset, nil -} - -func (p *TraceServiceListSpansArgs) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *TraceServiceListSpansArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *TraceServiceListSpansArgs) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *TraceServiceListSpansArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) - offset += p.Req.FastWriteNocopy(buf[offset:], w) - return offset -} - -func (p *TraceServiceListSpansArgs) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += p.Req.BLength() - return l -} - -func (p *TraceServiceListSpansArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListSpansArgs) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _req *ListSpansRequest - if src.Req != nil { - _req = &ListSpansRequest{} - if err := _req.DeepCopy(src.Req); err != nil { - return err - } - } - p.Req = _req - - return nil -} - -func (p *TraceServiceListSpansResult) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 0: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField0(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *TraceServiceListSpansResult) FastReadField0(buf []byte) (int, error) { - offset := 0 - _field := NewListSpansResponse() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Success = _field - return offset, nil -} - -func (p *TraceServiceListSpansResult) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *TraceServiceListSpansResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField0(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *TraceServiceListSpansResult) BLength() int { - l := 0 - if p != nil { - l += p.field0Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *TraceServiceListSpansResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetSuccess() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) - offset += p.Success.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *TraceServiceListSpansResult) field0Length() int { - l := 0 - if p.IsSetSuccess() { - l += thrift.Binary.FieldBeginLength() - l += p.Success.BLength() - } - return l -} - -func (p *TraceServiceListSpansResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListSpansResult) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _success *ListSpansResponse - if src.Success != nil { - _success = &ListSpansResponse{} - if err := _success.DeepCopy(src.Success); err != nil { - return err - } - } - p.Success = _success - - return nil -} - -func (p *TraceServiceGetTraceArgs) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *TraceServiceGetTraceArgs) FastReadField1(buf []byte) (int, error) { - offset := 0 - _field := NewGetTraceRequest() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Req = _field - return offset, nil -} - -func (p *TraceServiceGetTraceArgs) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *TraceServiceGetTraceArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *TraceServiceGetTraceArgs) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *TraceServiceGetTraceArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) - offset += p.Req.FastWriteNocopy(buf[offset:], w) - return offset -} - -func (p *TraceServiceGetTraceArgs) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += p.Req.BLength() - return l -} - -func (p *TraceServiceGetTraceArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTraceArgs) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _req *GetTraceRequest - if src.Req != nil { - _req = &GetTraceRequest{} - if err := _req.DeepCopy(src.Req); err != nil { - return err - } - } - p.Req = _req - - return nil -} - -func (p *TraceServiceGetTraceResult) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 0: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField0(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *TraceServiceGetTraceResult) FastReadField0(buf []byte) (int, error) { - offset := 0 - _field := NewGetTraceResponse() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Success = _field - return offset, nil -} - -func (p *TraceServiceGetTraceResult) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *TraceServiceGetTraceResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField0(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *TraceServiceGetTraceResult) BLength() int { - l := 0 - if p != nil { - l += p.field0Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *TraceServiceGetTraceResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetSuccess() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) - offset += p.Success.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *TraceServiceGetTraceResult) field0Length() int { - l := 0 - if p.IsSetSuccess() { - l += thrift.Binary.FieldBeginLength() - l += p.Success.BLength() - } - return l -} - -func (p *TraceServiceGetTraceResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTraceResult) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _success *GetTraceResponse - if src.Success != nil { - _success = &GetTraceResponse{} - if err := _success.DeepCopy(src.Success); err != nil { - return err - } - } - p.Success = _success - - return nil -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastReadField1(buf []byte) (int, error) { - offset := 0 - _field := NewBatchGetTracesAdvanceInfoRequest() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Req = _field - return offset, nil -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) - offset += p.Req.FastWriteNocopy(buf[offset:], w) - return offset -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += p.Req.BLength() - return l -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoArgs) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _req *BatchGetTracesAdvanceInfoRequest - if src.Req != nil { - _req = &BatchGetTracesAdvanceInfoRequest{} - if err := _req.DeepCopy(src.Req); err != nil { - return err - } - } - p.Req = _req - - return nil -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 0: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField0(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastReadField0(buf []byte) (int, error) { - offset := 0 - _field := NewBatchGetTracesAdvanceInfoResponse() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Success = _field - return offset, nil -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField0(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) BLength() int { - l := 0 - if p != nil { - l += p.field0Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetSuccess() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) - offset += p.Success.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) field0Length() int { - l := 0 - if p.IsSetSuccess() { - l += thrift.Binary.FieldBeginLength() - l += p.Success.BLength() - } - return l -} - -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoResult) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _success *BatchGetTracesAdvanceInfoResponse - if src.Success != nil { - _success = &BatchGetTracesAdvanceInfoResponse{} - if err := _success.DeepCopy(src.Success); err != nil { - return err - } - } - p.Success = _success - - return nil -} - -func (p *TraceServiceIngestTracesInnerArgs) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *TraceServiceIngestTracesInnerArgs) FastReadField1(buf []byte) (int, error) { - offset := 0 - _field := NewIngestTracesRequest() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Req = _field - return offset, nil -} - -func (p *TraceServiceIngestTracesInnerArgs) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *TraceServiceIngestTracesInnerArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *TraceServiceIngestTracesInnerArgs) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *TraceServiceIngestTracesInnerArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) - offset += p.Req.FastWriteNocopy(buf[offset:], w) - return offset -} - -func (p *TraceServiceIngestTracesInnerArgs) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += p.Req.BLength() - return l -} - -func (p *TraceServiceIngestTracesInnerArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceIngestTracesInnerArgs) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _req *IngestTracesRequest - if src.Req != nil { - _req = &IngestTracesRequest{} - if err := _req.DeepCopy(src.Req); err != nil { - return err - } - } - p.Req = _req - - return nil -} - -func (p *TraceServiceIngestTracesInnerResult) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 0: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField0(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *TraceServiceIngestTracesInnerResult) FastReadField0(buf []byte) (int, error) { - offset := 0 - _field := NewIngestTracesResponse() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Success = _field - return offset, nil -} - -func (p *TraceServiceIngestTracesInnerResult) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *TraceServiceIngestTracesInnerResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField0(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *TraceServiceIngestTracesInnerResult) BLength() int { - l := 0 - if p != nil { - l += p.field0Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *TraceServiceIngestTracesInnerResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetSuccess() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) - offset += p.Success.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *TraceServiceIngestTracesInnerResult) field0Length() int { - l := 0 - if p.IsSetSuccess() { - l += thrift.Binary.FieldBeginLength() - l += p.Success.BLength() - } - return l -} - -func (p *TraceServiceIngestTracesInnerResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceIngestTracesInnerResult) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _success *IngestTracesResponse - if src.Success != nil { - _success = &IngestTracesResponse{} - if err := _success.DeepCopy(src.Success); err != nil { - return err - } - } - p.Success = _success - - return nil -} - -func (p *TraceServiceGetTracesMetaInfoArgs) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *TraceServiceGetTracesMetaInfoArgs) FastReadField1(buf []byte) (int, error) { - offset := 0 - _field := NewGetTracesMetaInfoRequest() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Req = _field - return offset, nil -} - -func (p *TraceServiceGetTracesMetaInfoArgs) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *TraceServiceGetTracesMetaInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *TraceServiceGetTracesMetaInfoArgs) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *TraceServiceGetTracesMetaInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) - offset += p.Req.FastWriteNocopy(buf[offset:], w) - return offset -} - -func (p *TraceServiceGetTracesMetaInfoArgs) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += p.Req.BLength() - return l -} - -func (p *TraceServiceGetTracesMetaInfoArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTracesMetaInfoArgs) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _req *GetTracesMetaInfoRequest - if src.Req != nil { - _req = &GetTracesMetaInfoRequest{} - if err := _req.DeepCopy(src.Req); err != nil { - return err - } - } - p.Req = _req - - return nil -} - -func (p *TraceServiceGetTracesMetaInfoResult) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 0: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField0(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *TraceServiceGetTracesMetaInfoResult) FastReadField0(buf []byte) (int, error) { - offset := 0 - _field := NewGetTracesMetaInfoResponse() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Success = _field - return offset, nil -} - -func (p *TraceServiceGetTracesMetaInfoResult) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *TraceServiceGetTracesMetaInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField0(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *TraceServiceGetTracesMetaInfoResult) BLength() int { - l := 0 - if p != nil { - l += p.field0Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *TraceServiceGetTracesMetaInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetSuccess() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) - offset += p.Success.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *TraceServiceGetTracesMetaInfoResult) field0Length() int { - l := 0 - if p.IsSetSuccess() { - l += thrift.Binary.FieldBeginLength() - l += p.Success.BLength() - } - return l -} - -func (p *TraceServiceGetTracesMetaInfoResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTracesMetaInfoResult) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - var _success *GetTracesMetaInfoResponse - if src.Success != nil { - _success = &GetTracesMetaInfoResponse{} - if err := _success.DeepCopy(src.Success); err != nil { - return err - } - } - p.Success = _success - - return nil -} - -func (p *TraceServiceCreateViewArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListSpansArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -14701,14 +11121,14 @@ func (p *TraceServiceCreateViewArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateViewArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceListSpansArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewCreateViewRequest() + _field := NewListSpansRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -14718,11 +11138,11 @@ func (p *TraceServiceCreateViewArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceCreateViewArgs) FastWrite(buf []byte) int { +func (p *TraceServiceListSpansArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListSpansArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -14731,7 +11151,7 @@ func (p *TraceServiceCreateViewArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceCreateViewArgs) BLength() int { +func (p *TraceServiceListSpansArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -14740,29 +11160,29 @@ func (p *TraceServiceCreateViewArgs) BLength() int { return l } -func (p *TraceServiceCreateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListSpansArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceCreateViewArgs) field1Length() int { +func (p *TraceServiceListSpansArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceCreateViewArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateViewArgs) +func (p *TraceServiceListSpansArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListSpansArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *CreateViewRequest + var _req *ListSpansRequest if src.Req != nil { - _req = &CreateViewRequest{} + _req = &ListSpansRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -14772,7 +11192,7 @@ func (p *TraceServiceCreateViewArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateViewResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListSpansResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -14816,14 +11236,14 @@ func (p *TraceServiceCreateViewResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateViewResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceListSpansResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewCreateViewResponse() + _field := NewListSpansResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -14833,11 +11253,11 @@ func (p *TraceServiceCreateViewResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceCreateViewResult) FastWrite(buf []byte) int { +func (p *TraceServiceListSpansResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListSpansResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -14846,7 +11266,7 @@ func (p *TraceServiceCreateViewResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceCreateViewResult) BLength() int { +func (p *TraceServiceListSpansResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -14855,7 +11275,7 @@ func (p *TraceServiceCreateViewResult) BLength() int { return l } -func (p *TraceServiceCreateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListSpansResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -14864,7 +11284,7 @@ func (p *TraceServiceCreateViewResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceCreateViewResult) field0Length() int { +func (p *TraceServiceListSpansResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -14873,15 +11293,15 @@ func (p *TraceServiceCreateViewResult) field0Length() int { return l } -func (p *TraceServiceCreateViewResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateViewResult) +func (p *TraceServiceListSpansResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListSpansResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *CreateViewResponse + var _success *ListSpansResponse if src.Success != nil { - _success = &CreateViewResponse{} + _success = &ListSpansResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -14891,7 +11311,7 @@ func (p *TraceServiceCreateViewResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateViewArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceGetTraceArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -14935,14 +11355,14 @@ func (p *TraceServiceUpdateViewArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateViewArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceGetTraceArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewUpdateViewRequest() + _field := NewGetTraceRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -14952,11 +11372,11 @@ func (p *TraceServiceUpdateViewArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceUpdateViewArgs) FastWrite(buf []byte) int { +func (p *TraceServiceGetTraceArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTraceArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -14965,7 +11385,7 @@ func (p *TraceServiceUpdateViewArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceUpdateViewArgs) BLength() int { +func (p *TraceServiceGetTraceArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -14974,29 +11394,29 @@ func (p *TraceServiceUpdateViewArgs) BLength() int { return l } -func (p *TraceServiceUpdateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTraceArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceUpdateViewArgs) field1Length() int { +func (p *TraceServiceGetTraceArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceUpdateViewArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateViewArgs) +func (p *TraceServiceGetTraceArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTraceArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *UpdateViewRequest + var _req *GetTraceRequest if src.Req != nil { - _req = &UpdateViewRequest{} + _req = &GetTraceRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -15006,7 +11426,7 @@ func (p *TraceServiceUpdateViewArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateViewResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceGetTraceResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -15050,14 +11470,14 @@ func (p *TraceServiceUpdateViewResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateViewResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceGetTraceResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewUpdateViewResponse() + _field := NewGetTraceResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -15067,11 +11487,11 @@ func (p *TraceServiceUpdateViewResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceUpdateViewResult) FastWrite(buf []byte) int { +func (p *TraceServiceGetTraceResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTraceResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -15080,7 +11500,7 @@ func (p *TraceServiceUpdateViewResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceUpdateViewResult) BLength() int { +func (p *TraceServiceGetTraceResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -15089,7 +11509,7 @@ func (p *TraceServiceUpdateViewResult) BLength() int { return l } -func (p *TraceServiceUpdateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTraceResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -15098,7 +11518,7 @@ func (p *TraceServiceUpdateViewResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceUpdateViewResult) field0Length() int { +func (p *TraceServiceGetTraceResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -15107,15 +11527,15 @@ func (p *TraceServiceUpdateViewResult) field0Length() int { return l } -func (p *TraceServiceUpdateViewResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateViewResult) +func (p *TraceServiceGetTraceResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTraceResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *UpdateViewResponse + var _success *GetTraceResponse if src.Success != nil { - _success = &UpdateViewResponse{} + _success = &GetTraceResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -15125,7 +11545,7 @@ func (p *TraceServiceUpdateViewResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceDeleteViewArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -15169,14 +11589,14 @@ func (p *TraceServiceDeleteViewArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteViewArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewDeleteViewRequest() + _field := NewBatchGetTracesAdvanceInfoRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -15186,11 +11606,11 @@ func (p *TraceServiceDeleteViewArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceDeleteViewArgs) FastWrite(buf []byte) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -15199,7 +11619,7 @@ func (p *TraceServiceDeleteViewArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceDeleteViewArgs) BLength() int { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -15208,29 +11628,29 @@ func (p *TraceServiceDeleteViewArgs) BLength() int { return l } -func (p *TraceServiceDeleteViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceDeleteViewArgs) field1Length() int { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceDeleteViewArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteViewArgs) +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *DeleteViewRequest + var _req *BatchGetTracesAdvanceInfoRequest if src.Req != nil { - _req = &DeleteViewRequest{} + _req = &BatchGetTracesAdvanceInfoRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -15240,7 +11660,7 @@ func (p *TraceServiceDeleteViewArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceDeleteViewResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -15284,14 +11704,14 @@ func (p *TraceServiceDeleteViewResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteViewResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewDeleteViewResponse() + _field := NewBatchGetTracesAdvanceInfoResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -15301,11 +11721,11 @@ func (p *TraceServiceDeleteViewResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceDeleteViewResult) FastWrite(buf []byte) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -15314,7 +11734,7 @@ func (p *TraceServiceDeleteViewResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceDeleteViewResult) BLength() int { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -15323,7 +11743,7 @@ func (p *TraceServiceDeleteViewResult) BLength() int { return l } -func (p *TraceServiceDeleteViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -15332,7 +11752,7 @@ func (p *TraceServiceDeleteViewResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceDeleteViewResult) field0Length() int { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -15341,15 +11761,15 @@ func (p *TraceServiceDeleteViewResult) field0Length() int { return l } -func (p *TraceServiceDeleteViewResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteViewResult) +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *DeleteViewResponse + var _success *BatchGetTracesAdvanceInfoResponse if src.Success != nil { - _success = &DeleteViewResponse{} + _success = &BatchGetTracesAdvanceInfoResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -15359,7 +11779,7 @@ func (p *TraceServiceDeleteViewResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListViewsArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceIngestTracesInnerArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -15403,14 +11823,14 @@ func (p *TraceServiceListViewsArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListViewsArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceIngestTracesInnerArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewListViewsRequest() + _field := NewIngestTracesRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -15420,11 +11840,11 @@ func (p *TraceServiceListViewsArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListViewsArgs) FastWrite(buf []byte) int { +func (p *TraceServiceIngestTracesInnerArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListViewsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceIngestTracesInnerArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -15433,7 +11853,7 @@ func (p *TraceServiceListViewsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyW return offset } -func (p *TraceServiceListViewsArgs) BLength() int { +func (p *TraceServiceIngestTracesInnerArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -15442,29 +11862,29 @@ func (p *TraceServiceListViewsArgs) BLength() int { return l } -func (p *TraceServiceListViewsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceIngestTracesInnerArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceListViewsArgs) field1Length() int { +func (p *TraceServiceIngestTracesInnerArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceListViewsArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListViewsArgs) +func (p *TraceServiceIngestTracesInnerArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceIngestTracesInnerArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ListViewsRequest + var _req *IngestTracesRequest if src.Req != nil { - _req = &ListViewsRequest{} + _req = &IngestTracesRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -15474,7 +11894,7 @@ func (p *TraceServiceListViewsArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListViewsResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceIngestTracesInnerResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -15518,14 +11938,14 @@ func (p *TraceServiceListViewsResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListViewsResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceIngestTracesInnerResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewListViewsResponse() + _field := NewIngestTracesResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -15535,11 +11955,11 @@ func (p *TraceServiceListViewsResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListViewsResult) FastWrite(buf []byte) int { +func (p *TraceServiceIngestTracesInnerResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListViewsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceIngestTracesInnerResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -15548,7 +11968,7 @@ func (p *TraceServiceListViewsResult) FastWriteNocopy(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListViewsResult) BLength() int { +func (p *TraceServiceIngestTracesInnerResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -15557,7 +11977,7 @@ func (p *TraceServiceListViewsResult) BLength() int { return l } -func (p *TraceServiceListViewsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceIngestTracesInnerResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -15566,7 +11986,7 @@ func (p *TraceServiceListViewsResult) fastWriteField0(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListViewsResult) field0Length() int { +func (p *TraceServiceIngestTracesInnerResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -15575,15 +11995,15 @@ func (p *TraceServiceListViewsResult) field0Length() int { return l } -func (p *TraceServiceListViewsResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListViewsResult) +func (p *TraceServiceIngestTracesInnerResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceIngestTracesInnerResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ListViewsResponse + var _success *IngestTracesResponse if src.Success != nil { - _success = &ListViewsResponse{} + _success = &IngestTracesResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -15593,7 +12013,7 @@ func (p *TraceServiceListViewsResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateManualAnnotationArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceGetTracesMetaInfoArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -15637,14 +12057,14 @@ func (p *TraceServiceCreateManualAnnotationArgs) FastRead(buf []byte) (int, erro ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceGetTracesMetaInfoArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewCreateManualAnnotationRequest() + _field := NewGetTracesMetaInfoRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -15654,11 +12074,11 @@ func (p *TraceServiceCreateManualAnnotationArgs) FastReadField1(buf []byte) (int return offset, nil } -func (p *TraceServiceCreateManualAnnotationArgs) FastWrite(buf []byte) int { +func (p *TraceServiceGetTracesMetaInfoArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTracesMetaInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -15667,7 +12087,7 @@ func (p *TraceServiceCreateManualAnnotationArgs) FastWriteNocopy(buf []byte, w t return offset } -func (p *TraceServiceCreateManualAnnotationArgs) BLength() int { +func (p *TraceServiceGetTracesMetaInfoArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -15676,29 +12096,29 @@ func (p *TraceServiceCreateManualAnnotationArgs) BLength() int { return l } -func (p *TraceServiceCreateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTracesMetaInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceCreateManualAnnotationArgs) field1Length() int { +func (p *TraceServiceGetTracesMetaInfoArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceCreateManualAnnotationArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateManualAnnotationArgs) +func (p *TraceServiceGetTracesMetaInfoArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTracesMetaInfoArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *CreateManualAnnotationRequest + var _req *GetTracesMetaInfoRequest if src.Req != nil { - _req = &CreateManualAnnotationRequest{} + _req = &GetTracesMetaInfoRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -15708,7 +12128,7 @@ func (p *TraceServiceCreateManualAnnotationArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateManualAnnotationResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceGetTracesMetaInfoResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -15752,14 +12172,14 @@ func (p *TraceServiceCreateManualAnnotationResult) FastRead(buf []byte) (int, er ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceGetTracesMetaInfoResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewCreateManualAnnotationResponse() + _field := NewGetTracesMetaInfoResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -15769,11 +12189,11 @@ func (p *TraceServiceCreateManualAnnotationResult) FastReadField0(buf []byte) (i return offset, nil } -func (p *TraceServiceCreateManualAnnotationResult) FastWrite(buf []byte) int { +func (p *TraceServiceGetTracesMetaInfoResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTracesMetaInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -15782,7 +12202,7 @@ func (p *TraceServiceCreateManualAnnotationResult) FastWriteNocopy(buf []byte, w return offset } -func (p *TraceServiceCreateManualAnnotationResult) BLength() int { +func (p *TraceServiceGetTracesMetaInfoResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -15791,7 +12211,7 @@ func (p *TraceServiceCreateManualAnnotationResult) BLength() int { return l } -func (p *TraceServiceCreateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTracesMetaInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -15800,7 +12220,7 @@ func (p *TraceServiceCreateManualAnnotationResult) fastWriteField0(buf []byte, w return offset } -func (p *TraceServiceCreateManualAnnotationResult) field0Length() int { +func (p *TraceServiceGetTracesMetaInfoResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -15809,15 +12229,15 @@ func (p *TraceServiceCreateManualAnnotationResult) field0Length() int { return l } -func (p *TraceServiceCreateManualAnnotationResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateManualAnnotationResult) +func (p *TraceServiceGetTracesMetaInfoResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTracesMetaInfoResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *CreateManualAnnotationResponse + var _success *GetTracesMetaInfoResponse if src.Success != nil { - _success = &CreateManualAnnotationResponse{} + _success = &GetTracesMetaInfoResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -15827,7 +12247,7 @@ func (p *TraceServiceCreateManualAnnotationResult) DeepCopy(s interface{}) error return nil } -func (p *TraceServiceUpdateManualAnnotationArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateViewArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -15871,14 +12291,14 @@ func (p *TraceServiceUpdateManualAnnotationArgs) FastRead(buf []byte) (int, erro ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceCreateViewArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewUpdateManualAnnotationRequest() + _field := NewCreateViewRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -15888,11 +12308,11 @@ func (p *TraceServiceUpdateManualAnnotationArgs) FastReadField1(buf []byte) (int return offset, nil } -func (p *TraceServiceUpdateManualAnnotationArgs) FastWrite(buf []byte) int { +func (p *TraceServiceCreateViewArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -15901,7 +12321,7 @@ func (p *TraceServiceUpdateManualAnnotationArgs) FastWriteNocopy(buf []byte, w t return offset } -func (p *TraceServiceUpdateManualAnnotationArgs) BLength() int { +func (p *TraceServiceCreateViewArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -15910,29 +12330,29 @@ func (p *TraceServiceUpdateManualAnnotationArgs) BLength() int { return l } -func (p *TraceServiceUpdateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceUpdateManualAnnotationArgs) field1Length() int { +func (p *TraceServiceCreateViewArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceUpdateManualAnnotationArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateManualAnnotationArgs) +func (p *TraceServiceCreateViewArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateViewArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *UpdateManualAnnotationRequest + var _req *CreateViewRequest if src.Req != nil { - _req = &UpdateManualAnnotationRequest{} + _req = &CreateViewRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -15942,7 +12362,7 @@ func (p *TraceServiceUpdateManualAnnotationArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateManualAnnotationResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateViewResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -15986,14 +12406,14 @@ func (p *TraceServiceUpdateManualAnnotationResult) FastRead(buf []byte) (int, er ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceCreateViewResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewUpdateManualAnnotationResponse() + _field := NewCreateViewResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -16003,11 +12423,11 @@ func (p *TraceServiceUpdateManualAnnotationResult) FastReadField0(buf []byte) (i return offset, nil } -func (p *TraceServiceUpdateManualAnnotationResult) FastWrite(buf []byte) int { +func (p *TraceServiceCreateViewResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -16016,7 +12436,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) FastWriteNocopy(buf []byte, w return offset } -func (p *TraceServiceUpdateManualAnnotationResult) BLength() int { +func (p *TraceServiceCreateViewResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -16025,7 +12445,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) BLength() int { return l } -func (p *TraceServiceUpdateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -16034,7 +12454,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) fastWriteField0(buf []byte, w return offset } -func (p *TraceServiceUpdateManualAnnotationResult) field0Length() int { +func (p *TraceServiceCreateViewResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -16043,15 +12463,15 @@ func (p *TraceServiceUpdateManualAnnotationResult) field0Length() int { return l } -func (p *TraceServiceUpdateManualAnnotationResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateManualAnnotationResult) +func (p *TraceServiceCreateViewResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateViewResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *UpdateManualAnnotationResponse + var _success *CreateViewResponse if src.Success != nil { - _success = &UpdateManualAnnotationResponse{} + _success = &CreateViewResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -16061,7 +12481,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) DeepCopy(s interface{}) error return nil } -func (p *TraceServiceDeleteManualAnnotationArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateViewArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -16105,14 +12525,14 @@ func (p *TraceServiceDeleteManualAnnotationArgs) FastRead(buf []byte) (int, erro ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceUpdateViewArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewDeleteManualAnnotationRequest() + _field := NewUpdateViewRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -16122,11 +12542,11 @@ func (p *TraceServiceDeleteManualAnnotationArgs) FastReadField1(buf []byte) (int return offset, nil } -func (p *TraceServiceDeleteManualAnnotationArgs) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateViewArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -16135,7 +12555,7 @@ func (p *TraceServiceDeleteManualAnnotationArgs) FastWriteNocopy(buf []byte, w t return offset } -func (p *TraceServiceDeleteManualAnnotationArgs) BLength() int { +func (p *TraceServiceUpdateViewArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -16144,29 +12564,29 @@ func (p *TraceServiceDeleteManualAnnotationArgs) BLength() int { return l } -func (p *TraceServiceDeleteManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceDeleteManualAnnotationArgs) field1Length() int { +func (p *TraceServiceUpdateViewArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceDeleteManualAnnotationArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteManualAnnotationArgs) +func (p *TraceServiceUpdateViewArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateViewArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *DeleteManualAnnotationRequest + var _req *UpdateViewRequest if src.Req != nil { - _req = &DeleteManualAnnotationRequest{} + _req = &UpdateViewRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -16176,7 +12596,7 @@ func (p *TraceServiceDeleteManualAnnotationArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceDeleteManualAnnotationResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateViewResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -16220,14 +12640,14 @@ func (p *TraceServiceDeleteManualAnnotationResult) FastRead(buf []byte) (int, er ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteManualAnnotationResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceUpdateViewResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewDeleteManualAnnotationResponse() + _field := NewUpdateViewResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -16237,11 +12657,11 @@ func (p *TraceServiceDeleteManualAnnotationResult) FastReadField0(buf []byte) (i return offset, nil } -func (p *TraceServiceDeleteManualAnnotationResult) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateViewResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -16250,7 +12670,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) FastWriteNocopy(buf []byte, w return offset } -func (p *TraceServiceDeleteManualAnnotationResult) BLength() int { +func (p *TraceServiceUpdateViewResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -16259,7 +12679,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) BLength() int { return l } -func (p *TraceServiceDeleteManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -16268,7 +12688,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) fastWriteField0(buf []byte, w return offset } -func (p *TraceServiceDeleteManualAnnotationResult) field0Length() int { +func (p *TraceServiceUpdateViewResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -16277,15 +12697,15 @@ func (p *TraceServiceDeleteManualAnnotationResult) field0Length() int { return l } -func (p *TraceServiceDeleteManualAnnotationResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteManualAnnotationResult) +func (p *TraceServiceUpdateViewResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateViewResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *DeleteManualAnnotationResponse + var _success *UpdateViewResponse if src.Success != nil { - _success = &DeleteManualAnnotationResponse{} + _success = &UpdateViewResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -16295,7 +12715,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) DeepCopy(s interface{}) error return nil } -func (p *TraceServiceListAnnotationsArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceDeleteViewArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -16339,14 +12759,14 @@ func (p *TraceServiceListAnnotationsArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListAnnotationsArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceDeleteViewArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewListAnnotationsRequest() + _field := NewDeleteViewRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -16356,11 +12776,11 @@ func (p *TraceServiceListAnnotationsArgs) FastReadField1(buf []byte) (int, error return offset, nil } -func (p *TraceServiceListAnnotationsArgs) FastWrite(buf []byte) int { +func (p *TraceServiceDeleteViewArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListAnnotationsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -16369,7 +12789,7 @@ func (p *TraceServiceListAnnotationsArgs) FastWriteNocopy(buf []byte, w thrift.N return offset } -func (p *TraceServiceListAnnotationsArgs) BLength() int { +func (p *TraceServiceDeleteViewArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -16378,29 +12798,29 @@ func (p *TraceServiceListAnnotationsArgs) BLength() int { return l } -func (p *TraceServiceListAnnotationsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceListAnnotationsArgs) field1Length() int { +func (p *TraceServiceDeleteViewArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceListAnnotationsArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListAnnotationsArgs) +func (p *TraceServiceDeleteViewArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteViewArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ListAnnotationsRequest + var _req *DeleteViewRequest if src.Req != nil { - _req = &ListAnnotationsRequest{} + _req = &DeleteViewRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -16410,7 +12830,7 @@ func (p *TraceServiceListAnnotationsArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListAnnotationsResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceDeleteViewResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -16454,14 +12874,14 @@ func (p *TraceServiceListAnnotationsResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListAnnotationsResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceDeleteViewResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewListAnnotationsResponse() + _field := NewDeleteViewResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -16471,11 +12891,11 @@ func (p *TraceServiceListAnnotationsResult) FastReadField0(buf []byte) (int, err return offset, nil } -func (p *TraceServiceListAnnotationsResult) FastWrite(buf []byte) int { +func (p *TraceServiceDeleteViewResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListAnnotationsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -16484,7 +12904,7 @@ func (p *TraceServiceListAnnotationsResult) FastWriteNocopy(buf []byte, w thrift return offset } -func (p *TraceServiceListAnnotationsResult) BLength() int { +func (p *TraceServiceDeleteViewResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -16493,7 +12913,7 @@ func (p *TraceServiceListAnnotationsResult) BLength() int { return l } -func (p *TraceServiceListAnnotationsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -16502,7 +12922,7 @@ func (p *TraceServiceListAnnotationsResult) fastWriteField0(buf []byte, w thrift return offset } -func (p *TraceServiceListAnnotationsResult) field0Length() int { +func (p *TraceServiceDeleteViewResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -16511,15 +12931,15 @@ func (p *TraceServiceListAnnotationsResult) field0Length() int { return l } -func (p *TraceServiceListAnnotationsResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListAnnotationsResult) +func (p *TraceServiceDeleteViewResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteViewResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ListAnnotationsResponse + var _success *DeleteViewResponse if src.Success != nil { - _success = &ListAnnotationsResponse{} + _success = &DeleteViewResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -16529,7 +12949,7 @@ func (p *TraceServiceListAnnotationsResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceChangeEvaluatorScoreArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListViewsArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -16573,14 +12993,14 @@ func (p *TraceServiceChangeEvaluatorScoreArgs) FastRead(buf []byte) (int, error) ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceChangeEvaluatorScoreArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceListViewsArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewChangeEvaluatorScoreRequest() + _field := NewListViewsRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -16590,11 +13010,11 @@ func (p *TraceServiceChangeEvaluatorScoreArgs) FastReadField1(buf []byte) (int, return offset, nil } -func (p *TraceServiceChangeEvaluatorScoreArgs) FastWrite(buf []byte) int { +func (p *TraceServiceListViewsArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceChangeEvaluatorScoreArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -16603,7 +13023,7 @@ func (p *TraceServiceChangeEvaluatorScoreArgs) FastWriteNocopy(buf []byte, w thr return offset } -func (p *TraceServiceChangeEvaluatorScoreArgs) BLength() int { +func (p *TraceServiceListViewsArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -16612,29 +13032,29 @@ func (p *TraceServiceChangeEvaluatorScoreArgs) BLength() int { return l } -func (p *TraceServiceChangeEvaluatorScoreArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceChangeEvaluatorScoreArgs) field1Length() int { +func (p *TraceServiceListViewsArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceChangeEvaluatorScoreArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceChangeEvaluatorScoreArgs) +func (p *TraceServiceListViewsArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListViewsArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ChangeEvaluatorScoreRequest + var _req *ListViewsRequest if src.Req != nil { - _req = &ChangeEvaluatorScoreRequest{} + _req = &ListViewsRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -16644,7 +13064,7 @@ func (p *TraceServiceChangeEvaluatorScoreArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceChangeEvaluatorScoreResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListViewsResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -16688,14 +13108,14 @@ func (p *TraceServiceChangeEvaluatorScoreResult) FastRead(buf []byte) (int, erro ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceChangeEvaluatorScoreResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceListViewsResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewChangeEvaluatorScoreResponse() + _field := NewListViewsResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -16705,11 +13125,11 @@ func (p *TraceServiceChangeEvaluatorScoreResult) FastReadField0(buf []byte) (int return offset, nil } -func (p *TraceServiceChangeEvaluatorScoreResult) FastWrite(buf []byte) int { +func (p *TraceServiceListViewsResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceChangeEvaluatorScoreResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -16718,7 +13138,7 @@ func (p *TraceServiceChangeEvaluatorScoreResult) FastWriteNocopy(buf []byte, w t return offset } -func (p *TraceServiceChangeEvaluatorScoreResult) BLength() int { +func (p *TraceServiceListViewsResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -16727,7 +13147,7 @@ func (p *TraceServiceChangeEvaluatorScoreResult) BLength() int { return l } -func (p *TraceServiceChangeEvaluatorScoreResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -16736,7 +13156,7 @@ func (p *TraceServiceChangeEvaluatorScoreResult) fastWriteField0(buf []byte, w t return offset } -func (p *TraceServiceChangeEvaluatorScoreResult) field0Length() int { +func (p *TraceServiceListViewsResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -16745,15 +13165,15 @@ func (p *TraceServiceChangeEvaluatorScoreResult) field0Length() int { return l } -func (p *TraceServiceChangeEvaluatorScoreResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceChangeEvaluatorScoreResult) +func (p *TraceServiceListViewsResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListViewsResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ChangeEvaluatorScoreResponse + var _success *ListViewsResponse if src.Success != nil { - _success = &ChangeEvaluatorScoreResponse{} + _success = &ListViewsResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -16763,7 +13183,7 @@ func (p *TraceServiceChangeEvaluatorScoreResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListAnnotationEvaluatorsArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -16807,14 +13227,14 @@ func (p *TraceServiceListAnnotationEvaluatorsArgs) FastRead(buf []byte) (int, er ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListAnnotationEvaluatorsArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewListAnnotationEvaluatorsRequest() + _field := NewCreateManualAnnotationRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -16824,11 +13244,11 @@ func (p *TraceServiceListAnnotationEvaluatorsArgs) FastReadField1(buf []byte) (i return offset, nil } -func (p *TraceServiceListAnnotationEvaluatorsArgs) FastWrite(buf []byte) int { +func (p *TraceServiceCreateManualAnnotationArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListAnnotationEvaluatorsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -16837,7 +13257,7 @@ func (p *TraceServiceListAnnotationEvaluatorsArgs) FastWriteNocopy(buf []byte, w return offset } -func (p *TraceServiceListAnnotationEvaluatorsArgs) BLength() int { +func (p *TraceServiceCreateManualAnnotationArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -16846,29 +13266,29 @@ func (p *TraceServiceListAnnotationEvaluatorsArgs) BLength() int { return l } -func (p *TraceServiceListAnnotationEvaluatorsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceListAnnotationEvaluatorsArgs) field1Length() int { +func (p *TraceServiceCreateManualAnnotationArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceListAnnotationEvaluatorsArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListAnnotationEvaluatorsArgs) +func (p *TraceServiceCreateManualAnnotationArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateManualAnnotationArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ListAnnotationEvaluatorsRequest + var _req *CreateManualAnnotationRequest if src.Req != nil { - _req = &ListAnnotationEvaluatorsRequest{} + _req = &CreateManualAnnotationRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -16878,7 +13298,7 @@ func (p *TraceServiceListAnnotationEvaluatorsArgs) DeepCopy(s interface{}) error return nil } -func (p *TraceServiceListAnnotationEvaluatorsResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -16922,14 +13342,14 @@ func (p *TraceServiceListAnnotationEvaluatorsResult) FastRead(buf []byte) (int, ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListAnnotationEvaluatorsResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewListAnnotationEvaluatorsResponse() + _field := NewCreateManualAnnotationResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -16939,11 +13359,11 @@ func (p *TraceServiceListAnnotationEvaluatorsResult) FastReadField0(buf []byte) return offset, nil } -func (p *TraceServiceListAnnotationEvaluatorsResult) FastWrite(buf []byte) int { +func (p *TraceServiceCreateManualAnnotationResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListAnnotationEvaluatorsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -16952,7 +13372,7 @@ func (p *TraceServiceListAnnotationEvaluatorsResult) FastWriteNocopy(buf []byte, return offset } -func (p *TraceServiceListAnnotationEvaluatorsResult) BLength() int { +func (p *TraceServiceCreateManualAnnotationResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -16961,7 +13381,7 @@ func (p *TraceServiceListAnnotationEvaluatorsResult) BLength() int { return l } -func (p *TraceServiceListAnnotationEvaluatorsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -16970,7 +13390,7 @@ func (p *TraceServiceListAnnotationEvaluatorsResult) fastWriteField0(buf []byte, return offset } -func (p *TraceServiceListAnnotationEvaluatorsResult) field0Length() int { +func (p *TraceServiceCreateManualAnnotationResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -16979,15 +13399,15 @@ func (p *TraceServiceListAnnotationEvaluatorsResult) field0Length() int { return l } -func (p *TraceServiceListAnnotationEvaluatorsResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListAnnotationEvaluatorsResult) +func (p *TraceServiceCreateManualAnnotationResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateManualAnnotationResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ListAnnotationEvaluatorsResponse + var _success *CreateManualAnnotationResponse if src.Success != nil { - _success = &ListAnnotationEvaluatorsResponse{} + _success = &CreateManualAnnotationResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -16997,7 +13417,7 @@ func (p *TraceServiceListAnnotationEvaluatorsResult) DeepCopy(s interface{}) err return nil } -func (p *TraceServiceExtractSpanInfoArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -17041,14 +13461,14 @@ func (p *TraceServiceExtractSpanInfoArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceExtractSpanInfoArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewExtractSpanInfoRequest() + _field := NewUpdateManualAnnotationRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -17058,11 +13478,11 @@ func (p *TraceServiceExtractSpanInfoArgs) FastReadField1(buf []byte) (int, error return offset, nil } -func (p *TraceServiceExtractSpanInfoArgs) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateManualAnnotationArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceExtractSpanInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -17071,7 +13491,7 @@ func (p *TraceServiceExtractSpanInfoArgs) FastWriteNocopy(buf []byte, w thrift.N return offset } -func (p *TraceServiceExtractSpanInfoArgs) BLength() int { +func (p *TraceServiceUpdateManualAnnotationArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -17080,29 +13500,29 @@ func (p *TraceServiceExtractSpanInfoArgs) BLength() int { return l } -func (p *TraceServiceExtractSpanInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceExtractSpanInfoArgs) field1Length() int { +func (p *TraceServiceUpdateManualAnnotationArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceExtractSpanInfoArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceExtractSpanInfoArgs) +func (p *TraceServiceUpdateManualAnnotationArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateManualAnnotationArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ExtractSpanInfoRequest + var _req *UpdateManualAnnotationRequest if src.Req != nil { - _req = &ExtractSpanInfoRequest{} + _req = &UpdateManualAnnotationRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -17112,7 +13532,7 @@ func (p *TraceServiceExtractSpanInfoArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceExtractSpanInfoResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -17156,14 +13576,14 @@ func (p *TraceServiceExtractSpanInfoResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceExtractSpanInfoResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewExtractSpanInfoResponse() + _field := NewUpdateManualAnnotationResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -17173,11 +13593,11 @@ func (p *TraceServiceExtractSpanInfoResult) FastReadField0(buf []byte) (int, err return offset, nil } -func (p *TraceServiceExtractSpanInfoResult) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateManualAnnotationResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceExtractSpanInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -17186,7 +13606,7 @@ func (p *TraceServiceExtractSpanInfoResult) FastWriteNocopy(buf []byte, w thrift return offset } -func (p *TraceServiceExtractSpanInfoResult) BLength() int { +func (p *TraceServiceUpdateManualAnnotationResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -17195,7 +13615,7 @@ func (p *TraceServiceExtractSpanInfoResult) BLength() int { return l } -func (p *TraceServiceExtractSpanInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -17204,7 +13624,7 @@ func (p *TraceServiceExtractSpanInfoResult) fastWriteField0(buf []byte, w thrift return offset } -func (p *TraceServiceExtractSpanInfoResult) field0Length() int { +func (p *TraceServiceUpdateManualAnnotationResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -17213,15 +13633,15 @@ func (p *TraceServiceExtractSpanInfoResult) field0Length() int { return l } -func (p *TraceServiceExtractSpanInfoResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceExtractSpanInfoResult) +func (p *TraceServiceUpdateManualAnnotationResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateManualAnnotationResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ExtractSpanInfoResponse + var _success *UpdateManualAnnotationResponse if src.Success != nil { - _success = &ExtractSpanInfoResponse{} + _success = &UpdateManualAnnotationResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -17231,7 +13651,7 @@ func (p *TraceServiceExtractSpanInfoResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCheckTaskNameArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -17275,14 +13695,14 @@ func (p *TraceServiceCheckTaskNameArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCheckTaskNameArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCheckTaskNameArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewCheckTaskNameRequest() + _field := NewDeleteManualAnnotationRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -17292,11 +13712,11 @@ func (p *TraceServiceCheckTaskNameArgs) FastReadField1(buf []byte) (int, error) return offset, nil } -func (p *TraceServiceCheckTaskNameArgs) FastWrite(buf []byte) int { +func (p *TraceServiceDeleteManualAnnotationArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCheckTaskNameArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -17305,7 +13725,7 @@ func (p *TraceServiceCheckTaskNameArgs) FastWriteNocopy(buf []byte, w thrift.Noc return offset } -func (p *TraceServiceCheckTaskNameArgs) BLength() int { +func (p *TraceServiceDeleteManualAnnotationArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -17314,29 +13734,29 @@ func (p *TraceServiceCheckTaskNameArgs) BLength() int { return l } -func (p *TraceServiceCheckTaskNameArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceCheckTaskNameArgs) field1Length() int { +func (p *TraceServiceDeleteManualAnnotationArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceCheckTaskNameArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCheckTaskNameArgs) +func (p *TraceServiceDeleteManualAnnotationArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteManualAnnotationArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *CheckTaskNameRequest + var _req *DeleteManualAnnotationRequest if src.Req != nil { - _req = &CheckTaskNameRequest{} + _req = &DeleteManualAnnotationRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -17346,7 +13766,7 @@ func (p *TraceServiceCheckTaskNameArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCheckTaskNameResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -17390,14 +13810,14 @@ func (p *TraceServiceCheckTaskNameResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCheckTaskNameResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCheckTaskNameResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewCheckTaskNameResponse() + _field := NewDeleteManualAnnotationResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -17407,11 +13827,11 @@ func (p *TraceServiceCheckTaskNameResult) FastReadField0(buf []byte) (int, error return offset, nil } -func (p *TraceServiceCheckTaskNameResult) FastWrite(buf []byte) int { +func (p *TraceServiceDeleteManualAnnotationResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCheckTaskNameResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -17420,7 +13840,7 @@ func (p *TraceServiceCheckTaskNameResult) FastWriteNocopy(buf []byte, w thrift.N return offset } -func (p *TraceServiceCheckTaskNameResult) BLength() int { +func (p *TraceServiceDeleteManualAnnotationResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -17429,7 +13849,7 @@ func (p *TraceServiceCheckTaskNameResult) BLength() int { return l } -func (p *TraceServiceCheckTaskNameResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -17438,7 +13858,7 @@ func (p *TraceServiceCheckTaskNameResult) fastWriteField0(buf []byte, w thrift.N return offset } -func (p *TraceServiceCheckTaskNameResult) field0Length() int { +func (p *TraceServiceDeleteManualAnnotationResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -17447,15 +13867,15 @@ func (p *TraceServiceCheckTaskNameResult) field0Length() int { return l } -func (p *TraceServiceCheckTaskNameResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCheckTaskNameResult) +func (p *TraceServiceDeleteManualAnnotationResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteManualAnnotationResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *CheckTaskNameResponse + var _success *DeleteManualAnnotationResponse if src.Success != nil { - _success = &CheckTaskNameResponse{} + _success = &DeleteManualAnnotationResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -17465,7 +13885,7 @@ func (p *TraceServiceCheckTaskNameResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateTaskArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -17509,14 +13929,14 @@ func (p *TraceServiceCreateTaskArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateTaskArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateTaskArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewCreateTaskRequest() + _field := NewListAnnotationsRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -17526,11 +13946,11 @@ func (p *TraceServiceCreateTaskArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceCreateTaskArgs) FastWrite(buf []byte) int { +func (p *TraceServiceListAnnotationsArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateTaskArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -17539,7 +13959,7 @@ func (p *TraceServiceCreateTaskArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceCreateTaskArgs) BLength() int { +func (p *TraceServiceListAnnotationsArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -17548,29 +13968,29 @@ func (p *TraceServiceCreateTaskArgs) BLength() int { return l } -func (p *TraceServiceCreateTaskArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceCreateTaskArgs) field1Length() int { +func (p *TraceServiceListAnnotationsArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceCreateTaskArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateTaskArgs) +func (p *TraceServiceListAnnotationsArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListAnnotationsArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *CreateTaskRequest + var _req *ListAnnotationsRequest if src.Req != nil { - _req = &CreateTaskRequest{} + _req = &ListAnnotationsRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -17580,7 +14000,7 @@ func (p *TraceServiceCreateTaskArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateTaskResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -17624,14 +14044,14 @@ func (p *TraceServiceCreateTaskResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateTaskResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateTaskResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewCreateTaskResponse() + _field := NewListAnnotationsResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -17641,11 +14061,11 @@ func (p *TraceServiceCreateTaskResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceCreateTaskResult) FastWrite(buf []byte) int { +func (p *TraceServiceListAnnotationsResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateTaskResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -17654,7 +14074,7 @@ func (p *TraceServiceCreateTaskResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceCreateTaskResult) BLength() int { +func (p *TraceServiceListAnnotationsResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -17663,7 +14083,7 @@ func (p *TraceServiceCreateTaskResult) BLength() int { return l } -func (p *TraceServiceCreateTaskResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -17672,7 +14092,7 @@ func (p *TraceServiceCreateTaskResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceCreateTaskResult) field0Length() int { +func (p *TraceServiceListAnnotationsResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -17681,15 +14101,15 @@ func (p *TraceServiceCreateTaskResult) field0Length() int { return l } -func (p *TraceServiceCreateTaskResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateTaskResult) +func (p *TraceServiceListAnnotationsResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListAnnotationsResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *CreateTaskResponse + var _success *ListAnnotationsResponse if src.Success != nil { - _success = &CreateTaskResponse{} + _success = &ListAnnotationsResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -17699,7 +14119,7 @@ func (p *TraceServiceCreateTaskResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateTaskArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceChangeEvaluatorScoreArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -17743,14 +14163,14 @@ func (p *TraceServiceUpdateTaskArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateTaskArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateTaskArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceChangeEvaluatorScoreArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewUpdateTaskRequest() + _field := NewChangeEvaluatorScoreRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -17760,11 +14180,11 @@ func (p *TraceServiceUpdateTaskArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceUpdateTaskArgs) FastWrite(buf []byte) int { +func (p *TraceServiceChangeEvaluatorScoreArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateTaskArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceChangeEvaluatorScoreArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -17773,7 +14193,7 @@ func (p *TraceServiceUpdateTaskArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceUpdateTaskArgs) BLength() int { +func (p *TraceServiceChangeEvaluatorScoreArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -17782,29 +14202,29 @@ func (p *TraceServiceUpdateTaskArgs) BLength() int { return l } -func (p *TraceServiceUpdateTaskArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceChangeEvaluatorScoreArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceUpdateTaskArgs) field1Length() int { +func (p *TraceServiceChangeEvaluatorScoreArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceUpdateTaskArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateTaskArgs) +func (p *TraceServiceChangeEvaluatorScoreArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceChangeEvaluatorScoreArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *UpdateTaskRequest + var _req *ChangeEvaluatorScoreRequest if src.Req != nil { - _req = &UpdateTaskRequest{} + _req = &ChangeEvaluatorScoreRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -17814,7 +14234,7 @@ func (p *TraceServiceUpdateTaskArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateTaskResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceChangeEvaluatorScoreResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -17858,14 +14278,14 @@ func (p *TraceServiceUpdateTaskResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateTaskResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceChangeEvaluatorScoreResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateTaskResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceChangeEvaluatorScoreResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewUpdateTaskResponse() + _field := NewChangeEvaluatorScoreResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -17875,11 +14295,11 @@ func (p *TraceServiceUpdateTaskResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceUpdateTaskResult) FastWrite(buf []byte) int { +func (p *TraceServiceChangeEvaluatorScoreResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateTaskResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceChangeEvaluatorScoreResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -17888,7 +14308,7 @@ func (p *TraceServiceUpdateTaskResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceUpdateTaskResult) BLength() int { +func (p *TraceServiceChangeEvaluatorScoreResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -17897,7 +14317,7 @@ func (p *TraceServiceUpdateTaskResult) BLength() int { return l } -func (p *TraceServiceUpdateTaskResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceChangeEvaluatorScoreResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -17906,7 +14326,7 @@ func (p *TraceServiceUpdateTaskResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceUpdateTaskResult) field0Length() int { +func (p *TraceServiceChangeEvaluatorScoreResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -17915,15 +14335,15 @@ func (p *TraceServiceUpdateTaskResult) field0Length() int { return l } -func (p *TraceServiceUpdateTaskResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateTaskResult) +func (p *TraceServiceChangeEvaluatorScoreResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceChangeEvaluatorScoreResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *UpdateTaskResponse + var _success *ChangeEvaluatorScoreResponse if src.Success != nil { - _success = &UpdateTaskResponse{} + _success = &ChangeEvaluatorScoreResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -17933,7 +14353,7 @@ func (p *TraceServiceUpdateTaskResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListTasksArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -17977,14 +14397,14 @@ func (p *TraceServiceListTasksArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListTasksArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListTasksArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationEvaluatorsArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewListTasksRequest() + _field := NewListAnnotationEvaluatorsRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -17994,11 +14414,11 @@ func (p *TraceServiceListTasksArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListTasksArgs) FastWrite(buf []byte) int { +func (p *TraceServiceListAnnotationEvaluatorsArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListTasksArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationEvaluatorsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -18007,7 +14427,7 @@ func (p *TraceServiceListTasksArgs) FastWriteNocopy(buf []byte, w thrift.NocopyW return offset } -func (p *TraceServiceListTasksArgs) BLength() int { +func (p *TraceServiceListAnnotationEvaluatorsArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -18016,29 +14436,29 @@ func (p *TraceServiceListTasksArgs) BLength() int { return l } -func (p *TraceServiceListTasksArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationEvaluatorsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceListTasksArgs) field1Length() int { +func (p *TraceServiceListAnnotationEvaluatorsArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceListTasksArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListTasksArgs) +func (p *TraceServiceListAnnotationEvaluatorsArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListAnnotationEvaluatorsArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ListTasksRequest + var _req *ListAnnotationEvaluatorsRequest if src.Req != nil { - _req = &ListTasksRequest{} + _req = &ListAnnotationEvaluatorsRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -18048,7 +14468,7 @@ func (p *TraceServiceListTasksArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListTasksResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationEvaluatorsResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -18092,14 +14512,14 @@ func (p *TraceServiceListTasksResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListTasksResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationEvaluatorsResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListTasksResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationEvaluatorsResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewListTasksResponse() + _field := NewListAnnotationEvaluatorsResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -18109,11 +14529,11 @@ func (p *TraceServiceListTasksResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListTasksResult) FastWrite(buf []byte) int { +func (p *TraceServiceListAnnotationEvaluatorsResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListTasksResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationEvaluatorsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -18122,7 +14542,7 @@ func (p *TraceServiceListTasksResult) FastWriteNocopy(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListTasksResult) BLength() int { +func (p *TraceServiceListAnnotationEvaluatorsResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -18131,7 +14551,7 @@ func (p *TraceServiceListTasksResult) BLength() int { return l } -func (p *TraceServiceListTasksResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationEvaluatorsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -18140,7 +14560,7 @@ func (p *TraceServiceListTasksResult) fastWriteField0(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListTasksResult) field0Length() int { +func (p *TraceServiceListAnnotationEvaluatorsResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -18149,15 +14569,15 @@ func (p *TraceServiceListTasksResult) field0Length() int { return l } -func (p *TraceServiceListTasksResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListTasksResult) +func (p *TraceServiceListAnnotationEvaluatorsResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListAnnotationEvaluatorsResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ListTasksResponse + var _success *ListAnnotationEvaluatorsResponse if src.Success != nil { - _success = &ListTasksResponse{} + _success = &ListAnnotationEvaluatorsResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -18167,7 +14587,7 @@ func (p *TraceServiceListTasksResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceGetTaskArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceExtractSpanInfoArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -18211,14 +14631,14 @@ func (p *TraceServiceGetTaskArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTaskArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceGetTaskArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceExtractSpanInfoArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewGetTaskRequest() + _field := NewExtractSpanInfoRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -18228,11 +14648,11 @@ func (p *TraceServiceGetTaskArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceGetTaskArgs) FastWrite(buf []byte) int { +func (p *TraceServiceExtractSpanInfoArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceGetTaskArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExtractSpanInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -18241,7 +14661,7 @@ func (p *TraceServiceGetTaskArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWri return offset } -func (p *TraceServiceGetTaskArgs) BLength() int { +func (p *TraceServiceExtractSpanInfoArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -18250,29 +14670,29 @@ func (p *TraceServiceGetTaskArgs) BLength() int { return l } -func (p *TraceServiceGetTaskArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExtractSpanInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceGetTaskArgs) field1Length() int { +func (p *TraceServiceExtractSpanInfoArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceGetTaskArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTaskArgs) +func (p *TraceServiceExtractSpanInfoArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceExtractSpanInfoArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *GetTaskRequest + var _req *ExtractSpanInfoRequest if src.Req != nil { - _req = &GetTaskRequest{} + _req = &ExtractSpanInfoRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -18282,7 +14702,7 @@ func (p *TraceServiceGetTaskArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceGetTaskResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceExtractSpanInfoResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -18326,14 +14746,14 @@ func (p *TraceServiceGetTaskResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTaskResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExtractSpanInfoResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceGetTaskResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceExtractSpanInfoResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewGetTaskResponse() + _field := NewExtractSpanInfoResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -18343,11 +14763,11 @@ func (p *TraceServiceGetTaskResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceGetTaskResult) FastWrite(buf []byte) int { +func (p *TraceServiceExtractSpanInfoResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceGetTaskResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExtractSpanInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -18356,7 +14776,7 @@ func (p *TraceServiceGetTaskResult) FastWriteNocopy(buf []byte, w thrift.NocopyW return offset } -func (p *TraceServiceGetTaskResult) BLength() int { +func (p *TraceServiceExtractSpanInfoResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -18365,7 +14785,7 @@ func (p *TraceServiceGetTaskResult) BLength() int { return l } -func (p *TraceServiceGetTaskResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExtractSpanInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -18374,7 +14794,7 @@ func (p *TraceServiceGetTaskResult) fastWriteField0(buf []byte, w thrift.NocopyW return offset } -func (p *TraceServiceGetTaskResult) field0Length() int { +func (p *TraceServiceExtractSpanInfoResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -18383,15 +14803,15 @@ func (p *TraceServiceGetTaskResult) field0Length() int { return l } -func (p *TraceServiceGetTaskResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTaskResult) +func (p *TraceServiceExtractSpanInfoResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceExtractSpanInfoResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *GetTaskResponse + var _success *ExtractSpanInfoResponse if src.Success != nil { - _success = &GetTaskResponse{} + _success = &ExtractSpanInfoResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -18528,43 +14948,3 @@ func (p *TraceServiceExtractSpanInfoArgs) GetFirstArgument() interface{} { func (p *TraceServiceExtractSpanInfoResult) GetResult() interface{} { return p.Success } - -func (p *TraceServiceCheckTaskNameArgs) GetFirstArgument() interface{} { - return p.Req -} - -func (p *TraceServiceCheckTaskNameResult) GetResult() interface{} { - return p.Success -} - -func (p *TraceServiceCreateTaskArgs) GetFirstArgument() interface{} { - return p.Req -} - -func (p *TraceServiceCreateTaskResult) GetResult() interface{} { - return p.Success -} - -func (p *TraceServiceUpdateTaskArgs) GetFirstArgument() interface{} { - return p.Req -} - -func (p *TraceServiceUpdateTaskResult) GetResult() interface{} { - return p.Success -} - -func (p *TraceServiceListTasksArgs) GetFirstArgument() interface{} { - return p.Req -} - -func (p *TraceServiceListTasksResult) GetResult() interface{} { - return p.Success -} - -func (p *TraceServiceGetTaskArgs) GetFirstArgument() interface{} { - return p.Req -} - -func (p *TraceServiceGetTaskResult) GetResult() interface{} { - return p.Success -} diff --git a/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go b/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go index e0f65e5cf..bde416ec9 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go +++ b/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go @@ -27,11 +27,6 @@ type Client interface { ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) - CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) - CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) - UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) - ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) - GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) } // NewClient creates a client for the service defined in IDL. @@ -142,28 +137,3 @@ func (p *kTraceServiceClient) ExtractSpanInfo(ctx context.Context, req *trace.Ex ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.ExtractSpanInfo(ctx, req) } - -func (p *kTraceServiceClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (r *trace.CheckTaskNameResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.CheckTaskName(ctx, req) -} - -func (p *kTraceServiceClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (r *trace.CreateTaskResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.CreateTask(ctx, req) -} - -func (p *kTraceServiceClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (r *trace.UpdateTaskResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.UpdateTask(ctx, req) -} - -func (p *kTraceServiceClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (r *trace.ListTasksResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.ListTasks(ctx, req) -} - -func (p *kTraceServiceClient) GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (r *trace.GetTaskResponse, err error) { - ctx = client.NewCtxWithCallOptions(ctx, callOptions) - return p.kClient.GetTask(ctx, req) -} diff --git a/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go b/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go index 1c1c1476f..8df4f13f0 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go +++ b/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go @@ -125,41 +125,6 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), - "CheckTaskName": kitex.NewMethodInfo( - checkTaskNameHandler, - newTraceServiceCheckTaskNameArgs, - newTraceServiceCheckTaskNameResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "CreateTask": kitex.NewMethodInfo( - createTaskHandler, - newTraceServiceCreateTaskArgs, - newTraceServiceCreateTaskResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "UpdateTask": kitex.NewMethodInfo( - updateTaskHandler, - newTraceServiceUpdateTaskArgs, - newTraceServiceUpdateTaskResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "ListTasks": kitex.NewMethodInfo( - listTasksHandler, - newTraceServiceListTasksArgs, - newTraceServiceListTasksResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), - "GetTask": kitex.NewMethodInfo( - getTaskHandler, - newTraceServiceGetTaskArgs, - newTraceServiceGetTaskResult, - false, - kitex.WithStreamingMode(kitex.StreamingNone), - ), } var ( @@ -497,101 +462,6 @@ func newTraceServiceExtractSpanInfoResult() interface{} { return trace.NewTraceServiceExtractSpanInfoResult() } -func checkTaskNameHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceCheckTaskNameArgs) - realResult := result.(*trace.TraceServiceCheckTaskNameResult) - success, err := handler.(trace.TraceService).CheckTaskName(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceCheckTaskNameArgs() interface{} { - return trace.NewTraceServiceCheckTaskNameArgs() -} - -func newTraceServiceCheckTaskNameResult() interface{} { - return trace.NewTraceServiceCheckTaskNameResult() -} - -func createTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceCreateTaskArgs) - realResult := result.(*trace.TraceServiceCreateTaskResult) - success, err := handler.(trace.TraceService).CreateTask(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceCreateTaskArgs() interface{} { - return trace.NewTraceServiceCreateTaskArgs() -} - -func newTraceServiceCreateTaskResult() interface{} { - return trace.NewTraceServiceCreateTaskResult() -} - -func updateTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceUpdateTaskArgs) - realResult := result.(*trace.TraceServiceUpdateTaskResult) - success, err := handler.(trace.TraceService).UpdateTask(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceUpdateTaskArgs() interface{} { - return trace.NewTraceServiceUpdateTaskArgs() -} - -func newTraceServiceUpdateTaskResult() interface{} { - return trace.NewTraceServiceUpdateTaskResult() -} - -func listTasksHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceListTasksArgs) - realResult := result.(*trace.TraceServiceListTasksResult) - success, err := handler.(trace.TraceService).ListTasks(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceListTasksArgs() interface{} { - return trace.NewTraceServiceListTasksArgs() -} - -func newTraceServiceListTasksResult() interface{} { - return trace.NewTraceServiceListTasksResult() -} - -func getTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { - realArg := arg.(*trace.TraceServiceGetTaskArgs) - realResult := result.(*trace.TraceServiceGetTaskResult) - success, err := handler.(trace.TraceService).GetTask(ctx, realArg.Req) - if err != nil { - return err - } - realResult.Success = success - return nil -} - -func newTraceServiceGetTaskArgs() interface{} { - return trace.NewTraceServiceGetTaskArgs() -} - -func newTraceServiceGetTaskResult() interface{} { - return trace.NewTraceServiceGetTaskResult() -} - type kClient struct { c client.Client sc client.Streaming @@ -763,53 +633,3 @@ func (p *kClient) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInf } return _result.GetSuccess(), nil } - -func (p *kClient) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest) (r *trace.CheckTaskNameResponse, err error) { - var _args trace.TraceServiceCheckTaskNameArgs - _args.Req = req - var _result trace.TraceServiceCheckTaskNameResult - if err = p.c.Call(ctx, "CheckTaskName", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) CreateTask(ctx context.Context, req *trace.CreateTaskRequest) (r *trace.CreateTaskResponse, err error) { - var _args trace.TraceServiceCreateTaskArgs - _args.Req = req - var _result trace.TraceServiceCreateTaskResult - if err = p.c.Call(ctx, "CreateTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest) (r *trace.UpdateTaskResponse, err error) { - var _args trace.TraceServiceUpdateTaskArgs - _args.Req = req - var _result trace.TraceServiceUpdateTaskResult - if err = p.c.Call(ctx, "UpdateTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) ListTasks(ctx context.Context, req *trace.ListTasksRequest) (r *trace.ListTasksResponse, err error) { - var _args trace.TraceServiceListTasksArgs - _args.Req = req - var _result trace.TraceServiceListTasksResult - if err = p.c.Call(ctx, "ListTasks", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} - -func (p *kClient) GetTask(ctx context.Context, req *trace.GetTaskRequest) (r *trace.GetTaskResponse, err error) { - var _args trace.TraceServiceGetTaskArgs - _args.Req = req - var _result trace.TraceServiceGetTaskResult - if err = p.c.Call(ctx, "GetTask", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil -} diff --git a/backend/loop_gen/coze/loop/observability/lotask/local_taskservice.go b/backend/loop_gen/coze/loop/observability/lotask/local_taskservice.go new file mode 100644 index 000000000..4119e4def --- /dev/null +++ b/backend/loop_gen/coze/loop/observability/lotask/local_taskservice.go @@ -0,0 +1,140 @@ +// Code generated by cozeloop. DO NOT EDIT. +package lotask // import github.com/coze-dev/coze-loop/backend/lotask + +import ( + "context" + + "github.com/cloudwego/kitex/client/callopt" + "github.com/cloudwego/kitex/pkg/endpoint" + "github.com/cloudwego/kitex/pkg/rpcinfo" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" +) + +type LocalTaskService struct { + impl task.TaskService // the service implementation + mds endpoint.Middleware +} + +func NewLocalTaskService(impl task.TaskService, mds ...endpoint.Middleware) *LocalTaskService { + return &LocalTaskService{ + impl: impl, + mds: endpoint.Chain(mds...), + } +} + +func (l *LocalTaskService) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest, callOptions ...callopt.Option) (*task.CheckTaskNameResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*task.TaskServiceCheckTaskNameArgs) + result := out.(*task.TaskServiceCheckTaskNameResult) + resp, err := l.impl.CheckTaskName(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &task.TaskServiceCheckTaskNameArgs{Req: req} + result := &task.TaskServiceCheckTaskNameResult{} + ctx = l.injectRPCInfo(ctx, "CheckTaskName") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTaskService) CreateTask(ctx context.Context, req *task.CreateTaskRequest, callOptions ...callopt.Option) (*task.CreateTaskResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*task.TaskServiceCreateTaskArgs) + result := out.(*task.TaskServiceCreateTaskResult) + resp, err := l.impl.CreateTask(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &task.TaskServiceCreateTaskArgs{Req: req} + result := &task.TaskServiceCreateTaskResult{} + ctx = l.injectRPCInfo(ctx, "CreateTask") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTaskService) UpdateTask(ctx context.Context, req *task.UpdateTaskRequest, callOptions ...callopt.Option) (*task.UpdateTaskResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*task.TaskServiceUpdateTaskArgs) + result := out.(*task.TaskServiceUpdateTaskResult) + resp, err := l.impl.UpdateTask(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &task.TaskServiceUpdateTaskArgs{Req: req} + result := &task.TaskServiceUpdateTaskResult{} + ctx = l.injectRPCInfo(ctx, "UpdateTask") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTaskService) ListTasks(ctx context.Context, req *task.ListTasksRequest, callOptions ...callopt.Option) (*task.ListTasksResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*task.TaskServiceListTasksArgs) + result := out.(*task.TaskServiceListTasksResult) + resp, err := l.impl.ListTasks(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &task.TaskServiceListTasksArgs{Req: req} + result := &task.TaskServiceListTasksResult{} + ctx = l.injectRPCInfo(ctx, "ListTasks") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTaskService) GetTask(ctx context.Context, req *task.GetTaskRequest, callOptions ...callopt.Option) (*task.GetTaskResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*task.TaskServiceGetTaskArgs) + result := out.(*task.TaskServiceGetTaskResult) + resp, err := l.impl.GetTask(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &task.TaskServiceGetTaskArgs{Req: req} + result := &task.TaskServiceGetTaskResult{} + ctx = l.injectRPCInfo(ctx, "GetTask") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTaskService) injectRPCInfo(ctx context.Context, method string) context.Context { + rpcStats := rpcinfo.AsMutableRPCStats(rpcinfo.NewRPCStats()) + ri := rpcinfo.NewRPCInfo( + rpcinfo.NewEndpointInfo("TaskService", method, nil, nil), + rpcinfo.NewEndpointInfo("TaskService", method, nil, nil), + rpcinfo.NewServerInvocation(), + nil, + rpcStats.ImmutableView(), + ) + return rpcinfo.NewCtxWithRPCInfo(ctx, ri) +} diff --git a/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go b/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go index aa3b3401b..b303d06d9 100644 --- a/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go +++ b/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go @@ -358,111 +358,6 @@ func (l *LocalTraceService) ExtractSpanInfo(ctx context.Context, req *trace.Extr return result.GetSuccess(), nil } -func (l *LocalTraceService) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest, callOptions ...callopt.Option) (*trace.CheckTaskNameResponse, error) { - chain := l.mds(func(ctx context.Context, in, out interface{}) error { - arg := in.(*trace.TraceServiceCheckTaskNameArgs) - result := out.(*trace.TraceServiceCheckTaskNameResult) - resp, err := l.impl.CheckTaskName(ctx, arg.Req) - if err != nil { - return err - } - result.SetSuccess(resp) - return nil - }) - - arg := &trace.TraceServiceCheckTaskNameArgs{Req: req} - result := &trace.TraceServiceCheckTaskNameResult{} - ctx = l.injectRPCInfo(ctx, "CheckTaskName") - if err := chain(ctx, arg, result); err != nil { - return nil, err - } - return result.GetSuccess(), nil -} - -func (l *LocalTraceService) CreateTask(ctx context.Context, req *trace.CreateTaskRequest, callOptions ...callopt.Option) (*trace.CreateTaskResponse, error) { - chain := l.mds(func(ctx context.Context, in, out interface{}) error { - arg := in.(*trace.TraceServiceCreateTaskArgs) - result := out.(*trace.TraceServiceCreateTaskResult) - resp, err := l.impl.CreateTask(ctx, arg.Req) - if err != nil { - return err - } - result.SetSuccess(resp) - return nil - }) - - arg := &trace.TraceServiceCreateTaskArgs{Req: req} - result := &trace.TraceServiceCreateTaskResult{} - ctx = l.injectRPCInfo(ctx, "CreateTask") - if err := chain(ctx, arg, result); err != nil { - return nil, err - } - return result.GetSuccess(), nil -} - -func (l *LocalTraceService) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest, callOptions ...callopt.Option) (*trace.UpdateTaskResponse, error) { - chain := l.mds(func(ctx context.Context, in, out interface{}) error { - arg := in.(*trace.TraceServiceUpdateTaskArgs) - result := out.(*trace.TraceServiceUpdateTaskResult) - resp, err := l.impl.UpdateTask(ctx, arg.Req) - if err != nil { - return err - } - result.SetSuccess(resp) - return nil - }) - - arg := &trace.TraceServiceUpdateTaskArgs{Req: req} - result := &trace.TraceServiceUpdateTaskResult{} - ctx = l.injectRPCInfo(ctx, "UpdateTask") - if err := chain(ctx, arg, result); err != nil { - return nil, err - } - return result.GetSuccess(), nil -} - -func (l *LocalTraceService) ListTasks(ctx context.Context, req *trace.ListTasksRequest, callOptions ...callopt.Option) (*trace.ListTasksResponse, error) { - chain := l.mds(func(ctx context.Context, in, out interface{}) error { - arg := in.(*trace.TraceServiceListTasksArgs) - result := out.(*trace.TraceServiceListTasksResult) - resp, err := l.impl.ListTasks(ctx, arg.Req) - if err != nil { - return err - } - result.SetSuccess(resp) - return nil - }) - - arg := &trace.TraceServiceListTasksArgs{Req: req} - result := &trace.TraceServiceListTasksResult{} - ctx = l.injectRPCInfo(ctx, "ListTasks") - if err := chain(ctx, arg, result); err != nil { - return nil, err - } - return result.GetSuccess(), nil -} - -func (l *LocalTraceService) GetTask(ctx context.Context, req *trace.GetTaskRequest, callOptions ...callopt.Option) (*trace.GetTaskResponse, error) { - chain := l.mds(func(ctx context.Context, in, out interface{}) error { - arg := in.(*trace.TraceServiceGetTaskArgs) - result := out.(*trace.TraceServiceGetTaskResult) - resp, err := l.impl.GetTask(ctx, arg.Req) - if err != nil { - return err - } - result.SetSuccess(resp) - return nil - }) - - arg := &trace.TraceServiceGetTaskArgs{Req: req} - result := &trace.TraceServiceGetTaskResult{} - ctx = l.injectRPCInfo(ctx, "GetTask") - if err := chain(ctx, arg, result); err != nil { - return nil, err - } - return result.GetSuccess(), nil -} - func (l *LocalTraceService) injectRPCInfo(ctx context.Context, method string) context.Context { rpcStats := rpcinfo.AsMutableRPCStats(rpcinfo.NewRPCStats()) ri := rpcinfo.NewRPCInfo( diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go new file mode 100644 index 000000000..e4d412f21 --- /dev/null +++ b/backend/modules/observability/application/task.go @@ -0,0 +1,203 @@ +package application + +import ( + "context" + "strconv" + "time" + + "github.com/coze-dev/coze-loop/backend/infra/external/benefit" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/metrics" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +type ITaskApplication interface { + trace.TraceService +} + +func NewTaskApplication( + traceService service.ITraceService, + viewRepo repo.IViewRepo, + benefitService benefit.IBenefitService, + traceMetrics metrics.ITraceMetrics, + traceConfig config.ITraceConfig, + authService rpc.IAuthProvider, + evalService rpc.IEvaluatorRPCAdapter, + userService rpc.IUserProvider, + tagService rpc.ITagRPCAdapter, +) (ITraceApplication, error) { + return &TraceApplication{ + traceService: traceService, + viewRepo: viewRepo, + traceConfig: traceConfig, + metrics: traceMetrics, + benefit: benefitService, + authSvc: authService, + evalSvc: evalService, + userSvc: userService, + tagSvc: tagService, + }, nil +} + +type TaskApplication struct { + traceService service.ITraceService + viewRepo repo.IViewRepo + traceConfig config.ITraceConfig + metrics metrics.ITraceMetrics + benefit benefit.IBenefitService + authSvc rpc.IAuthProvider + evalSvc rpc.IEvaluatorRPCAdapter + userSvc rpc.IUserProvider + tagSvc rpc.ITagRPCAdapter +} + +func (t *TaskApplication) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest) (*task.CheckTaskNameResponse, error) { + if req == nil { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + } else if req.GetWorkspaceID() <= 0 { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + } + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskList, + strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + return nil, err + } + userID := session.UserIDInCtxOrEmpty(ctx) + if userID == "" { + return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + } + + return &task.CheckTaskNameResponse{ + BaseResp: nil, + }, nil +} +func (t *TaskApplication) CreateTask(ctx context.Context, req *task.CreateTaskRequest) (*task.CreateTaskResponse, error) { + if err := t.validateCreateTaskReq(ctx, req); err != nil { + return nil, err + } + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskCreate, + strconv.FormatInt(req.GetTask().GetWorkspaceID(), 10)); err != nil { + return nil, err + } + userID := session.UserIDInCtxOrEmpty(ctx) + if userID == "" { + return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + } + //taskPO := tconv.CreateTaskDTO2PO(req, userID) + // + //id, err := t.taskRepo.CreateTask(ctx, taskPO) + //if err != nil { + // return nil, err + //} + + return nil, nil +} + +func (t *TaskApplication) validateCreateTaskReq(ctx context.Context, req *task.CreateTaskRequest) error { + // 参数验证 + if req == nil || req.GetTask() == nil { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + } else if req.GetTask().GetWorkspaceID() <= 0 { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + } else if req.GetTask().GetName() == "" { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid task_name")) + } + if req.GetTask().GetRule() != nil && req.GetTask().GetRule().GetEffectiveTime() != nil { + startAt := req.GetTask().GetRule().GetEffectiveTime().GetStartAt() + endAt := req.GetTask().GetRule().GetEffectiveTime().GetEndAt() + if startAt <= time.Now().Add(-10*time.Minute).UnixMilli() { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("The start time must be no earlier than 10 minutes ago.")) + } + if startAt >= endAt { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("The start time must be earlier than the end time.")) + } + } + var evaluatorVersionIDs []int64 + for _, autoEvaluateConfig := range req.GetTask().GetTaskConfig().GetAutoEvaluateConfigs() { + evaluatorVersionIDs = append(evaluatorVersionIDs, autoEvaluateConfig.GetEvaluatorVersionID()) + } + if len(evaluatorVersionIDs) == 0 { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Invalid parameter. Please check the parameter and try again.")) + } + // 检查评估器版本是否合法 + evaluators, _, err := t.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ + WorkspaceID: req.GetTask().GetWorkspaceID(), + EvaluatorVersionIds: evaluatorVersionIDs, + }) + if err != nil { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithMsgParam("evaluatorVersionIDs is invalid, BatchGetEvaluators err: %v", err.Error())) + } + if len(evaluators) != len(evaluatorVersionIDs) { + logs.CtxError(ctx, "evaluators len: %d, evaluatorVersionIDs len: %d", len(evaluators), len(evaluatorVersionIDs)) + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("evaluatorVersionIDs is invalid, len(evaluators) != len(evaluatorVersionIDs)")) + } + return nil +} +func (t *TaskApplication) UpdateTask(ctx context.Context, req *task.UpdateTaskRequest) (*task.UpdateTaskResponse, error) { + if req == nil { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + } else if req.GetWorkspaceID() <= 0 { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + } + if err := t.authSvc.CheckViewPermission(ctx, + rpc.AuthActionTraceTaskEdit, + strconv.FormatInt(req.GetWorkspaceID(), 10), + strconv.FormatInt(req.GetTaskID(), 10)); err != nil { + return nil, err + } + userID := session.UserIDInCtxOrEmpty(ctx) + if userID == "" { + return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + } + + return task.NewUpdateTaskResponse(), nil +} +func (t *TaskApplication) ListTasks(ctx context.Context, req *task.ListTasksRequest) (*task.ListTasksResponse, error) { + if req == nil { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + } else if req.GetWorkspaceID() <= 0 { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + } + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskList, + strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + return nil, err + } + userID := session.UserIDInCtxOrEmpty(ctx) + if userID == "" { + return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + } + + return &task.ListTasksResponse{ + BaseResp: nil, + }, nil +} +func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) (*task.GetTaskResponse, error) { + if req == nil { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + } else if req.GetWorkspaceID() <= 0 { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + } + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskList, + strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + return nil, err + } + userID := session.UserIDInCtxOrEmpty(ctx) + if userID == "" { + return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + } + + return &task.GetTaskResponse{ + BaseResp: nil, + }, nil +} diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index f131ede77..d9acddb01 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -744,59 +744,11 @@ func (t *TraceApplication) getAnnoDisplayInfo(ctx context.Context, workspaceId i } func (t *TraceApplication) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) (*trace.ChangeEvaluatorScoreResponse, error) { - return + return nil, nil } func (t *TraceApplication) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest) (*trace.ListAnnotationEvaluatorsResponse, error) { - return + return nil, nil } func (t *TraceApplication) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest) (*trace.ExtractSpanInfoResponse, error) { - return -} -func (t *TraceApplication) CheckTaskName(ctx context.Context, req *trace.CheckTaskNameRequest) (*trace.CheckTaskNameResponse, error) { - return + return nil, nil } -func (t *TraceApplication) CreateTask(ctx context.Context, req *trace.CreateTaskRequest) (*trace.CreateTaskResponse, error) { - // 参数验证 - if req == nil { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) - } else if req.GetWorkspaceID() <= 0 { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) - } else if req.TaskName == "" { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid task_name")) - } - - // 权限检查 - 假设使用类似于CreateView的权限检查模式 - if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskCreate, // 假设有这样的权限动作 - strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - return nil, err - } - - // 获取用户ID - userID := session.UserIDInCtxOrEmpty(ctx) - if userID == "" { - return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) - } - - // 数据转换 - 将DTO转换为DO/PO - taskPO := tconv.CreateTaskDTO2PO(req, userID) // 假设有这样的转换函数 - - // 调用服务层或Repository创建任务 - id, err := t.taskRepo.CreateTask(ctx, taskPO) // 假设有taskRepo - if err != nil { - return nil, err - } - - return &trace.CreateTaskResponse{ - ID: id, - }, nil -} -func (t *TraceApplication) UpdateTask(ctx context.Context, req *trace.UpdateTaskRequest) (*trace.UpdateTaskResponse, error) { - return -} -func (t *TraceApplication) ListTasks(ctx context.Context, req *trace.ListTasksRequest) (*trace.ListTasksResponse, error) { - return -} -func (t *TraceApplication) GetTask(ctx context.Context, req *trace.GetTaskRequest) (*trace.GetTaskResponse, error) { - return -} \ No newline at end of file diff --git a/backend/modules/observability/domain/component/rpc/auth.go b/backend/modules/observability/domain/component/rpc/auth.go index 4ebec2eb2..20ad808b6 100644 --- a/backend/modules/observability/domain/component/rpc/auth.go +++ b/backend/modules/observability/domain/component/rpc/auth.go @@ -12,6 +12,9 @@ const ( AuthActionTraceViewList = "listLoopTraceView" AuthActionTraceViewEdit = "edit" AuthActionAnnotationCreate = "createLoopTraceAnnotation" + AuthActionTraceTaskCreate = "createLoopTask" + AuthActionTraceTaskList = "listLoopTask" + AuthActionTraceTaskEdit = "edit" ) //go:generate mockgen -destination=mocks/auth_provider.go -package=mocks . IAuthProvider diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift new file mode 100644 index 000000000..caed6a014 --- /dev/null +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift @@ -0,0 +1,86 @@ +namespace go coze.loop.observability.task + +include "../../../base.thrift" +include "./domain/filter.thrift" +include "./domain/task.thrift" + +struct CreateTaskRequest { + 1: required task.Task task (api.body = "task"), + + 255: optional base.Base base, +} + +struct CreateTaskResponse { + 1: optional i64 task_id (api.js_conv="true" api.body = "task_id"), + + 255: optional base.BaseResp BaseResp +} + +struct UpdateTaskRequest { + 1: required i64 task_id (api.js_conv="true" api.path = "task_id"), + 2: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 3: optional task.TaskStatus task_status (api.body = "task_status"), + 4: optional string description (api.body = "description"), + 5: optional task.EffectiveTime effective_time (api.body = "effective_time"), + 6: optional double sample_rate (api.body = "sample_rate"), + + 255: optional base.Base base, +} + +struct UpdateTaskResponse { + 255: optional base.BaseResp BaseResp +} +enum OrderType { + Unknown = 0 + Asc = 1 + Desc = 2 +} +struct ListTasksRequest { + 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 2: optional filter.TaskFilterFields task_filters (api.body = "task_filters"), + + 101: optional i32 limit (api.body = "limit") /* default 20 max 200 */ + 102: optional i32 offset (api.body = "offset") + 103: optional OrderType order_by (api.body = "order_by") + 255: optional base.Base base, +} + +struct ListTasksResponse { + 1: optional list tasks (api.body = "tasks"), + + 100: optional i64 total (api.js_conv="true" api.body = "total"), + 255: optional base.BaseResp BaseResp +} + +struct GetTaskRequest { + 1: required i64 task_id (api.path = "task_id" api.js_conv="true"), + 2: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + + 255: optional base.Base base, +} + +struct GetTaskResponse { + 1: optional task.Task task (api.body = "task"), + + 255: optional base.BaseResp BaseResp +} + +struct CheckTaskNameRequest { + 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 2: required string name (api.body='name') + 255: optional base.Base Base +} + +struct CheckTaskNameResponse { + 1: optional bool Pass (agw.key = 'pass') + 2: optional string Message (agw.key ='message') + 255: base.BaseResp BaseResp +} + +service TaskService { + CheckTaskNameResponse CheckTaskName(1: CheckTaskNameRequest req) (api.get = '/api/observability/v1/tasks/check_name') + CreateTaskResponse CreateTask(1: CreateTaskRequest req) (api.post = '/api/observability/v1/tasks') + UpdateTaskResponse UpdateTask(1: UpdateTaskRequest req) (api.put = '/api/observability/v1/tasks/:task_id') + ListTasksResponse ListTasks(1: ListTasksRequest req) (api.post = '/api/observability/v1/tasks/list') + GetTaskResponse GetTask(1: GetTaskRequest req) (api.get = '/api/observability/v1/tasks/:task_id') +} \ No newline at end of file diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.thrift index d9a06328d..2f2115211 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.thrift @@ -2,6 +2,8 @@ namespace go coze.loop.observability include "coze.loop.observability.trace.thrift" include "coze.loop.observability.openapi.thrift" +include "coze.loop.observability.task.thrift" service ObservabilityTraceService extends coze.loop.observability.trace.TraceService{} -service ObservabilityOpenAPIService extends coze.loop.observability.openapi.OpenAPIService{} \ No newline at end of file +service ObservabilityOpenAPIService extends coze.loop.observability.openapi.OpenAPIService{} +service ObservabilityTaskService extends coze.loop.observability.task.TaskService{} \ No newline at end of file diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index aece22397..58dad6258 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -309,78 +309,6 @@ struct ExtractSpanInfoResponse { 255: optional base.BaseResp BaseResp } -struct CreateTaskRequest { - 1: required task.Task task (api.body = "task"), - - 255: optional base.Base base, -} - -struct CreateTaskResponse { - 1: optional i64 task_id (api.js_conv="true" api.body = "task_id"), - - 255: optional base.BaseResp BaseResp -} - -struct UpdateTaskRequest { - 1: required i64 task_id (api.js_conv="true" api.path = "task_id"), - 2: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") - 3: optional task.TaskStatus task_status (api.body = "task_status"), - 4: optional string description (api.body = "description"), - 5: optional task.EffectiveTime effective_time (api.body = "effective_time"), - 6: optional double sample_rate (api.body = "sample_rate"), - - 255: optional base.Base base, -} - -struct UpdateTaskResponse { - 255: optional base.BaseResp BaseResp -} -enum OrderType { - Unknown = 0 - Asc = 1 - Desc = 2 -} -struct ListTasksRequest { - 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") - 2: optional filter.TaskFilterFields task_filters (api.body = "task_filters"), - - 101: optional i32 limit (api.body = "limit") /* default 20 max 200 */ - 102: optional i32 offset (api.body = "offset") - 103: optional OrderType order_by (api.body = "order_by") - 255: optional base.Base base, -} - -struct ListTasksResponse { - 1: optional list tasks (api.body = "tasks"), - - 100: optional i64 total (api.js_conv="true" api.body = "total"), - 255: optional base.BaseResp BaseResp -} - -struct GetTaskRequest { - 1: required i64 task_id (api.path = "task_id" api.js_conv="true"), - 2: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") - - 255: optional base.Base base, -} - -struct GetTaskResponse { - 1: optional task.Task task (api.body = "task"), - - 255: optional base.BaseResp BaseResp -} - -struct CheckTaskNameRequest { - 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") - 2: required string name (api.body='name') - 255: optional base.Base Base -} - -struct CheckTaskNameResponse { - 1: optional bool Pass (agw.key = 'pass') - 2: optional string Message (agw.key ='message') - 255: base.BaseResp BaseResp -} service TraceService { ListSpansResponse ListSpans(1: ListSpansRequest req) (api.post = '/api/observability/v1/spans/list') @@ -400,9 +328,4 @@ service TraceService { ChangeEvaluatorScoreResponse ChangeEvaluatorScore(1: ChangeEvaluatorScoreRequest req) (api.post = '/api/observability/v1/annotations/change_eEvaluator_sScore') ListAnnotationEvaluatorsResponse ListAnnotationEvaluators(1: ListAnnotationEvaluatorsRequest req) (api.post = '/api/observability/v1/annotations/lis_annotation_evaluators') ExtractSpanInfoResponse ExtractSpanInfo(1: ExtractSpanInfoRequest req) (api.post = '/api/observability/v1/traces/extract_span_info') - CheckTaskNameResponse CheckTaskName(1: CheckTaskNameRequest req) (api.get = '/api/observability/v1/tasks/check_name') - CreateTaskResponse CreateTask(1: CreateTaskRequest req) (api.post = '/api/observability/v1/tasks') - UpdateTaskResponse UpdateTask(1: UpdateTaskRequest req) (api.put = '/api/observability/v1/tasks/:task_id') - ListTasksResponse ListTasks(1: ListTasksRequest req) (api.post = '/api/observability/v1/tasks/list') - GetTaskResponse GetTask(1: GetTaskRequest req) (api.get = '/api/observability/v1/tasks/:task_id') } From 7b07292b358fce21fa44e5354b5d5c27394a3dbc Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 11:01:39 +0800 Subject: [PATCH 004/462] add interface frame --- .../loop/apis/observability_task_service.go | 43 ++++ .../loop/apis/observability_trace_service.go | 118 +-------- .../router/coze/loop/apis/coze.loop.apis.go | 9 + .../coze/loop/apis/coze.loop.apis.go | 36 +++ .../coze/loop/apis/k-coze.loop.apis.go | 2 + .../observabilitytaskservice.go | 240 ++++++++++++++++++ .../apis/observabilitytaskservice/server.go | 25 ++ .../modules/observability/application/task.go | 3 +- .../observability/application/trace.go | 24 ++ .../modules/observability/application/wire.go | 5 + .../domain/trace/service/trace_service.go | 26 ++ .../coze/loop/apis/coze.loop.apis.thrift | 2 + 12 files changed, 416 insertions(+), 117 deletions(-) create mode 100644 backend/api/handler/coze/loop/apis/observability_task_service.go create mode 100644 backend/kitex_gen/coze/loop/apis/observabilitytaskservice/observabilitytaskservice.go create mode 100644 backend/kitex_gen/coze/loop/apis/observabilitytaskservice/server.go diff --git a/backend/api/handler/coze/loop/apis/observability_task_service.go b/backend/api/handler/coze/loop/apis/observability_task_service.go new file mode 100644 index 000000000..031fab940 --- /dev/null +++ b/backend/api/handler/coze/loop/apis/observability_task_service.go @@ -0,0 +1,43 @@ +// Code generated by hertz generator. + +package apis + +import ( + "context" + + "github.com/cloudwego/hertz/pkg/app" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/apis/observabilitytaskservice" +) + +var observabilityTaskClient observabilitytaskservice.Client + +// CheckTaskName . +// @router /api/observability/v1/tasks/check_name [GET] +func CheckTaskName(ctx context.Context, c *app.RequestContext) { + invokeAndRender(ctx, c, observabilityTaskClient.CheckTaskName) +} + +// CreateTask . +// @router /api/observability/v1/tasks [POST] +func CreateTask(ctx context.Context, c *app.RequestContext) { + invokeAndRender(ctx, c, observabilityTaskClient.CreateTask) +} + +// UpdateTask . +// @router /api/observability/v1/tasks/:task_id [PUT] +func UpdateTask(ctx context.Context, c *app.RequestContext) { + invokeAndRender(ctx, c, observabilityTaskClient.UpdateTask) +} + +// ListTasks . +// @router /api/observability/v1/tasks/list [POST] +func ListTasks(ctx context.Context, c *app.RequestContext) { + invokeAndRender(ctx, c, observabilityTaskClient.ListTasks) +} + +// GetTask . +// @router /api/observability/v1/tasks/:task_id [GET] +func GetTask(ctx context.Context, c *app.RequestContext) { + invokeAndRender(ctx, c, observabilityTaskClient.GetTask) + +} diff --git a/backend/api/handler/coze/loop/apis/observability_trace_service.go b/backend/api/handler/coze/loop/apis/observability_trace_service.go index 71c674e67..4765960cf 100644 --- a/backend/api/handler/coze/loop/apis/observability_trace_service.go +++ b/backend/api/handler/coze/loop/apis/observability_trace_service.go @@ -9,9 +9,7 @@ import ( "context" "github.com/cloudwego/hertz/pkg/app" - "github.com/cloudwego/hertz/pkg/protocol/consts" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/apis/observabilitytraceservice" - trace "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" ) var observabilityClient observabilitytraceservice.Client @@ -91,127 +89,17 @@ func ListAnnotations(ctx context.Context, c *app.RequestContext) { // ChangeEvaluatorScore . // @router /api/observability/v1/annotations/change_eEvaluator_sScore [POST] func ChangeEvaluatorScore(ctx context.Context, c *app.RequestContext) { - var err error - var req trace.ChangeEvaluatorScoreRequest - err = c.BindAndValidate(&req) - if err != nil { - c.String(consts.StatusBadRequest, err.Error()) - return - } - - resp := new(trace.ChangeEvaluatorScoreResponse) - - c.JSON(consts.StatusOK, resp) + invokeAndRender(ctx, c, observabilityClient.ChangeEvaluatorScore) } // ListAnnotationEvaluators . // @router /api/observability/v1/annotations/lis_annotation_evaluators [POST] func ListAnnotationEvaluators(ctx context.Context, c *app.RequestContext) { - var err error - var req trace.ListAnnotationEvaluatorsRequest - err = c.BindAndValidate(&req) - if err != nil { - c.String(consts.StatusBadRequest, err.Error()) - return - } - - resp := new(trace.ListAnnotationEvaluatorsResponse) - - c.JSON(consts.StatusOK, resp) + invokeAndRender(ctx, c, observabilityClient.ListAnnotationEvaluators) } // ExtractSpanInfo . // @router /api/observability/v1/traces/extract_span_info [POST] func ExtractSpanInfo(ctx context.Context, c *app.RequestContext) { - var err error - var req trace.ExtractSpanInfoRequest - err = c.BindAndValidate(&req) - if err != nil { - c.String(consts.StatusBadRequest, err.Error()) - return - } - - resp := new(trace.ExtractSpanInfoResponse) - - c.JSON(consts.StatusOK, resp) -} - -// CheckTaskName . -// @router /api/observability/v1/tasks/check_name [GET] -func CheckTaskName(ctx context.Context, c *app.RequestContext) { - var err error - var req trace.CheckTaskNameRequest - err = c.BindAndValidate(&req) - if err != nil { - c.String(consts.StatusBadRequest, err.Error()) - return - } - - resp := new(trace.CheckTaskNameResponse) - - c.JSON(consts.StatusOK, resp) -} - -// CreateTask . -// @router /api/observability/v1/tasks [POST] -func CreateTask(ctx context.Context, c *app.RequestContext) { - var err error - var req trace.CreateTaskRequest - err = c.BindAndValidate(&req) - if err != nil { - c.String(consts.StatusBadRequest, err.Error()) - return - } - - resp := new(trace.CreateTaskResponse) - - c.JSON(consts.StatusOK, resp) -} - -// UpdateTask . -// @router /api/observability/v1/tasks/:task_id [PUT] -func UpdateTask(ctx context.Context, c *app.RequestContext) { - var err error - var req trace.UpdateTaskRequest - err = c.BindAndValidate(&req) - if err != nil { - c.String(consts.StatusBadRequest, err.Error()) - return - } - - resp := new(trace.UpdateTaskResponse) - - c.JSON(consts.StatusOK, resp) -} - -// ListTasks . -// @router /api/observability/v1/tasks/list [POST] -func ListTasks(ctx context.Context, c *app.RequestContext) { - var err error - var req trace.ListTasksRequest - err = c.BindAndValidate(&req) - if err != nil { - c.String(consts.StatusBadRequest, err.Error()) - return - } - - resp := new(trace.ListTasksResponse) - - c.JSON(consts.StatusOK, resp) -} - -// GetTask . -// @router /api/observability/v1/tasks/:task_id [GET] -func GetTask(ctx context.Context, c *app.RequestContext) { - var err error - var req trace.GetTaskRequest - err = c.BindAndValidate(&req) - if err != nil { - c.String(consts.StatusBadRequest, err.Error()) - return - } - - resp := new(trace.GetTaskResponse) - - c.JSON(consts.StatusOK, resp) + invokeAndRender(ctx, c, observabilityClient.ExtractSpanInfo) } diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index e716ab389..52965b5f6 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -249,6 +249,11 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _annotations.POST("/change_eEvaluator_sScore", append(_changeevaluatorscoreMw(handler), apis.ChangeEvaluatorScore)...) _annotations.POST("/lis_annotation_evaluators", append(_listannotationevaluatorsMw(handler), apis.ListAnnotationEvaluators)...) _annotations.POST("/list", append(_listannotationsMw(handler), apis.ListAnnotations)...) + _v14.POST("/tasks", append(_tasksMw(handler), apis.CreateTask)...) + _tasks := _v14.Group("/tasks", _tasksMw(handler)...) + _tasks.POST("/list", append(_listtasksMw(handler), apis.ListTasks)...) + _tasks.GET("/:task_id", append(_gettaskMw(handler), apis.GetTask)...) + _tasks.PUT("/:task_id", append(_updatetaskMw(handler), apis.UpdateTask)...) _v14.POST("/views", append(_viewsMw(handler), apis.CreateView)...) _views := _v14.Group("/views", _viewsMw(handler)...) _views.POST("/list", append(_listviewsMw(handler), apis.ListViews)...) @@ -258,6 +263,10 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _spans := _v14.Group("/spans", _spansMw(handler)...) _spans.POST("/list", append(_listspansMw(handler), apis.ListSpans)...) } + { + _tasks0 := _v14.Group("/tasks", _tasks0Mw(handler)...) + _tasks0.GET("/check_name", append(_checktasknameMw(handler), apis.CheckTaskName)...) + } { _traces := _v14.Group("/traces", _tracesMw(handler)...) _traces.POST("/batch_get_advance_info", append(_batchgettracesadvanceinfoMw(handler), apis.BatchGetTracesAdvanceInfo)...) diff --git a/backend/kitex_gen/coze/loop/apis/coze.loop.apis.go b/backend/kitex_gen/coze/loop/apis/coze.loop.apis.go index 2f08a1133..f9329c2a8 100644 --- a/backend/kitex_gen/coze/loop/apis/coze.loop.apis.go +++ b/backend/kitex_gen/coze/loop/apis/coze.loop.apis.go @@ -19,6 +19,7 @@ import ( manage0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/llm/manage" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/llm/runtime" openapi1 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/openapi" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/prompt/debug" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/prompt/execute" @@ -390,6 +391,32 @@ func NewObservabilityOpenAPIServiceClient(c thrift.TClient) *ObservabilityOpenAP } } +type ObservabilityTaskService interface { + task.TaskService +} + +type ObservabilityTaskServiceClient struct { + *task.TaskServiceClient +} + +func NewObservabilityTaskServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *ObservabilityTaskServiceClient { + return &ObservabilityTaskServiceClient{ + TaskServiceClient: task.NewTaskServiceClientFactory(t, f), + } +} + +func NewObservabilityTaskServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *ObservabilityTaskServiceClient { + return &ObservabilityTaskServiceClient{ + TaskServiceClient: task.NewTaskServiceClientProtocol(t, iprot, oprot), + } +} + +func NewObservabilityTaskServiceClient(c thrift.TClient) *ObservabilityTaskServiceClient { + return &ObservabilityTaskServiceClient{ + TaskServiceClient: task.NewTaskServiceClient(c), + } +} + type FoundationAuthService interface { auth.AuthService } @@ -672,6 +699,15 @@ func NewObservabilityOpenAPIServiceProcessor(handler ObservabilityOpenAPIService return self } +type ObservabilityTaskServiceProcessor struct { + *task.TaskServiceProcessor +} + +func NewObservabilityTaskServiceProcessor(handler ObservabilityTaskService) *ObservabilityTaskServiceProcessor { + self := &ObservabilityTaskServiceProcessor{task.NewTaskServiceProcessor(handler)} + return self +} + type FoundationAuthServiceProcessor struct { *auth.AuthServiceProcessor } diff --git a/backend/kitex_gen/coze/loop/apis/k-coze.loop.apis.go b/backend/kitex_gen/coze/loop/apis/k-coze.loop.apis.go index 8718d250d..9144d3e55 100644 --- a/backend/kitex_gen/coze/loop/apis/k-coze.loop.apis.go +++ b/backend/kitex_gen/coze/loop/apis/k-coze.loop.apis.go @@ -25,6 +25,7 @@ import ( manage0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/llm/manage" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/llm/runtime" openapi1 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/openapi" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/prompt/debug" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/prompt/execute" @@ -48,6 +49,7 @@ var ( _ = manage0.KitexUnusedProtection _ = runtime.KitexUnusedProtection _ = openapi1.KitexUnusedProtection + _ = task.KitexUnusedProtection _ = trace.KitexUnusedProtection _ = debug.KitexUnusedProtection _ = execute.KitexUnusedProtection diff --git a/backend/kitex_gen/coze/loop/apis/observabilitytaskservice/observabilitytaskservice.go b/backend/kitex_gen/coze/loop/apis/observabilitytaskservice/observabilitytaskservice.go new file mode 100644 index 000000000..9a7049d55 --- /dev/null +++ b/backend/kitex_gen/coze/loop/apis/observabilitytaskservice/observabilitytaskservice.go @@ -0,0 +1,240 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. + +package observabilitytaskservice + +import ( + "context" + "errors" + client "github.com/cloudwego/kitex/client" + kitex "github.com/cloudwego/kitex/pkg/serviceinfo" + apis "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/apis" + task "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" +) + +var errInvalidMessageType = errors.New("invalid message type for service method handler") + +var serviceMethods = map[string]kitex.MethodInfo{ + "CheckTaskName": kitex.NewMethodInfo( + checkTaskNameHandler, + newTaskServiceCheckTaskNameArgs, + newTaskServiceCheckTaskNameResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "CreateTask": kitex.NewMethodInfo( + createTaskHandler, + newTaskServiceCreateTaskArgs, + newTaskServiceCreateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "UpdateTask": kitex.NewMethodInfo( + updateTaskHandler, + newTaskServiceUpdateTaskArgs, + newTaskServiceUpdateTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "ListTasks": kitex.NewMethodInfo( + listTasksHandler, + newTaskServiceListTasksArgs, + newTaskServiceListTasksResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "GetTask": kitex.NewMethodInfo( + getTaskHandler, + newTaskServiceGetTaskArgs, + newTaskServiceGetTaskResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), +} + +var ( + observabilityTaskServiceServiceInfo = NewServiceInfo() +) + +// for server +func serviceInfo() *kitex.ServiceInfo { + return observabilityTaskServiceServiceInfo +} + +// NewServiceInfo creates a new ServiceInfo +func NewServiceInfo() *kitex.ServiceInfo { + return newServiceInfo() +} + +func newServiceInfo() *kitex.ServiceInfo { + serviceName := "ObservabilityTaskService" + handlerType := (*apis.ObservabilityTaskService)(nil) + extra := map[string]interface{}{ + "PackageName": "apis", + } + svcInfo := &kitex.ServiceInfo{ + ServiceName: serviceName, + HandlerType: handlerType, + Methods: serviceMethods, + PayloadCodec: kitex.Thrift, + KiteXGenVersion: "v0.13.1", + Extra: extra, + } + return svcInfo +} + +func checkTaskNameHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceCheckTaskNameArgs) + realResult := result.(*task.TaskServiceCheckTaskNameResult) + success, err := handler.(task.TaskService).CheckTaskName(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceCheckTaskNameArgs() interface{} { + return task.NewTaskServiceCheckTaskNameArgs() +} + +func newTaskServiceCheckTaskNameResult() interface{} { + return task.NewTaskServiceCheckTaskNameResult() +} + +func createTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceCreateTaskArgs) + realResult := result.(*task.TaskServiceCreateTaskResult) + success, err := handler.(task.TaskService).CreateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceCreateTaskArgs() interface{} { + return task.NewTaskServiceCreateTaskArgs() +} + +func newTaskServiceCreateTaskResult() interface{} { + return task.NewTaskServiceCreateTaskResult() +} + +func updateTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceUpdateTaskArgs) + realResult := result.(*task.TaskServiceUpdateTaskResult) + success, err := handler.(task.TaskService).UpdateTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceUpdateTaskArgs() interface{} { + return task.NewTaskServiceUpdateTaskArgs() +} + +func newTaskServiceUpdateTaskResult() interface{} { + return task.NewTaskServiceUpdateTaskResult() +} + +func listTasksHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceListTasksArgs) + realResult := result.(*task.TaskServiceListTasksResult) + success, err := handler.(task.TaskService).ListTasks(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceListTasksArgs() interface{} { + return task.NewTaskServiceListTasksArgs() +} + +func newTaskServiceListTasksResult() interface{} { + return task.NewTaskServiceListTasksResult() +} + +func getTaskHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*task.TaskServiceGetTaskArgs) + realResult := result.(*task.TaskServiceGetTaskResult) + success, err := handler.(task.TaskService).GetTask(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTaskServiceGetTaskArgs() interface{} { + return task.NewTaskServiceGetTaskArgs() +} + +func newTaskServiceGetTaskResult() interface{} { + return task.NewTaskServiceGetTaskResult() +} + +type kClient struct { + c client.Client + sc client.Streaming +} + +func newServiceClient(c client.Client) *kClient { + return &kClient{ + c: c, + sc: c.(client.Streaming), + } +} + +func (p *kClient) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest) (r *task.CheckTaskNameResponse, err error) { + var _args task.TaskServiceCheckTaskNameArgs + _args.Req = req + var _result task.TaskServiceCheckTaskNameResult + if err = p.c.Call(ctx, "CheckTaskName", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) CreateTask(ctx context.Context, req *task.CreateTaskRequest) (r *task.CreateTaskResponse, err error) { + var _args task.TaskServiceCreateTaskArgs + _args.Req = req + var _result task.TaskServiceCreateTaskResult + if err = p.c.Call(ctx, "CreateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) UpdateTask(ctx context.Context, req *task.UpdateTaskRequest) (r *task.UpdateTaskResponse, err error) { + var _args task.TaskServiceUpdateTaskArgs + _args.Req = req + var _result task.TaskServiceUpdateTaskResult + if err = p.c.Call(ctx, "UpdateTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) ListTasks(ctx context.Context, req *task.ListTasksRequest) (r *task.ListTasksResponse, err error) { + var _args task.TaskServiceListTasksArgs + _args.Req = req + var _result task.TaskServiceListTasksResult + if err = p.c.Call(ctx, "ListTasks", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) GetTask(ctx context.Context, req *task.GetTaskRequest) (r *task.GetTaskResponse, err error) { + var _args task.TaskServiceGetTaskArgs + _args.Req = req + var _result task.TaskServiceGetTaskResult + if err = p.c.Call(ctx, "GetTask", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} diff --git a/backend/kitex_gen/coze/loop/apis/observabilitytaskservice/server.go b/backend/kitex_gen/coze/loop/apis/observabilitytaskservice/server.go new file mode 100644 index 000000000..b2c0984f5 --- /dev/null +++ b/backend/kitex_gen/coze/loop/apis/observabilitytaskservice/server.go @@ -0,0 +1,25 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. +package observabilitytaskservice + +import ( + server "github.com/cloudwego/kitex/server" + apis "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/apis" +) + +// NewServer creates a server.Server with the given handler and options. +func NewServer(handler apis.ObservabilityTaskService, opts ...server.Option) server.Server { + var options []server.Option + + options = append(options, opts...) + options = append(options, server.WithCompatibleMiddlewareForUnary()) + + svr := server.NewServer(options...) + if err := svr.RegisterService(serviceInfo(), handler); err != nil { + panic(err) + } + return svr +} + +func RegisterService(svr server.Server, handler apis.ObservabilityTaskService, opts ...server.RegisterOption) error { + return svr.RegisterService(serviceInfo(), handler, opts...) +} diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index e4d412f21..3be8f6dbb 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -8,7 +8,6 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/external/benefit" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/metrics" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" @@ -20,7 +19,7 @@ import ( ) type ITaskApplication interface { - trace.TraceService + task.TaskService } func NewTaskApplication( diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index d9acddb01..f4894b7a4 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -744,8 +744,32 @@ func (t *TraceApplication) getAnnoDisplayInfo(ctx context.Context, workspaceId i } func (t *TraceApplication) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) (*trace.ChangeEvaluatorScoreResponse, error) { + if err := t.validateChangeEvaluatorScoreReq(ctx, req); err != nil { + return nil, err + } + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskCreate, + strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + return nil, err + } + return nil, nil } + +func (t *TraceApplication) validateChangeEvaluatorScoreReq(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) error { + if req == nil { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + } else if req.GetWorkspaceID() <= 0 { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + } else if req.GetEvaluatorRecordID() <= 0 { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid evaluator_record_id")) + } else if req.GetStartTime() <= 0 { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid start_time")) + } else if req.GetCorrection() == nil { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid correction")) + } + return nil +} func (t *TraceApplication) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest) (*trace.ListAnnotationEvaluatorsResponse, error) { return nil, nil } diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 75f4a7c6f..b0bbe6a34 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -83,6 +83,11 @@ var ( auth.NewAuthProvider, traceDomainSet, ) + taskSet = wire.NewSet( + NewTaskApplication, + auth.NewAuthProvider, + traceDomainSet, + ) ) func NewTraceQueryProcessorBuilder( diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index 153af4b1d..cca4be66b 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -153,6 +153,19 @@ type ListAnnotationsResp struct { Annotations loop_span.AnnotationList } +type ChangeEvaluatorScoreRequest struct { +} +type ChangeEvaluatorScoreResp struct { +} +type ListAnnotationEvaluatorsRequest struct { +} +type ListAnnotationEvaluatorsResp struct { +} +type ExtractSpanInfoRequest struct { +} +type ExtractSpanInfoResp struct { +} + type IAnnotationEvent interface { Send(ctx context.Context, msg *entity.AnnotationEvent) error } @@ -171,6 +184,9 @@ type ITraceService interface { UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationReq) error DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationReq) error IAnnotationEvent + ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (*ChangeEvaluatorScoreResp, error) + ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (*ListAnnotationEvaluatorsResp, error) + ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (*ExtractSpanInfoResp, error) } func NewTraceServiceImpl( @@ -844,6 +860,16 @@ func (r *TraceServiceImpl) getTenants(ctx context.Context, platform loop_span.Pl } } +func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (*ChangeEvaluatorScoreResp, error) { + return nil, nil +} +func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (*ListAnnotationEvaluatorsResp, error) { + return nil, nil +} +func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (*ExtractSpanInfoResp, error) { + return nil, nil +} + func processSpecificFilter(f *loop_span.FilterField) error { switch f.FieldName { case loop_span.SpanFieldStatus: diff --git a/idl/thrift/coze/loop/apis/coze.loop.apis.thrift b/idl/thrift/coze/loop/apis/coze.loop.apis.thrift index f9cf28ecb..3e9dd504d 100644 --- a/idl/thrift/coze/loop/apis/coze.loop.apis.thrift +++ b/idl/thrift/coze/loop/apis/coze.loop.apis.thrift @@ -20,6 +20,7 @@ include "../llm/coze.loop.llm.manage.thrift" include "../observability/coze.loop.observability.trace.thrift" include "../data/coze.loop.data.tag.thrift" include "../observability/coze.loop.observability.openapi.thrift" +include "../observability/coze.loop.observability.task.thrift" service EvaluationSetService extends coze.loop.evaluation.eval_set.EvaluationSetService{} service EvaluatorService extends coze.loop.evaluation.evaluator.EvaluatorService{} @@ -38,6 +39,7 @@ service LLMManageService extends coze.loop.llm.manage.LLMManageService {} service LLMRuntimeService extends coze.loop.llm.runtime.LLMRuntimeService {} service ObservabilityTraceService extends coze.loop.observability.trace.TraceService{} service ObservabilityOpenAPIService extends coze.loop.observability.openapi.OpenAPIService{} +service ObservabilityTaskService extends coze.loop.observability.task.TaskService{} service FoundationAuthService extends coze.loop.foundation.auth.AuthService{} service FoundationAuthNService extends coze.loop.foundation.authn.AuthNService{} From fd6bd71d444bac8df42bb3fa6e409a71f92e96f8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 14:21:04 +0800 Subject: [PATCH 005/462] feat: add ChangeEvaluatorScore interface --- backend/go.mod | 2 + backend/go.sum | 2 + .../observability/application/trace.go | 15 ++- .../domain/component/rpc/evaluator.go | 8 ++ .../trace/entity/loop_span/annotation.go | 98 +++++++++++++++++++ .../observability/domain/trace/repo/trace.go | 8 ++ .../domain/trace/service/trace_service.go | 95 +++++++++++++++++- .../modules/observability/infra/repo/trace.go | 3 + .../infra/rpc/evaluator/evaluator.go | 26 +++++ 9 files changed, 255 insertions(+), 2 deletions(-) diff --git a/backend/go.mod b/backend/go.mod index 2b2457892..8fc067ff2 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -95,6 +95,8 @@ require ( gorm.io/plugin/soft_delete v1.2.1 ) +require github.com/apaxa-go/helper v0.0.0-20180607175117-61d31b1c31c3 // indirect + require ( cloud.google.com/go v0.116.0 // indirect cloud.google.com/go/ai v0.8.0 // indirect diff --git a/backend/go.sum b/backend/go.sum index b5a137857..cab989c08 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -95,6 +95,8 @@ github.com/apache/rocketmq-client-go/v2 v2.1.2 h1:yt73olKe5N6894Dbm+ojRf/JPiP0cx github.com/apache/rocketmq-client-go/v2 v2.1.2/go.mod h1:6I6vgxHR3hzrvn+6n/4mrhS+UTulzK/X9LB2Vk1U5gE= github.com/apache/thrift v0.13.0 h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apaxa-go/helper v0.0.0-20180607175117-61d31b1c31c3 h1:badF2fxl2BsWu2f01OYRU9cNnbrOSoOlayijH7r9ip4= +github.com/apaxa-go/helper v0.0.0-20180607175117-61d31b1c31c3/go.mod h1:42ENZ1Wd+1+1pgQWSQ/naAWaaP/uKw1zmnrMzBBNyTQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index f4894b7a4..001c9a5cb 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -753,7 +753,20 @@ func (t *TraceApplication) ChangeEvaluatorScore(ctx context.Context, req *trace. return nil, err } - return nil, nil + sResp, err := t.traceService.ChangeEvaluatorScore(ctx, &service.ChangeEvaluatorScoreRequest{ + WorkspaceID: req.WorkspaceID, + EvaluatorRecordID: req.EvaluatorRecordID, + SpanID: req.SpanID, + StartTime: req.StartTime, + Correction: req.Correction, + }) + if err != nil { + return nil, err + } + + return &trace.ChangeEvaluatorScoreResponse{ + Annotation: sResp.Annotation, + }, nil } func (t *TraceApplication) validateChangeEvaluatorScoreReq(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) error { diff --git a/backend/modules/observability/domain/component/rpc/evaluator.go b/backend/modules/observability/domain/component/rpc/evaluator.go index df2fbec9b..efb4614ae 100644 --- a/backend/modules/observability/domain/component/rpc/evaluator.go +++ b/backend/modules/observability/domain/component/rpc/evaluator.go @@ -15,8 +15,16 @@ type BatchGetEvaluatorVersionsParam struct { WorkspaceID int64 EvaluatorVersionIds []int64 } +type UpdateEvaluatorRecordParam struct { + WorkspaceID string + EvaluatorRecordID int64 + Score float64 + Reasoning string + UpdatedBy string +} //go:generate mockgen -destination=mocks/evaluator.go -package=mocks . IEvaluatorRPCAdapter type IEvaluatorRPCAdapter interface { BatchGetEvaluatorVersions(ctx context.Context, param *BatchGetEvaluatorVersionsParam) ([]*Evaluator, map[int64]*Evaluator, error) + UpdateEvaluatorRecord(ctx context.Context, param *UpdateEvaluatorRecordParam) error } diff --git a/backend/modules/observability/domain/trace/entity/loop_span/annotation.go b/backend/modules/observability/domain/trace/entity/loop_span/annotation.go index 34ed38dcf..fd9695564 100644 --- a/backend/modules/observability/domain/trace/entity/loop_span/annotation.go +++ b/backend/modules/observability/domain/trace/entity/loop_span/annotation.go @@ -4,11 +4,18 @@ package loop_span import ( + "context" "crypto/sha256" "encoding/hex" "fmt" + "strconv" "time" + "github.com/apaxa-go/helper/strconvh" + "github.com/bytedance/gg/gptr" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/annotation" + domain_common "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/pkg/logs" "github.com/samber/lo" ) @@ -136,6 +143,97 @@ func (a *Annotation) GetEvaluationSetMetadata() *ManualEvaluationSetMetadata { return metadata } +func (a *Annotation) CorrectAutoEvaluateScore(score float64, reasoning string, updateBy string) { + if a.Corrections == nil { + // 首次修改时,先记录一下LLM的原始值 + a.Corrections = make([]AnnotationCorrection, 0) + a.Corrections = append(a.Corrections, AnnotationCorrection{ + Reasoning: a.Reasoning, + Value: a.Value, + Type: AnnotationCorrectionTypeLLM, + UpdateAt: a.UpdatedAt, + UpdatedBy: a.UpdatedBy, + }) + } + // 增加人工修改的记录 + a.Corrections = append(a.Corrections, AnnotationCorrection{ + Reasoning: reasoning, + Value: NewDoubleValue(score), + Type: AnnotationCorrectionTypeManual, + UpdateAt: time.Now(), + UpdatedBy: updateBy, + }) + // 更新当前值 + a.Reasoning = reasoning + a.Value = NewDoubleValue(score) + a.UpdatedBy = updateBy + a.UpdatedAt = time.Now() +} + +func (a *Annotation) ToFornaxAnnotation(ctx context.Context) (fa *annotation.Annotation) { + fa = &annotation.Annotation{} + fa.ID = lo.ToPtr(a.ID) + fa.Type = lo.ToPtr(string(a.AnnotationType)) + fa.Key = lo.ToPtr(a.Key) + + fa.Value = lo.ToPtr(a.Value.StringValue) + switch a.Value.ValueType { + case annotation.ValueTypeString: + fa.ValueType = lo.ToPtr(annotation.ValueTypeString) + fa.Value = lo.ToPtr(a.Value.StringValue) + case annotation.ValueTypeLong: + fa.ValueType = lo.ToPtr(annotation.ValueTypeLong) + fa.Value = lo.ToPtr(strconvh.FormatInt64(a.Value.LongValue)) + case annotation.ValueTypeDouble: + fa.ValueType = lo.ToPtr(annotation.ValueTypeDouble) + fa.Value = lo.ToPtr(strconvh.FormatFloat64(a.Value.FloatValue)) + case annotation.ValueTypeBool: + fa.ValueType = lo.ToPtr(annotation.ValueTypeBool) + fa.Value = lo.ToPtr(strconvh.FormatBool(a.Value.BoolValue)) + default: + logs.CtxWarn(ctx, "toFornaxAnnotation invalid ValueType", "ValueType", a.Value.ValueType) + } + switch a.AnnotationType { + case annotation.AnnotationTypeAutoEvaluate: + fa.AutoEvaluate = a.toAutoEvaluate() + default: + logs.CtxWarn(ctx, "toFornaxAnnotation invalid AnnotationType", "AnnotationType", a.AnnotationType) + } + fa.SetBaseInfo(&domain_common.BaseInfo{ + CreatedBy: &domain_common.UserInfo{UserID: gptr.Of(a.CreatedBy)}, + UpdatedBy: &domain_common.UserInfo{UserID: gptr.Of(a.UpdatedBy)}, + CreatedAt: gptr.Of(a.CreatedAt.UnixMilli()), + UpdatedAt: gptr.Of(a.UpdatedAt.UnixMilli()), + }) + return fa +} +func (a *Annotation) toAutoEvaluate() *annotation.AutoEvaluate { + metadata := a.GetAutoEvaluateMetadata() + if metadata == nil { + return nil + } + res := annotation.NewAutoEvaluate() + res.EvaluatorVersionID = metadata.EvaluatorVersionID + res.TaskID = strconv.FormatInt(metadata.TaskID, 10) + res.RecordID = metadata.EvaluatorRecordID + res.EvaluatorResult_ = annotation.NewEvaluatorResult_() + res.EvaluatorResult_.Score = lo.ToPtr(a.Value.FloatValue) + res.EvaluatorResult_.Reasoning = lo.ToPtr(a.Reasoning) + if len(a.Corrections) > 0 { + // 取最后一个人工修改的记录 + manualCorrections := lo.Filter(a.Corrections, func(item AnnotationCorrection, index int) bool { + return item.Type == AnnotationCorrectionTypeManual + }) + if len(manualCorrections) > 0 { + manualCorrection := manualCorrections[len(manualCorrections)-1] + res.EvaluatorResult_.Correction = annotation.NewCorrection() + res.EvaluatorResult_.Correction.Score = lo.ToPtr(manualCorrection.Value.FloatValue) + res.EvaluatorResult_.Correction.Explain = lo.ToPtr(manualCorrection.Reasoning) + } + } + return res +} + func (a AnnotationList) GetUserIDs() []string { if len(a) == 0 { return nil diff --git a/backend/modules/observability/domain/trace/repo/trace.go b/backend/modules/observability/domain/trace/repo/trace.go index 98c7ab246..8620932e1 100644 --- a/backend/modules/observability/domain/trace/repo/trace.go +++ b/backend/modules/observability/domain/trace/repo/trace.go @@ -64,6 +64,13 @@ type InsertAnnotationParam struct { Annotation *loop_span.Annotation } +type UpsertAnnotationParam struct { + Tenant string + TTL loop_span.TTL + Annotations []*loop_span.Annotation + IsSync bool +} + //go:generate mockgen -destination=mocks/trace.go -package=mocks . ITraceRepo type ITraceRepo interface { InsertSpans(context.Context, *InsertTraceParam) error @@ -72,4 +79,5 @@ type ITraceRepo interface { ListAnnotations(context.Context, *ListAnnotationsParam) (loop_span.AnnotationList, error) GetAnnotation(context.Context, *GetAnnotationParam) (*loop_span.Annotation, error) InsertAnnotation(context.Context, *InsertAnnotationParam) error + UpsertAnnotation(ctx context.Context, param *UpsertAnnotationParam) error } diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index cca4be66b..21822f85f 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -11,9 +11,11 @@ import ( "time" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/annotation" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/metrics" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/mq" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" @@ -25,6 +27,7 @@ import ( "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" time_util "github.com/coze-dev/coze-loop/backend/pkg/time" + "github.com/samber/lo" "golang.org/x/sync/errgroup" ) @@ -154,8 +157,16 @@ type ListAnnotationsResp struct { } type ChangeEvaluatorScoreRequest struct { + WorkspaceID int64 + EvaluatorRecordID int64 + SpanID string + TraceID string + StartTime int64 + PlatformType loop_span.PlatformType + Correction *annotation.Correction } type ChangeEvaluatorScoreResp struct { + Annotation *annotation.Annotation } type ListAnnotationEvaluatorsRequest struct { } @@ -196,6 +207,7 @@ func NewTraceServiceImpl( annotationProducer mq.IAnnotationProducer, metrics metrics.ITraceMetrics, buildHelper TraceFilterProcessorBuilder, + evalServiceAdaptor rpc.IEvaluatorRPCAdapter, ) (ITraceService, error) { return &TraceServiceImpl{ traceRepo: tRepo, @@ -204,6 +216,7 @@ func NewTraceServiceImpl( annotationProducer: annotationProducer, buildHelper: buildHelper, metrics: metrics, + evalServiceAdaptor: evalServiceAdaptor, }, nil } @@ -214,6 +227,7 @@ type TraceServiceImpl struct { annotationProducer mq.IAnnotationProducer metrics metrics.ITraceMetrics buildHelper TraceFilterProcessorBuilder + evalServiceAdaptor rpc.IEvaluatorRPCAdapter } func (r *TraceServiceImpl) GetTrace(ctx context.Context, req *GetTraceReq) (*GetTraceResp, error) { @@ -861,7 +875,86 @@ func (r *TraceServiceImpl) getTenants(ctx context.Context, platform loop_span.Pl } func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (*ChangeEvaluatorScoreResp, error) { - return nil, nil + var resp *ChangeEvaluatorScoreResp + tenants, err := r.getTenants(ctx, req.PlatformType) + if err != nil { + return resp, err + } + span, err := r.getSpan(ctx, + tenants, + req.SpanID, + req.TraceID, + strconv.FormatInt(req.WorkspaceID, 10), + req.StartTime-time.Second.Milliseconds(), + req.StartTime+time.Second.Milliseconds(), + ) + if err != nil { + return resp, err + } else if span == nil { + logs.CtxWarn(ctx, "no span found for span_id %s trace_id %s", req.SpanID, req.TraceID) + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) + } + var annotation *loop_span.Annotation + for _, anno := range span.Annotations { + meta := anno.GetAutoEvaluateMetadata() + if meta != nil && meta.EvaluatorRecordID == req.EvaluatorRecordID { + annotation = anno + break + } + } + if annotation == nil { + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("annotation not found")) + } + updateBy := session.UserIDInCtxOrEmpty(ctx) + if updateBy == "" { + return resp, errorx.NewByCode(obErrorx.UserParseFailedCode) + } + annotation.CorrectAutoEvaluateScore(req.Correction.GetScore(), req.Correction.GetExplain(), updateBy) + // 以评估数据为主数据,优先修改评估数据,异常则直接返回失败 + if err = r.correctEvaluatorRecords(ctx, annotation); err != nil { + return resp, err + } + // 再同步修改观测数据 + param := &repo.UpsertAnnotationParam{ + Tenant: span.GetTenant(), + TTL: span.GetTTL(ctx), + Annotations: []*loop_span.Annotation{annotation}, + IsSync: true, + } + if err = r.traceRepo.UpsertAnnotation(ctx, param); err != nil { + recordID := lo.Ternary(annotation.GetAutoEvaluateMetadata() != nil, annotation.GetAutoEvaluateMetadata().EvaluatorRecordID, 0) + // 如果同步修改失败,异步补偿 + // todo 异步有问题,会重复 + logs.CtxWarn(ctx, "Sync upsert annotation failed, try async upsert. span_id=[%v], recored_id=[%v], err:%v", + annotation.SpanID, recordID, err) + return resp, nil + } + resp.Annotation = annotation.ToFornaxAnnotation(ctx) + return resp, nil +} + +func (r *TraceServiceImpl) correctEvaluatorRecords(ctx context.Context, annotation *loop_span.Annotation) error { + if annotation == nil { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("annotation is nil")) + } + if annotation.GetAutoEvaluateMetadata() == nil { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("annotation auto evaluate metadata is nil")) + } + if len(annotation.Corrections) == 0 { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("annotation corrections is empty")) + } + correction := annotation.Corrections[len(annotation.Corrections)-1] + + if err := r.evalServiceAdaptor.UpdateEvaluatorRecord(ctx, &rpc.UpdateEvaluatorRecordParam{ + WorkspaceID: annotation.WorkspaceID, + EvaluatorRecordID: annotation.GetAutoEvaluateMetadata().EvaluatorRecordID, + Score: correction.Value.FloatValue, + Reasoning: correction.Reasoning, + UpdatedBy: correction.UpdatedBy, + }); err != nil { + return err + } + return nil } func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (*ListAnnotationEvaluatorsResp, error) { return nil, nil diff --git a/backend/modules/observability/infra/repo/trace.go b/backend/modules/observability/infra/repo/trace.go index 2ebc0b19b..3d103a823 100644 --- a/backend/modules/observability/infra/repo/trace.go +++ b/backend/modules/observability/infra/repo/trace.go @@ -255,6 +255,9 @@ func (t *TraceCkRepoImpl) InsertAnnotation(ctx context.Context, param *repo.Inse Annotation: annotationPO, }) } +func (t *TraceCkRepoImpl) UpsertAnnotation(ctx context.Context, param *repo.UpsertAnnotationParam) error { + return nil +} type queryTableCfg struct { SpanTables []string diff --git a/backend/modules/observability/infra/rpc/evaluator/evaluator.go b/backend/modules/observability/infra/rpc/evaluator/evaluator.go index 7cf9eae35..cd4f4b8b1 100644 --- a/backend/modules/observability/infra/rpc/evaluator/evaluator.go +++ b/backend/modules/observability/infra/rpc/evaluator/evaluator.go @@ -5,10 +5,14 @@ package evaluator import ( "context" + "strconv" + doevaluator "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/evaluator" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluator" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluatorservice" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" "github.com/samber/lo" @@ -50,3 +54,25 @@ func (r *EvaluatorRPCAdapter) BatchGetEvaluatorVersions(ctx context.Context, par }) return evalInfos, evalMap, nil } + +func (r *EvaluatorRPCAdapter) UpdateEvaluatorRecord(ctx context.Context, param *rpc.UpdateEvaluatorRecordParam) error { + workspaceID, err := strconv.ParseInt(param.WorkspaceID, 10, 64) + if err != nil { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace ID")) + } + _, err = r.client.UpdateEvaluatorRecord(ctx, &evaluator.UpdateEvaluatorRecordRequest{ + WorkspaceID: workspaceID, + EvaluatorRecordID: param.EvaluatorRecordID, + Correction: &doevaluator.Correction{ + Score: lo.ToPtr(param.Score), + Explain: lo.ToPtr(param.Reasoning), + UpdatedBy: lo.ToPtr(param.UpdatedBy), + }, + }) + if err != nil { + logs.CtxWarn(ctx, "update evaluator record failed: %v", err) + return err + } + + return nil +} From 696c35c23437bdc20367ac27ff89e0c8d6bd49e3 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 14:42:04 +0800 Subject: [PATCH 006/462] feat: add ListAnnotationEvaluators interface --- .../observability/application/trace.go | 21 +++++- .../domain/component/rpc/evaluator.go | 9 ++- .../domain/trace/service/trace_service.go | 68 ++++++++++++++++++- .../infra/rpc/evaluator/evaluator.go | 24 +++++++ 4 files changed, 119 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index 001c9a5cb..828d31406 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -784,7 +784,26 @@ func (t *TraceApplication) validateChangeEvaluatorScoreReq(ctx context.Context, return nil } func (t *TraceApplication) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest) (*trace.ListAnnotationEvaluatorsResponse, error) { - return nil, nil + var resp *trace.ListAnnotationEvaluatorsResponse + if req == nil { + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + } else if req.GetWorkspaceID() <= 0 { + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + } + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskList, + strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + return nil, err + } + sResp, err := t.traceService.ListAnnotationEvaluators(ctx, &service.ListAnnotationEvaluatorsRequest{ + WorkspaceID: req.WorkspaceID, + Name: req.Name, + }) + if err != nil { + return nil, err + } + resp.Evaluators = sResp.Evaluators + return resp, nil } func (t *TraceApplication) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest) (*trace.ExtractSpanInfoResponse, error) { return nil, nil diff --git a/backend/modules/observability/domain/component/rpc/evaluator.go b/backend/modules/observability/domain/component/rpc/evaluator.go index efb4614ae..38cfe66dd 100644 --- a/backend/modules/observability/domain/component/rpc/evaluator.go +++ b/backend/modules/observability/domain/component/rpc/evaluator.go @@ -3,7 +3,9 @@ package rpc -import "context" +import ( + "context" +) type Evaluator struct { EvaluatorVersionID int64 @@ -22,9 +24,14 @@ type UpdateEvaluatorRecordParam struct { Reasoning string UpdatedBy string } +type ListEvaluatorsParam struct { + WorkspaceID int64 + Name *string +} //go:generate mockgen -destination=mocks/evaluator.go -package=mocks . IEvaluatorRPCAdapter type IEvaluatorRPCAdapter interface { BatchGetEvaluatorVersions(ctx context.Context, param *BatchGetEvaluatorVersionsParam) ([]*Evaluator, map[int64]*Evaluator, error) UpdateEvaluatorRecord(ctx context.Context, param *UpdateEvaluatorRecordParam) error + ListEvaluators(ctx context.Context, param *ListEvaluatorsParam) ([]*Evaluator, error) } diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index 21822f85f..dd8d48f80 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -12,6 +12,7 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/annotation" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/metrics" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/mq" @@ -169,8 +170,11 @@ type ChangeEvaluatorScoreResp struct { Annotation *annotation.Annotation } type ListAnnotationEvaluatorsRequest struct { + WorkspaceID int64 + Name *string } type ListAnnotationEvaluatorsResp struct { + Evaluators []*trace.AnnotationEvaluator } type ExtractSpanInfoRequest struct { } @@ -957,7 +961,69 @@ func (r *TraceServiceImpl) correctEvaluatorRecords(ctx context.Context, annotati return nil } func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (*ListAnnotationEvaluatorsResp, error) { - return nil, nil + resp := &ListAnnotationEvaluatorsResp{} + resp.Evaluators = make([]*trace.AnnotationEvaluator, 0) + var ( + evaluators = make([]*rpc.Evaluator, 0) + ) + var err error + if req.Name != nil { + // 有name直接模糊查询 + evaluators, err = r.evalServiceAdaptor.ListEvaluators(ctx, &rpc.ListEvaluatorsParam{ + WorkspaceID: req.WorkspaceID, + Name: req.Name, + }) + if err != nil { + return resp, err + } + } else { + // 没有name先查task + //tasksResp, err := service.ListTasks(ctx, &taskservice.ListTasksRequest{ + // WorkspaceID: req.WorkspaceID, + // Limit: gptr.Of(int32(500)), + // Offset: gptr.Of(int32(0)), + //}) + if err != nil { + return nil, err + } + evaluatorVersionIDS := make(map[int64]bool) + //for _, task := range tasksResp.Tasks { + // for _, evaluator := range task.TaskConfig.AutoEvaluateConfigs { + // evaluatorVersionIDS[evaluator.EvaluatorVersionID] = true + // if len(evaluatorVersionIDS) >= 30 { + // break + // } + // } + // if len(evaluatorVersionIDS) >= 30 { + // break + // } + //} + evaluatorVersionIDList := make([]int64, 0) + for k := range evaluatorVersionIDS { + evaluatorVersionIDList = append(evaluatorVersionIDList, k) + } + evaluators, _, err = r.evalServiceAdaptor.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ + WorkspaceID: req.WorkspaceID, + EvaluatorVersionIds: evaluatorVersionIDList, + }) + if err != nil { + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithMsgParam("evaluatorVersionIDs is invalid, BatchGetEvaluators err: %v", err.Error())) + } + } + for _, evaluator := range evaluators { + re := &trace.AnnotationEvaluator{} + if evaluator.EvaluatorVersionID != 0 { + re.EvaluatorVersionID = evaluator.EvaluatorVersionID + } + if evaluator.EvaluatorName != "" { + re.EvaluatorName = evaluator.EvaluatorName + } + if evaluator.EvaluatorVersion != "" { + re.EvaluatorVersion = evaluator.EvaluatorVersion + } + resp.Evaluators = append(resp.Evaluators, re) + } + return resp, nil } func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (*ExtractSpanInfoResp, error) { return nil, nil diff --git a/backend/modules/observability/infra/rpc/evaluator/evaluator.go b/backend/modules/observability/infra/rpc/evaluator/evaluator.go index cd4f4b8b1..1ce48fc31 100644 --- a/backend/modules/observability/infra/rpc/evaluator/evaluator.go +++ b/backend/modules/observability/infra/rpc/evaluator/evaluator.go @@ -7,6 +7,7 @@ import ( "context" "strconv" + "github.com/bytedance/gg/gptr" doevaluator "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/evaluator" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluator" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluatorservice" @@ -76,3 +77,26 @@ func (r *EvaluatorRPCAdapter) UpdateEvaluatorRecord(ctx context.Context, param * return nil } + +func (r *EvaluatorRPCAdapter) ListEvaluators(ctx context.Context, param *rpc.ListEvaluatorsParam) ([]*rpc.Evaluator, error) { + resp, err := r.client.ListEvaluators(ctx, &evaluator.ListEvaluatorsRequest{ + WorkspaceID: param.WorkspaceID, + SearchName: param.Name, + PageSize: gptr.Of(int32(500)), + PageNumber: gptr.Of(int32(1)), + WithVersion: gptr.Of(true), + }) + if err != nil { + return nil, errorx.WrapByCode(err, obErrorx.CommercialCommonRPCErrorCodeCode) + } + logs.CtxInfo(ctx, "ListEvaluators: %v", resp.GetEvaluators()) + evalInfos := make([]*rpc.Evaluator, 0) + for _, eval := range resp.GetEvaluators() { + evalInfos = append(evalInfos, &rpc.Evaluator{ + EvaluatorVersionID: eval.GetCurrentVersion().GetID(), + EvaluatorName: eval.GetName(), + EvaluatorVersion: eval.GetCurrentVersion().GetVersion(), + }) + } + return evalInfos, nil +} From 62df702da3ae95ff76f7d13f2fb066f5057d96ac Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 15:05:17 +0800 Subject: [PATCH 007/462] feat: add ExtractSpanInfo interface --- .../observability/application/trace.go | 47 +++++- .../domain/trace/service/trace_service.go | 134 ++++++++++++++---- 2 files changed, 154 insertions(+), 27 deletions(-) diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index 828d31406..57a247303 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -6,7 +6,9 @@ package application import ( "context" "strconv" + "time" + "github.com/samber/lo" "golang.org/x/sync/errgroup" "github.com/coze-dev/coze-loop/backend/infra/external/benefit" @@ -806,5 +808,48 @@ func (t *TraceApplication) ListAnnotationEvaluators(ctx context.Context, req *tr return resp, nil } func (t *TraceApplication) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest) (*trace.ExtractSpanInfoResponse, error) { - return nil, nil + var resp *trace.ExtractSpanInfoResponse + if err := t.validateExtractSpanInfoReq(ctx, req); err != nil { + return nil, err + } + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceRead, + strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + return nil, err + } + sResp, err := t.traceService.ExtractSpanInfo(ctx, &service.ExtractSpanInfoRequest{ + WorkspaceID: req.WorkspaceID, + TraceID: "", + SpanIds: req.SpanIds, + StartTime: req.GetStartTime(), + EndTime: req.GetEndTime(), + PlatformType: loop_span.PlatformType(req.GetPlatformType()), + FieldMappings: req.FieldMappings, + }) + if err != nil { + return nil, err + } + resp.SpanInfos = sResp.SpanInfos + return resp, nil +} +func (t *TraceApplication) validateExtractSpanInfoReq(ctx context.Context, req *trace.ExtractSpanInfoRequest) error { + if req == nil { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + } else if req.GetWorkspaceID() <= 0 { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + } else if len(req.SpanIds) > MaxSpanLength { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("span_ids length exceeds the limit")) + } + v := utils.DateValidator{ + Start: req.GetStartTime(), + End: req.GetEndTime(), + } + + if newStartTime, newEndTime, err := v.CorrectDate(); err != nil { + return err + } else { + req.SetStartTime(lo.ToPtr(newStartTime - time.Minute.Milliseconds())) + req.SetEndTime(lo.ToPtr(newEndTime + time.Minute.Milliseconds())) + } + return nil } diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index dd8d48f80..131ca298b 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -10,8 +10,10 @@ import ( "sync" "time" + "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/annotation" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/metrics" @@ -24,6 +26,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service/trace/span_processor" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/json" "github.com/coze-dev/coze-loop/backend/pkg/lang/goroutine" "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" @@ -177,8 +180,16 @@ type ListAnnotationEvaluatorsResp struct { Evaluators []*trace.AnnotationEvaluator } type ExtractSpanInfoRequest struct { + WorkspaceID int64 + TraceID string + SpanIds []string + StartTime int64 + EndTime int64 + PlatformType loop_span.PlatformType + FieldMappings []*task.FieldMapping } type ExtractSpanInfoResp struct { + SpanInfos []*trace.SpanInfo } type IAnnotationEvent interface { @@ -467,9 +478,9 @@ func (r *TraceServiceImpl) CreateManualAnnotation(ctx context.Context, req *Crea if err != nil { return nil, err } - span, err := r.getSpan(ctx, + spans, err := r.getSpan(ctx, tenants, - req.Annotation.SpanID, + []string{req.Annotation.SpanID}, req.Annotation.TraceID, req.Annotation.WorkspaceID, req.Annotation.StartTime.Add(-time.Second).UnixMilli(), @@ -477,10 +488,11 @@ func (r *TraceServiceImpl) CreateManualAnnotation(ctx context.Context, req *Crea ) if err != nil { return nil, err - } else if span == nil { + } else if len(spans) == 0 { logs.CtxWarn(ctx, "no span found for span_id %s trace_id %s", req.Annotation.SpanID, req.Annotation.TraceID) return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) } + span := spans[0] annotation, err := span.BuildFeedback( loop_span.AnnotationTypeManualFeedback, req.Annotation.Key, @@ -509,9 +521,9 @@ func (r *TraceServiceImpl) UpdateManualAnnotation(ctx context.Context, req *Upda if err != nil { return err } - span, err := r.getSpan(ctx, + spans, err := r.getSpan(ctx, tenants, - req.Annotation.SpanID, + []string{req.Annotation.SpanID}, req.Annotation.TraceID, req.Annotation.WorkspaceID, req.Annotation.StartTime.Add(-time.Second).UnixMilli(), @@ -519,10 +531,11 @@ func (r *TraceServiceImpl) UpdateManualAnnotation(ctx context.Context, req *Upda ) if err != nil { return err - } else if span == nil { + } else if len(spans) == 0 { logs.CtxWarn(ctx, "no span found for span_id %s trace_id %s", req.Annotation.SpanID, req.Annotation.TraceID) return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) } + span := spans[0] annotation, err := span.BuildFeedback( loop_span.AnnotationTypeManualFeedback, req.Annotation.Key, @@ -560,9 +573,9 @@ func (r *TraceServiceImpl) DeleteManualAnnotation(ctx context.Context, req *Dele if err != nil { return err } - span, err := r.getSpan(ctx, + spans, err := r.getSpan(ctx, tenants, - req.SpanID, + []string{req.SpanID}, req.TraceID, strconv.FormatInt(req.WorkspaceID, 10), req.StartTime-time.Second.Milliseconds(), @@ -570,10 +583,11 @@ func (r *TraceServiceImpl) DeleteManualAnnotation(ctx context.Context, req *Dele ) if err != nil { return err - } else if span == nil { + } else if len(spans) == 0 { logs.CtxWarn(ctx, "no span found for span_id %s trace_id %s", req.SpanID, req.TraceID) return errorx.NewByCode(obErrorx.CommercialCommonInternalErrorCodeCode) } + span := spans[0] annotation, err := span.BuildFeedback( loop_span.AnnotationTypeManualFeedback, req.AnnotationKey, @@ -597,9 +611,9 @@ func (r *TraceServiceImpl) CreateAnnotation(ctx context.Context, req *CreateAnno if err != nil { return err } - span, err := r.getSpan(ctx, + spans, err := r.getSpan(ctx, cfg.Tenants, - req.SpanID, + []string{req.SpanID}, req.TraceID, strconv.FormatInt(req.WorkspaceID, 10), time.Now().Add(-time.Duration(req.QueryDays)*24*time.Hour).UnixMilli(), @@ -607,7 +621,7 @@ func (r *TraceServiceImpl) CreateAnnotation(ctx context.Context, req *CreateAnno ) if err != nil { return err - } else if span == nil { + } else if len(spans) == 0 { return r.annotationProducer.SendAnnotation(ctx, &entity.AnnotationEvent{ Annotation: &loop_span.Annotation{ SpanID: req.SpanID, @@ -627,6 +641,7 @@ func (r *TraceServiceImpl) CreateAnnotation(ctx context.Context, req *CreateAnno RetryTimes: 3, }) } + span := spans[0] annotation, err := span.BuildFeedback( loop_span.AnnotationType(cfg.AnnotationType), req.AnnotationKey, @@ -660,9 +675,9 @@ func (r *TraceServiceImpl) DeleteAnnotation(ctx context.Context, req *DeleteAnno if err != nil { return err } - span, err := r.getSpan(ctx, + spans, err := r.getSpan(ctx, cfg.Tenants, - req.SpanID, + []string{req.SpanID}, req.TraceID, strconv.FormatInt(req.WorkspaceID, 10), time.Now().Add(-time.Duration(req.QueryDays)*24*time.Hour).UnixMilli(), @@ -670,7 +685,7 @@ func (r *TraceServiceImpl) DeleteAnnotation(ctx context.Context, req *DeleteAnno ) if err != nil { return err - } else if span == nil { + } else if len(spans) == 0 { return r.annotationProducer.SendAnnotation(ctx, &entity.AnnotationEvent{ Annotation: &loop_span.Annotation{ SpanID: req.SpanID, @@ -689,6 +704,7 @@ func (r *TraceServiceImpl) DeleteAnnotation(ctx context.Context, req *DeleteAnno RetryTimes: 3, }) } + span := spans[0] annotation, err := span.BuildFeedback( loop_span.AnnotationType(cfg.AnnotationType), req.AnnotationKey, @@ -720,18 +736,19 @@ func (r *TraceServiceImpl) Send(ctx context.Context, event *entity.AnnotationEve if err != nil { // retry return err } - span, err := r.getSpan(ctx, + spans, err := r.getSpan(ctx, cfg.Tenants, - event.Annotation.SpanID, + []string{event.Annotation.SpanID}, event.Annotation.TraceID, event.Annotation.WorkspaceID, event.StartAt, event.EndAt, ) - if err != nil || span == nil { // retry if not found yet + if err != nil || len(spans) == 0 { // retry if not found yet shouldReSend = true return nil } + span := spans[0] event.Annotation.StartTime = time.UnixMicro(span.StartTime) if err := event.Annotation.GenID(); err != nil { logs.CtxWarn(ctx, "failed to generate annotation id for %+v, %v", event.Annotation, err) @@ -745,8 +762,8 @@ func (r *TraceServiceImpl) Send(ctx context.Context, event *entity.AnnotationEve }) } -func (r *TraceServiceImpl) getSpan(ctx context.Context, tenants []string, spanId, traceId, workspaceId string, startAt, endAt int64) (*loop_span.Span, error) { - if spanId == "" || traceId == "" || workspaceId == "" { +func (r *TraceServiceImpl) getSpan(ctx context.Context, tenants []string, spanIds []string, traceId, workspaceId string, startAt, endAt int64) ([]*loop_span.Span, error) { + if len(spanIds) == 0 || traceId == "" || workspaceId == "" { return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) } res, err := r.traceRepo.ListSpans(ctx, &repo.ListSpansParam{ @@ -756,7 +773,7 @@ func (r *TraceServiceImpl) getSpan(ctx context.Context, tenants []string, spanId { FieldName: loop_span.SpanFieldSpanId, FieldType: loop_span.FieldTypeString, - Values: []string{spanId}, + Values: spanIds, QueryType: ptr.Of(loop_span.QueryTypeEnumEq), }, { @@ -784,7 +801,7 @@ func (r *TraceServiceImpl) getSpan(ctx context.Context, tenants []string, spanId } else if len(res.Spans) == 0 { return nil, nil } - return res.Spans[0], nil + return res.Spans, nil } func (r *TraceServiceImpl) getAnnotationCallerCfg(ctx context.Context, caller string) (*config.AnnotationConfig, error) { @@ -884,9 +901,9 @@ func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *Change if err != nil { return resp, err } - span, err := r.getSpan(ctx, + spans, err := r.getSpan(ctx, tenants, - req.SpanID, + []string{req.SpanID}, req.TraceID, strconv.FormatInt(req.WorkspaceID, 10), req.StartTime-time.Second.Milliseconds(), @@ -894,10 +911,11 @@ func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *Change ) if err != nil { return resp, err - } else if span == nil { + } else if len(spans) == 0 { logs.CtxWarn(ctx, "no span found for span_id %s trace_id %s", req.SpanID, req.TraceID) return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) } + span := spans[0] var annotation *loop_span.Annotation for _, anno := range span.Annotations { meta := anno.GetAutoEvaluateMetadata() @@ -1026,7 +1044,71 @@ func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *Li return resp, nil } func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (*ExtractSpanInfoResp, error) { - return nil, nil + resp := &ExtractSpanInfoResp{} + var spanInfos []*trace.SpanInfo + tenants, err := r.getTenants(ctx, req.PlatformType) + if err != nil { + return resp, err + } + spans, err := r.getSpan(ctx, + tenants, + req.SpanIds, + req.TraceID, + strconv.FormatInt(req.WorkspaceID, 10), + req.StartTime-time.Second.Milliseconds(), + req.StartTime+time.Second.Milliseconds(), + ) + if err != nil { + return resp, err + } else if len(spans) == 0 { + logs.CtxWarn(ctx, "no span found for span_ids %v trace_id %s", req.SpanIds, req.TraceID) + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) + } + logs.CtxInfo(ctx, "Get spans success, total conut:%v", len(spans)) + for _, span := range spans { + var fieldList []*trace.FieldData + for _, mapping := range req.FieldMappings { + value, err := buildExtractSpanInfo(ctx, span, mapping) + if err != nil { + // 非json但使用了jsonpath,也不报错,置空 + logs.CtxInfo(ctx, "Extract field failed, err:%v", err) + return resp, err + } + // 前端传入的是Name,评测集需要的是key,需要做一下mapping + if mapping.FieldSchema.Name == nil { + logs.CtxInfo(ctx, "Evaluator field name is nil") + continue + } + content := buildContent(value) + fieldList = append(fieldList, &trace.FieldData{ + Key: gptr.Of(mapping.GetFieldSchema().GetKey()), + Name: gptr.Of(mapping.GetFieldSchema().GetName()), + Content: content, + }) + } + spanInfos = append(spanInfos, &trace.SpanInfo{ + SpanID: span.SpanID, + FieldList: fieldList, + }) + } + resp.SpanInfos = spanInfos + return resp, nil +} +func buildExtractSpanInfo(ctx context.Context, span *loop_span.Span, fieldMapping *task.FieldMapping) (string, error) { + + return "", nil +} + +func buildContent(value string) *trace.Content { + var content *trace.Content + err := json.Unmarshal([]byte(value), &content) + if err != nil { + content = &trace.Content{ + ContentType: gptr.Of(trace.ContentTypeText), + Text: gptr.Of(value), + } + } + return content } func processSpecificFilter(f *loop_span.FilterField) error { From 5da58db2f49aafe116c044044d289a25bf2ee7cd Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 16:27:45 +0800 Subject: [PATCH 008/462] feat: gorm_gen ObservabilityTask --- .../repo/mysql/gorm_gen/model/task.gen.go | 16 + .../infra/repo/mysql/gorm_gen/query/gen.go | 6 + .../repo/mysql/gorm_gen/query/task.gen.go | 327 ++++++++++++++++++ backend/script/gorm_gen/generate.go | 4 +- 4 files changed, 352 insertions(+), 1 deletion(-) create mode 100644 backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go create mode 100644 backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go new file mode 100644 index 000000000..728b05770 --- /dev/null +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go @@ -0,0 +1,16 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +const TableNameObservabilityTask = "task" + +// ObservabilityTask mapped from table +type ObservabilityTask struct { +} + +// TableName ObservabilityTask's table name +func (*ObservabilityTask) TableName() string { + return TableNameObservabilityTask +} diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/gen.go index e543ee240..915518fab 100644 --- a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/gen.go +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/gen.go @@ -18,6 +18,7 @@ import ( func Use(db *gorm.DB, opts ...gen.DOOption) *Query { return &Query{ db: db, + ObservabilityTask: newObservabilityTask(db, opts...), ObservabilityView: newObservabilityView(db, opts...), } } @@ -25,6 +26,7 @@ func Use(db *gorm.DB, opts ...gen.DOOption) *Query { type Query struct { db *gorm.DB + ObservabilityTask observabilityTask ObservabilityView observabilityView } @@ -33,6 +35,7 @@ func (q *Query) Available() bool { return q.db != nil } func (q *Query) clone(db *gorm.DB) *Query { return &Query{ db: db, + ObservabilityTask: q.ObservabilityTask.clone(db), ObservabilityView: q.ObservabilityView.clone(db), } } @@ -48,16 +51,19 @@ func (q *Query) WriteDB() *Query { func (q *Query) ReplaceDB(db *gorm.DB) *Query { return &Query{ db: db, + ObservabilityTask: q.ObservabilityTask.replaceDB(db), ObservabilityView: q.ObservabilityView.replaceDB(db), } } type queryCtx struct { + ObservabilityTask *observabilityTaskDo ObservabilityView *observabilityViewDo } func (q *Query) WithContext(ctx context.Context) *queryCtx { return &queryCtx{ + ObservabilityTask: q.ObservabilityTask.WithContext(ctx), ObservabilityView: q.ObservabilityView.WithContext(ctx), } } diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go new file mode 100644 index 000000000..6a9a6fe0d --- /dev/null +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go @@ -0,0 +1,327 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" +) + +func newObservabilityTask(db *gorm.DB, opts ...gen.DOOption) observabilityTask { + _observabilityTask := observabilityTask{} + + _observabilityTask.observabilityTaskDo.UseDB(db, opts...) + _observabilityTask.observabilityTaskDo.UseModel(&model.ObservabilityTask{}) + + tableName := _observabilityTask.observabilityTaskDo.TableName() + _observabilityTask.ALL = field.NewAsterisk(tableName) + + _observabilityTask.fillFieldMap() + + return _observabilityTask +} + +type observabilityTask struct { + observabilityTaskDo observabilityTaskDo + + ALL field.Asterisk + + fieldMap map[string]field.Expr +} + +func (o observabilityTask) Table(newTableName string) *observabilityTask { + o.observabilityTaskDo.UseTable(newTableName) + return o.updateTableName(newTableName) +} + +func (o observabilityTask) As(alias string) *observabilityTask { + o.observabilityTaskDo.DO = *(o.observabilityTaskDo.As(alias).(*gen.DO)) + return o.updateTableName(alias) +} + +func (o *observabilityTask) updateTableName(table string) *observabilityTask { + o.ALL = field.NewAsterisk(table) + + o.fillFieldMap() + + return o +} + +func (o *observabilityTask) WithContext(ctx context.Context) *observabilityTaskDo { + return o.observabilityTaskDo.WithContext(ctx) +} + +func (o observabilityTask) TableName() string { return o.observabilityTaskDo.TableName() } + +func (o observabilityTask) Alias() string { return o.observabilityTaskDo.Alias() } + +func (o observabilityTask) Columns(cols ...field.Expr) gen.Columns { + return o.observabilityTaskDo.Columns(cols...) +} + +func (o *observabilityTask) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := o.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (o *observabilityTask) fillFieldMap() { + o.fieldMap = make(map[string]field.Expr, 0) +} + +func (o observabilityTask) clone(db *gorm.DB) observabilityTask { + o.observabilityTaskDo.ReplaceConnPool(db.Statement.ConnPool) + return o +} + +func (o observabilityTask) replaceDB(db *gorm.DB) observabilityTask { + o.observabilityTaskDo.ReplaceDB(db) + return o +} + +type observabilityTaskDo struct{ gen.DO } + +func (o observabilityTaskDo) Debug() *observabilityTaskDo { + return o.withDO(o.DO.Debug()) +} + +func (o observabilityTaskDo) WithContext(ctx context.Context) *observabilityTaskDo { + return o.withDO(o.DO.WithContext(ctx)) +} + +func (o observabilityTaskDo) ReadDB() *observabilityTaskDo { + return o.Clauses(dbresolver.Read) +} + +func (o observabilityTaskDo) WriteDB() *observabilityTaskDo { + return o.Clauses(dbresolver.Write) +} + +func (o observabilityTaskDo) Session(config *gorm.Session) *observabilityTaskDo { + return o.withDO(o.DO.Session(config)) +} + +func (o observabilityTaskDo) Clauses(conds ...clause.Expression) *observabilityTaskDo { + return o.withDO(o.DO.Clauses(conds...)) +} + +func (o observabilityTaskDo) Returning(value interface{}, columns ...string) *observabilityTaskDo { + return o.withDO(o.DO.Returning(value, columns...)) +} + +func (o observabilityTaskDo) Not(conds ...gen.Condition) *observabilityTaskDo { + return o.withDO(o.DO.Not(conds...)) +} + +func (o observabilityTaskDo) Or(conds ...gen.Condition) *observabilityTaskDo { + return o.withDO(o.DO.Or(conds...)) +} + +func (o observabilityTaskDo) Select(conds ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Select(conds...)) +} + +func (o observabilityTaskDo) Where(conds ...gen.Condition) *observabilityTaskDo { + return o.withDO(o.DO.Where(conds...)) +} + +func (o observabilityTaskDo) Order(conds ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Order(conds...)) +} + +func (o observabilityTaskDo) Distinct(cols ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Distinct(cols...)) +} + +func (o observabilityTaskDo) Omit(cols ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Omit(cols...)) +} + +func (o observabilityTaskDo) Join(table schema.Tabler, on ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Join(table, on...)) +} + +func (o observabilityTaskDo) LeftJoin(table schema.Tabler, on ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.LeftJoin(table, on...)) +} + +func (o observabilityTaskDo) RightJoin(table schema.Tabler, on ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.RightJoin(table, on...)) +} + +func (o observabilityTaskDo) Group(cols ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Group(cols...)) +} + +func (o observabilityTaskDo) Having(conds ...gen.Condition) *observabilityTaskDo { + return o.withDO(o.DO.Having(conds...)) +} + +func (o observabilityTaskDo) Limit(limit int) *observabilityTaskDo { + return o.withDO(o.DO.Limit(limit)) +} + +func (o observabilityTaskDo) Offset(offset int) *observabilityTaskDo { + return o.withDO(o.DO.Offset(offset)) +} + +func (o observabilityTaskDo) Scopes(funcs ...func(gen.Dao) gen.Dao) *observabilityTaskDo { + return o.withDO(o.DO.Scopes(funcs...)) +} + +func (o observabilityTaskDo) Unscoped() *observabilityTaskDo { + return o.withDO(o.DO.Unscoped()) +} + +func (o observabilityTaskDo) Create(values ...*model.ObservabilityTask) error { + if len(values) == 0 { + return nil + } + return o.DO.Create(values) +} + +func (o observabilityTaskDo) CreateInBatches(values []*model.ObservabilityTask, batchSize int) error { + return o.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (o observabilityTaskDo) Save(values ...*model.ObservabilityTask) error { + if len(values) == 0 { + return nil + } + return o.DO.Save(values) +} + +func (o observabilityTaskDo) First() (*model.ObservabilityTask, error) { + if result, err := o.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTask), nil + } +} + +func (o observabilityTaskDo) Take() (*model.ObservabilityTask, error) { + if result, err := o.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTask), nil + } +} + +func (o observabilityTaskDo) Last() (*model.ObservabilityTask, error) { + if result, err := o.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTask), nil + } +} + +func (o observabilityTaskDo) Find() ([]*model.ObservabilityTask, error) { + result, err := o.DO.Find() + return result.([]*model.ObservabilityTask), err +} + +func (o observabilityTaskDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ObservabilityTask, err error) { + buf := make([]*model.ObservabilityTask, 0, batchSize) + err = o.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (o observabilityTaskDo) FindInBatches(result *[]*model.ObservabilityTask, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return o.DO.FindInBatches(result, batchSize, fc) +} + +func (o observabilityTaskDo) Attrs(attrs ...field.AssignExpr) *observabilityTaskDo { + return o.withDO(o.DO.Attrs(attrs...)) +} + +func (o observabilityTaskDo) Assign(attrs ...field.AssignExpr) *observabilityTaskDo { + return o.withDO(o.DO.Assign(attrs...)) +} + +func (o observabilityTaskDo) Joins(fields ...field.RelationField) *observabilityTaskDo { + for _, _f := range fields { + o = *o.withDO(o.DO.Joins(_f)) + } + return &o +} + +func (o observabilityTaskDo) Preload(fields ...field.RelationField) *observabilityTaskDo { + for _, _f := range fields { + o = *o.withDO(o.DO.Preload(_f)) + } + return &o +} + +func (o observabilityTaskDo) FirstOrInit() (*model.ObservabilityTask, error) { + if result, err := o.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTask), nil + } +} + +func (o observabilityTaskDo) FirstOrCreate() (*model.ObservabilityTask, error) { + if result, err := o.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTask), nil + } +} + +func (o observabilityTaskDo) FindByPage(offset int, limit int) (result []*model.ObservabilityTask, count int64, err error) { + result, err = o.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = o.Offset(-1).Limit(-1).Count() + return +} + +func (o observabilityTaskDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = o.Count() + if err != nil { + return + } + + err = o.Offset(offset).Limit(limit).Scan(result) + return +} + +func (o observabilityTaskDo) Scan(result interface{}) (err error) { + return o.DO.Scan(result) +} + +func (o observabilityTaskDo) Delete(models ...*model.ObservabilityTask) (result gen.ResultInfo, err error) { + return o.DO.Delete(models) +} + +func (o *observabilityTaskDo) withDO(do gen.Dao) *observabilityTaskDo { + o.DO = *do.(*gen.DO) + return o +} diff --git a/backend/script/gorm_gen/generate.go b/backend/script/gorm_gen/generate.go index 4d1c9be23..9e80846de 100644 --- a/backend/script/gorm_gen/generate.go +++ b/backend/script/gorm_gen/generate.go @@ -25,7 +25,7 @@ func main() { func initDB() *gorm.DB { cli, err := gorm.Open(rawsql.New(rawsql.Config{ - FilePath: []string{"../conf/default/mysql/init-sql"}, + FilePath: []string{"../release/deployment/docker-compose/bootstrap/mysql-init/init-sql"}, })) if err != nil { panic(err) @@ -228,8 +228,10 @@ func generateForObservability(db *gorm.DB) { // 为 observability_view 表添加软删除字段 observabilityView := g.GenerateModelAs("observability_view", "ObservabilityView") + observabilityTask := g.GenerateModelAs("task", "ObservabilityTask") g.ApplyBasic(observabilityView) + g.ApplyBasic(observabilityTask) g.Execute() } From b9cd2aaccf68ffe9ba1ea6966d8eae3d73998ace Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 16:37:02 +0800 Subject: [PATCH 009/462] =?UTF-8?q?feat=EF=BC=9A=20gorm=5Fgen=20task?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repo/mysql/gorm_gen/model/task.gen.go | 21 +++++- .../repo/mysql/gorm_gen/query/task.gen.go | 65 ++++++++++++++++++- .../bootstrap/mysql-init/init-sql/task.sql | 20 ++++++ 3 files changed, 103 insertions(+), 3 deletions(-) create mode 100644 release/deployment/docker-compose/bootstrap/mysql-init/init-sql/task.sql diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go index 728b05770..bf3d8ebb9 100644 --- a/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go @@ -4,10 +4,29 @@ package model +import ( + "time" +) + const TableNameObservabilityTask = "task" -// ObservabilityTask mapped from table +// ObservabilityTask 任务信息 type ObservabilityTask struct { + ID int64 `gorm:"column:id;type:bigint(20) unsigned;primaryKey;comment:Task ID" json:"id"` // Task ID + WorkspaceID int64 `gorm:"column:workspace_id;type:bigint(20) unsigned;not null;index:idx_space_id_status,priority:1;index:idx_space_id_type,priority:1;comment:空间ID" json:"workspace_id"` // 空间ID + Name string `gorm:"column:name;type:varchar(128);not null;comment:任务名称" json:"name"` // 任务名称 + Description *string `gorm:"column:description;type:varchar(2048);comment:任务描述" json:"description"` // 任务描述 + TaskType string `gorm:"column:task_type;type:varchar(64);not null;index:idx_space_id_type,priority:2;comment:任务类型" json:"task_type"` // 任务类型 + TaskStatus string `gorm:"column:task_status;type:varchar(64);not null;index:idx_space_id_status,priority:2;comment:任务状态" json:"task_status"` // 任务状态 + TaskDetail *string `gorm:"column:task_detail;type:json;comment:任务运行状态详情" json:"task_detail"` // 任务运行状态详情 + SpanFilter *string `gorm:"column:span_filter;type:json;comment:span 过滤条件" json:"span_filter"` // span 过滤条件 + EffectiveTime *string `gorm:"column:effective_time;type:json;comment:生效时间" json:"effective_time"` // 生效时间 + Sampler *string `gorm:"column:sampler;type:json;comment:采样器" json:"sampler"` // 采样器 + TaskConfig *string `gorm:"column:task_config;type:json;comment:相关任务的配置信息" json:"task_config"` // 相关任务的配置信息 + CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` // 更新时间 + CreatedBy string `gorm:"column:created_by;type:varchar(128);not null;comment:创建人" json:"created_by"` // 创建人 + UpdatedBy string `gorm:"column:updated_by;type:varchar(128);not null;comment:更新人" json:"updated_by"` // 更新人 } // TableName ObservabilityTask's table name diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go index 6a9a6fe0d..6822b179b 100644 --- a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go @@ -27,16 +27,47 @@ func newObservabilityTask(db *gorm.DB, opts ...gen.DOOption) observabilityTask { tableName := _observabilityTask.observabilityTaskDo.TableName() _observabilityTask.ALL = field.NewAsterisk(tableName) + _observabilityTask.ID = field.NewInt64(tableName, "id") + _observabilityTask.WorkspaceID = field.NewInt64(tableName, "workspace_id") + _observabilityTask.Name = field.NewString(tableName, "name") + _observabilityTask.Description = field.NewString(tableName, "description") + _observabilityTask.TaskType = field.NewString(tableName, "task_type") + _observabilityTask.TaskStatus = field.NewString(tableName, "task_status") + _observabilityTask.TaskDetail = field.NewString(tableName, "task_detail") + _observabilityTask.SpanFilter = field.NewString(tableName, "span_filter") + _observabilityTask.EffectiveTime = field.NewString(tableName, "effective_time") + _observabilityTask.Sampler = field.NewString(tableName, "sampler") + _observabilityTask.TaskConfig = field.NewString(tableName, "task_config") + _observabilityTask.CreatedAt = field.NewTime(tableName, "created_at") + _observabilityTask.UpdatedAt = field.NewTime(tableName, "updated_at") + _observabilityTask.CreatedBy = field.NewString(tableName, "created_by") + _observabilityTask.UpdatedBy = field.NewString(tableName, "updated_by") _observabilityTask.fillFieldMap() return _observabilityTask } +// observabilityTask 任务信息 type observabilityTask struct { observabilityTaskDo observabilityTaskDo - ALL field.Asterisk + ALL field.Asterisk + ID field.Int64 // Task ID + WorkspaceID field.Int64 // 空间ID + Name field.String // 任务名称 + Description field.String // 任务描述 + TaskType field.String // 任务类型 + TaskStatus field.String // 任务状态 + TaskDetail field.String // 任务运行状态详情 + SpanFilter field.String // span 过滤条件 + EffectiveTime field.String // 生效时间 + Sampler field.String // 采样器 + TaskConfig field.String // 相关任务的配置信息 + CreatedAt field.Time // 创建时间 + UpdatedAt field.Time // 更新时间 + CreatedBy field.String // 创建人 + UpdatedBy field.String // 更新人 fieldMap map[string]field.Expr } @@ -53,6 +84,21 @@ func (o observabilityTask) As(alias string) *observabilityTask { func (o *observabilityTask) updateTableName(table string) *observabilityTask { o.ALL = field.NewAsterisk(table) + o.ID = field.NewInt64(table, "id") + o.WorkspaceID = field.NewInt64(table, "workspace_id") + o.Name = field.NewString(table, "name") + o.Description = field.NewString(table, "description") + o.TaskType = field.NewString(table, "task_type") + o.TaskStatus = field.NewString(table, "task_status") + o.TaskDetail = field.NewString(table, "task_detail") + o.SpanFilter = field.NewString(table, "span_filter") + o.EffectiveTime = field.NewString(table, "effective_time") + o.Sampler = field.NewString(table, "sampler") + o.TaskConfig = field.NewString(table, "task_config") + o.CreatedAt = field.NewTime(table, "created_at") + o.UpdatedAt = field.NewTime(table, "updated_at") + o.CreatedBy = field.NewString(table, "created_by") + o.UpdatedBy = field.NewString(table, "updated_by") o.fillFieldMap() @@ -81,7 +127,22 @@ func (o *observabilityTask) GetFieldByName(fieldName string) (field.OrderExpr, b } func (o *observabilityTask) fillFieldMap() { - o.fieldMap = make(map[string]field.Expr, 0) + o.fieldMap = make(map[string]field.Expr, 15) + o.fieldMap["id"] = o.ID + o.fieldMap["workspace_id"] = o.WorkspaceID + o.fieldMap["name"] = o.Name + o.fieldMap["description"] = o.Description + o.fieldMap["task_type"] = o.TaskType + o.fieldMap["task_status"] = o.TaskStatus + o.fieldMap["task_detail"] = o.TaskDetail + o.fieldMap["span_filter"] = o.SpanFilter + o.fieldMap["effective_time"] = o.EffectiveTime + o.fieldMap["sampler"] = o.Sampler + o.fieldMap["task_config"] = o.TaskConfig + o.fieldMap["created_at"] = o.CreatedAt + o.fieldMap["updated_at"] = o.UpdatedAt + o.fieldMap["created_by"] = o.CreatedBy + o.fieldMap["updated_by"] = o.UpdatedBy } func (o observabilityTask) clone(db *gorm.DB) observabilityTask { diff --git a/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/task.sql b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/task.sql new file mode 100644 index 000000000..3af50b68f --- /dev/null +++ b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/task.sql @@ -0,0 +1,20 @@ +CREATE TABLE `task` ( + `id` bigint unsigned NOT NULL COMMENT 'Task ID', + `workspace_id` bigint unsigned NOT NULL COMMENT '空间ID', + `name` varchar(128) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '任务名称', + `description` varchar(2048) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '任务描述', + `task_type` varchar(64) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '任务类型', + `task_status` varchar(64) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '任务状态', + `task_detail` json DEFAULT NULL COMMENT '任务运行状态详情', + `span_filter` json DEFAULT NULL COMMENT 'span 过滤条件', + `effective_time` json DEFAULT NULL COMMENT '生效时间', + `sampler` json DEFAULT NULL COMMENT '采样器', + `task_config` json DEFAULT NULL COMMENT '相关任务的配置信息', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `created_by` varchar(128) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人', + `updated_by` varchar(128) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '更新人', + PRIMARY KEY (`id`), + KEY `idx_space_id_status` (`workspace_id`,`task_status`), + KEY `idx_space_id_type` (`workspace_id`,`task_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='任务信息' \ No newline at end of file From 7a44b97ecfc75e6a7c6cfec5997f83d6235a26ba Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 17:34:58 +0800 Subject: [PATCH 010/462] =?UTF-8?q?feat=EF=BC=9Aadd=20task=20dao?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../observability/domain/task/entity/task.go | 21 +++ .../observability/domain/task/repo/task.go | 16 ++ .../infra/repo/mysql/convertor/task.go | 48 +++++ .../observability/infra/repo/mysql/task.go | 172 ++++++++++++++++++ 4 files changed, 257 insertions(+) create mode 100644 backend/modules/observability/domain/task/entity/task.go create mode 100644 backend/modules/observability/domain/task/repo/task.go create mode 100644 backend/modules/observability/infra/repo/mysql/convertor/task.go create mode 100644 backend/modules/observability/infra/repo/mysql/task.go diff --git a/backend/modules/observability/domain/task/entity/task.go b/backend/modules/observability/domain/task/entity/task.go new file mode 100644 index 000000000..e299b5db1 --- /dev/null +++ b/backend/modules/observability/domain/task/entity/task.go @@ -0,0 +1,21 @@ +package entity + +import "time" + +type ObservabilityTask struct { + ID int64 // Task ID + WorkspaceID int64 // 空间ID + Name string // 任务名称 + Description *string // 任务描述 + TaskType string // 任务类型 + TaskStatus string // 任务状态 + TaskDetail *string // 任务运行状态详情 + SpanFilter *string // span 过滤条件 + EffectiveTime *string // 生效时间 + Sampler *string // 采样器 + TaskConfig *string // 相关任务的配置信息 + CreatedAt time.Time // 创建时间 + UpdatedAt time.Time // 更新时间 + CreatedBy string // 创建人 + UpdatedBy string // 更新人 +} diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go new file mode 100644 index 000000000..27ef39775 --- /dev/null +++ b/backend/modules/observability/domain/task/repo/task.go @@ -0,0 +1,16 @@ +package repo + +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" +) + +//go:generate mockgen -destination=mocks/Task.go -package=mocks . ITaskRepo +type ITaskRepo interface { + GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityTask, error) + ListTasks(ctx context.Context, workspaceID int64, userID string) ([]*entity.ObservabilityTask, error) + UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error + CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) + DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error +} diff --git a/backend/modules/observability/infra/repo/mysql/convertor/task.go b/backend/modules/observability/infra/repo/mysql/convertor/task.go new file mode 100644 index 000000000..fcd05c7dd --- /dev/null +++ b/backend/modules/observability/infra/repo/mysql/convertor/task.go @@ -0,0 +1,48 @@ +package convertor + +import ( + "time" + + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" +) + +func TaskDO2PO(task *entity.ObservabilityTask) *model.ObservabilityTask { + return &model.ObservabilityTask{ + ID: task.ID, + WorkspaceID: task.WorkspaceID, + Name: task.Name, + Description: task.Description, + TaskType: "", + TaskStatus: "", + TaskDetail: nil, + SpanFilter: nil, + EffectiveTime: nil, + Sampler: nil, + TaskConfig: nil, + CreatedAt: time.Time{}, + UpdatedAt: time.Time{}, + CreatedBy: "", + UpdatedBy: "", + } +} + +func TaskPO2DO(task *model.ObservabilityTask) *entity.ObservabilityTask { + return &entity.ObservabilityTask{ + ID: 0, + WorkspaceID: 0, + Name: "", + Description: nil, + TaskType: "", + TaskStatus: "", + TaskDetail: nil, + SpanFilter: nil, + EffectiveTime: nil, + Sampler: nil, + TaskConfig: nil, + CreatedAt: time.Time{}, + UpdatedAt: time.Time{}, + CreatedBy: "", + UpdatedBy: "", + } +} diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go new file mode 100644 index 000000000..6e20f594e --- /dev/null +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -0,0 +1,172 @@ +package mysql + +import ( + "context" + "errors" + + "github.com/coze-dev/coze-loop/backend/infra/db" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" + genquery "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/logs" + "gorm.io/gorm" +) + +// 默认限制条数 +const ( + DefaultLimit = 20 + MaxLimit = 501 + DefaultOffset = 0 +) + +type ListTaskParam struct { + WorkspaceIDs []int64 + TaskFilters *filter.TaskFilterFields + ReqLimit int32 + ReqOffset int32 + OrderBy task.OrderType +} + +//go:generate mockgen -destination=mocks/task.go -package=mocks . ITaskDao +type ITaskDao interface { + GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTask, error) + ListTasks(ctx context.Context, workspaceID int64, userID string) ([]*model.ObservabilityTask, error) + CreateTask(ctx context.Context, po *model.ObservabilityTask) (int64, error) + UpdateTask(ctx context.Context, po *model.ObservabilityTask) error + DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error + ListTask(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) +} + +func NewTaskDaoImpl(db db.Provider) ITaskDao { + return &TaskDaoImpl{ + dbMgr: db, + } +} + +type TaskDaoImpl struct { + dbMgr db.Provider +} + +func (v *TaskDaoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTask, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + qd := q.WithContext(ctx).Where(q.ID.Eq(id)) + if workspaceID != nil { + qd = qd.Where(q.WorkspaceID.Eq(*workspaceID)) + } + if userID != nil { + qd = qd.Where(q.CreatedBy.Eq(*userID)) + } + TaskPo, err := qd.First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Task not found")) + } else { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + } + return TaskPo, nil +} + +func (v *TaskDaoImpl) ListTasks(ctx context.Context, workspaceID int64, userID string) ([]*model.ObservabilityTask, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + qd := q.WithContext(ctx) + if workspaceID != 0 { + qd = qd.Where(q.WorkspaceID.Eq(workspaceID)) + } + if userID != "" { + qd = qd.Where(q.CreatedBy.Eq(userID)) + } + results, err := qd.Limit(100).Find() + if err != nil { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, nil +} + +func (v *TaskDaoImpl) CreateTask(ctx context.Context, po *model.ObservabilityTask) (int64, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + if err := q.WithContext(ctx).Create(po); err != nil { + if errors.Is(err, gorm.ErrDuplicatedKey) { + return 0, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Task duplicate key")) + } else { + return 0, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + } else { + return po.ID, nil + } +} + +func (v *TaskDaoImpl) UpdateTask(ctx context.Context, po *model.ObservabilityTask) error { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + if err := q.WithContext(ctx).Save(po); err != nil { + return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } else { + return nil + } +} + +func (v *TaskDaoImpl) DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + qd := q.WithContext(ctx).Where(q.ID.Eq(id)).Where(q.WorkspaceID.Eq(workspaceID)).Where(q.CreatedBy.Eq(userID)) + info, err := qd.Delete() + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + logs.CtxInfo(ctx, "%d rows deleted", info.RowsAffected) + return nil +} + +func (v *TaskDaoImpl) ListTask(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + var total int64 + qd := q.WithContext(ctx) + if len(param.WorkspaceIDs) != 0 { + qd = qd.Where(q.WorkspaceID.In(param.WorkspaceIDs...)) + } + // 应用过滤条件 + //var err error + //qd, err = applyTaskFilters(qd, param.TaskFilters) + //if err != nil { + // return nil, 0, err + //} + + // 计算分页参数 + limit, offset := calculatePagination(param.ReqLimit, param.ReqOffset) + if param.OrderBy == task.OrderType_Asc { + qd = qd.Order(q.CreatedAt.Asc()) + } else { + qd = qd.Order(q.CreatedAt.Desc()) + } + results, err := qd.Limit(limit).Offset(offset).Find() + if err != nil { + return nil, total, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, total, nil +} + +// 处理任务过滤条件 +func applyTaskFilters(db *query.observabilityTaskDo, taskFilters *filter.TaskFilterFields) (*query.observabilityTaskDo, error) { + if taskFilters == nil { + return db, nil + } + + return db, nil +} + +// 计算分页参数 +func calculatePagination(reqLimit, reqOffset int32) (int, int) { + limit := DefaultLimit + if reqLimit > 0 && reqLimit < MaxLimit { + limit = int(reqLimit) + } + + offset := DefaultOffset + if reqOffset > 0 { + offset = int(reqOffset) + } + + return limit, offset +} From d9c90fb4d9e16ccabb7e1a73adaa82446c5ebcb5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 17:47:22 +0800 Subject: [PATCH 011/462] =?UTF-8?q?feat=EF=BC=9Arebase=20idl=20from=20main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../loop/apis/observability_trace_service.go | 34 + .../router/coze/loop/apis/coze.loop.apis.go | 2 + .../api/router/coze/loop/apis/middleware.go | 10 + .../apis/observabilitytraceservice/client.go | 12 + .../observabilitytraceservice.go | 72 + .../observability/domain/common/common.go | 18 + .../domain/dataset/export_dataset.go | 2782 +++++ .../dataset/export_dataset_validator.go | 83 + .../domain/dataset/k-export_dataset.go | 2015 ++++ .../observabilitytraceservice/client.go | 12 + .../observabilitytraceservice.go | 72 + .../trace/coze.loop.observability.trace.go | 9906 ++++++++++++----- ...coze.loop.observability.trace_validator.go | 84 + .../trace/k-coze.loop.observability.trace.go | 5942 +++++++--- .../trace/traceservice/client.go | 12 + .../trace/traceservice/traceservice.go | 72 + .../lotrace/local_traceservice.go | 42 + .../coze.loop.observability.trace.thrift | 64 +- .../loop/observability/domain/common.thrift | 11 + .../domain/export_dataset.thrift | 63 + 20 files changed, 17140 insertions(+), 4168 deletions(-) create mode 100644 backend/kitex_gen/coze/loop/observability/domain/dataset/export_dataset.go create mode 100644 backend/kitex_gen/coze/loop/observability/domain/dataset/export_dataset_validator.go create mode 100644 backend/kitex_gen/coze/loop/observability/domain/dataset/k-export_dataset.go create mode 100644 idl/thrift/coze/loop/observability/domain/export_dataset.thrift diff --git a/backend/api/handler/coze/loop/apis/observability_trace_service.go b/backend/api/handler/coze/loop/apis/observability_trace_service.go index 4765960cf..14b5d9fed 100644 --- a/backend/api/handler/coze/loop/apis/observability_trace_service.go +++ b/backend/api/handler/coze/loop/apis/observability_trace_service.go @@ -9,7 +9,9 @@ import ( "context" "github.com/cloudwego/hertz/pkg/app" + "github.com/cloudwego/hertz/pkg/protocol/consts" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/apis/observabilitytraceservice" + trace "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" ) var observabilityClient observabilitytraceservice.Client @@ -103,3 +105,35 @@ func ListAnnotationEvaluators(ctx context.Context, c *app.RequestContext) { func ExtractSpanInfo(ctx context.Context, c *app.RequestContext) { invokeAndRender(ctx, c, observabilityClient.ExtractSpanInfo) } + +// ExportTracesToDataset . +// @router /api/observability/v1/traces/export_to_dataset [POST] +func ExportTracesToDataset(ctx context.Context, c *app.RequestContext) { + var err error + var req trace.ExportTracesToDatasetRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(trace.ExportTracesToDatasetResponse) + + c.JSON(consts.StatusOK, resp) +} + +// PreviewExportTracesToDataset . +// @router /api/observability/v1/traces/preview_export_to_dataset [POST] +func PreviewExportTracesToDataset(ctx context.Context, c *app.RequestContext) { + var err error + var req trace.PreviewExportTracesToDatasetRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(trace.PreviewExportTracesToDatasetResponse) + + c.JSON(consts.StatusOK, resp) +} diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index 52965b5f6..4d872e8aa 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -270,8 +270,10 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { { _traces := _v14.Group("/traces", _tracesMw(handler)...) _traces.POST("/batch_get_advance_info", append(_batchgettracesadvanceinfoMw(handler), apis.BatchGetTracesAdvanceInfo)...) + _traces.POST("/export_to_dataset", append(_exporttracestodatasetMw(handler), apis.ExportTracesToDataset)...) _traces.POST("/extract_span_info", append(_extractspaninfoMw(handler), apis.ExtractSpanInfo)...) _traces.GET("/meta_info", append(_gettracesmetainfoMw(handler), apis.GetTracesMetaInfo)...) + _traces.POST("/preview_export_to_dataset", append(_previewexporttracestodatasetMw(handler), apis.PreviewExportTracesToDataset)...) _traces.GET("/:trace_id", append(_gettraceMw(handler), apis.GetTrace)...) } } diff --git a/backend/api/router/coze/loop/apis/middleware.go b/backend/api/router/coze/loop/apis/middleware.go index 7ea153bee..e2ef29f1e 100644 --- a/backend/api/router/coze/loop/apis/middleware.go +++ b/backend/api/router/coze/loop/apis/middleware.go @@ -1162,3 +1162,13 @@ func _extractspaninfoMw(handler *apis.APIHandler) []app.HandlerFunc { // your code... return nil } + +func _exporttracestodatasetMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _previewexporttracestodatasetMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} diff --git a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go index 5894526dd..9079d147d 100644 --- a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go +++ b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/client.go @@ -24,6 +24,8 @@ type Client interface { UpdateManualAnnotation(ctx context.Context, req *trace.UpdateManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.UpdateManualAnnotationResponse, err error) DeleteManualAnnotation(ctx context.Context, req *trace.DeleteManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.DeleteManualAnnotationResponse, err error) ListAnnotations(ctx context.Context, req *trace.ListAnnotationsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationsResponse, err error) + ExportTracesToDataset(ctx context.Context, req *trace.ExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.ExportTracesToDatasetResponse, err error) + PreviewExportTracesToDataset(ctx context.Context, req *trace.PreviewExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.PreviewExportTracesToDatasetResponse, err error) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) @@ -123,6 +125,16 @@ func (p *kObservabilityTraceServiceClient) ListAnnotations(ctx context.Context, return p.kClient.ListAnnotations(ctx, req) } +func (p *kObservabilityTraceServiceClient) ExportTracesToDataset(ctx context.Context, req *trace.ExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.ExportTracesToDatasetResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ExportTracesToDataset(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) PreviewExportTracesToDataset(ctx context.Context, req *trace.PreviewExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.PreviewExportTracesToDatasetResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.PreviewExportTracesToDataset(ctx, req) +} + func (p *kObservabilityTraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) { ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.ChangeEvaluatorScore(ctx, req) diff --git a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go index 34765c415..b2b236cd3 100644 --- a/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go +++ b/backend/kitex_gen/coze/loop/apis/observabilitytraceservice/observabilitytraceservice.go @@ -105,6 +105,20 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), + "ExportTracesToDataset": kitex.NewMethodInfo( + exportTracesToDatasetHandler, + newTraceServiceExportTracesToDatasetArgs, + newTraceServiceExportTracesToDatasetResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "PreviewExportTracesToDataset": kitex.NewMethodInfo( + previewExportTracesToDatasetHandler, + newTraceServicePreviewExportTracesToDatasetArgs, + newTraceServicePreviewExportTracesToDatasetResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), "ChangeEvaluatorScore": kitex.NewMethodInfo( changeEvaluatorScoreHandler, newTraceServiceChangeEvaluatorScoreArgs, @@ -406,6 +420,44 @@ func newTraceServiceListAnnotationsResult() interface{} { return trace.NewTraceServiceListAnnotationsResult() } +func exportTracesToDatasetHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceExportTracesToDatasetArgs) + realResult := result.(*trace.TraceServiceExportTracesToDatasetResult) + success, err := handler.(trace.TraceService).ExportTracesToDataset(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceExportTracesToDatasetArgs() interface{} { + return trace.NewTraceServiceExportTracesToDatasetArgs() +} + +func newTraceServiceExportTracesToDatasetResult() interface{} { + return trace.NewTraceServiceExportTracesToDatasetResult() +} + +func previewExportTracesToDatasetHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServicePreviewExportTracesToDatasetArgs) + realResult := result.(*trace.TraceServicePreviewExportTracesToDatasetResult) + success, err := handler.(trace.TraceService).PreviewExportTracesToDataset(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServicePreviewExportTracesToDatasetArgs() interface{} { + return trace.NewTraceServicePreviewExportTracesToDatasetArgs() +} + +func newTraceServicePreviewExportTracesToDatasetResult() interface{} { + return trace.NewTraceServicePreviewExportTracesToDatasetResult() +} + func changeEvaluatorScoreHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { realArg := arg.(*trace.TraceServiceChangeEvaluatorScoreArgs) realResult := result.(*trace.TraceServiceChangeEvaluatorScoreResult) @@ -605,6 +657,26 @@ func (p *kClient) ListAnnotations(ctx context.Context, req *trace.ListAnnotation return _result.GetSuccess(), nil } +func (p *kClient) ExportTracesToDataset(ctx context.Context, req *trace.ExportTracesToDatasetRequest) (r *trace.ExportTracesToDatasetResponse, err error) { + var _args trace.TraceServiceExportTracesToDatasetArgs + _args.Req = req + var _result trace.TraceServiceExportTracesToDatasetResult + if err = p.c.Call(ctx, "ExportTracesToDataset", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) PreviewExportTracesToDataset(ctx context.Context, req *trace.PreviewExportTracesToDatasetRequest) (r *trace.PreviewExportTracesToDatasetResponse, err error) { + var _args trace.TraceServicePreviewExportTracesToDatasetArgs + _args.Req = req + var _result trace.TraceServicePreviewExportTracesToDatasetResult + if err = p.c.Call(ctx, "PreviewExportTracesToDataset", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + func (p *kClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) (r *trace.ChangeEvaluatorScoreResponse, err error) { var _args trace.TraceServiceChangeEvaluatorScoreArgs _args.Req = req diff --git a/backend/kitex_gen/coze/loop/observability/domain/common/common.go b/backend/kitex_gen/coze/loop/observability/domain/common/common.go index 8eff6fd32..2e20c900e 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/common/common.go +++ b/backend/kitex_gen/coze/loop/observability/domain/common/common.go @@ -25,17 +25,35 @@ const ( PlatformTypeLoopAll = "loop_all" + PlatformTypeInnerCozeloop = "inner_cozeloop" + + PlatformTypeInnerDoubao = "inner_doubao" + + PlatformTypeInnerPrompt = "inner_prompt" + + PlatformTypeInnerCozeBot = "inner_coze_bot" + SpanListTypeRootSpan = "root_span" SpanListTypeAllSpan = "all_span" SpanListTypeLlmSpan = "llm_span" + + ContentTypeText = "Text" + + ContentTypeImage = "Image" + + ContentTypeAudio = "Audio" + + ContentTypeMultiPart = "MultiPart" ) type PlatformType = string type SpanListType = string +type ContentType = string + type OrderBy struct { Field *string `thrift:"field,1,optional" frugal:"1,optional,string" form:"field" json:"field,omitempty" query:"field"` IsAsc *bool `thrift:"is_asc,2,optional" frugal:"2,optional,bool" form:"is_asc" json:"is_asc,omitempty" query:"is_asc"` diff --git a/backend/kitex_gen/coze/loop/observability/domain/dataset/export_dataset.go b/backend/kitex_gen/coze/loop/observability/domain/dataset/export_dataset.go new file mode 100644 index 000000000..92da7c4e2 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/domain/dataset/export_dataset.go @@ -0,0 +1,2782 @@ +// Code generated by thriftgo (0.4.1). DO NOT EDIT. + +package dataset + +import ( + "fmt" + "github.com/apache/thrift/lib/go/thrift" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/domain/dataset" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "strings" +) + +const ( + ExportTypeAppend = "append" + + ExportTypeOverwrite = "overwrite" + + ItemStatusSuccess = "success" + + ItemStatusError = "error" +) + +type ExportType = string + +type ItemStatus = string + +// DatasetSchema 数据集 Schema,包含字段的类型限制等信息 +type DatasetSchema struct { + // 数据集字段约束 + FieldSchemas []*FieldSchema `thrift:"field_schemas,10,optional" frugal:"10,optional,list" form:"field_schemas" json:"field_schemas,omitempty" query:"field_schemas"` +} + +func NewDatasetSchema() *DatasetSchema { + return &DatasetSchema{} +} + +func (p *DatasetSchema) InitDefault() { +} + +var DatasetSchema_FieldSchemas_DEFAULT []*FieldSchema + +func (p *DatasetSchema) GetFieldSchemas() (v []*FieldSchema) { + if p == nil { + return + } + if !p.IsSetFieldSchemas() { + return DatasetSchema_FieldSchemas_DEFAULT + } + return p.FieldSchemas +} +func (p *DatasetSchema) SetFieldSchemas(val []*FieldSchema) { + p.FieldSchemas = val +} + +var fieldIDToName_DatasetSchema = map[int16]string{ + 10: "field_schemas", +} + +func (p *DatasetSchema) IsSetFieldSchemas() bool { + return p.FieldSchemas != nil +} + +func (p *DatasetSchema) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 10: + if fieldTypeId == thrift.LIST { + if err = p.ReadField10(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DatasetSchema[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *DatasetSchema) ReadField10(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*FieldSchema, 0, size) + values := make([]FieldSchema, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldSchemas = _field + return nil +} + +func (p *DatasetSchema) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("DatasetSchema"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField10(oprot); err != nil { + fieldId = 10 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *DatasetSchema) writeField10(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldSchemas() { + if err = oprot.WriteFieldBegin("field_schemas", thrift.LIST, 10); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldSchemas)); err != nil { + return err + } + for _, v := range p.FieldSchemas { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) +} + +func (p *DatasetSchema) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("DatasetSchema(%+v)", *p) + +} + +func (p *DatasetSchema) DeepEqual(ano *DatasetSchema) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field10DeepEqual(ano.FieldSchemas) { + return false + } + return true +} + +func (p *DatasetSchema) Field10DeepEqual(src []*FieldSchema) bool { + + if len(p.FieldSchemas) != len(src) { + return false + } + for i, v := range p.FieldSchemas { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +type FieldSchema struct { + // 数据集 schema 版本变化中 key 唯一,新建时自动生成,不需传入 + Key *string `thrift:"key,1,optional" frugal:"1,optional,string" form:"key" json:"key,omitempty" query:"key"` + // 展示名称 + Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty" query:"name"` + // 描述 + Description *string `thrift:"description,3,optional" frugal:"3,optional,string" form:"description" json:"description,omitempty" query:"description"` + // 类型,如 文本,图片,etc. + ContentType *common.ContentType `thrift:"content_type,4,optional" frugal:"4,optional,string" form:"content_type" json:"content_type,omitempty" query:"content_type"` + // 默认渲染格式,如 code, json, etc. + DefaultFormat *dataset.FieldDisplayFormat `thrift:"default_format,5,optional" frugal:"5,optional,FieldDisplayFormat" form:"default_format" json:"default_format,omitempty" query:"default_format"` + /* [20,50) 内容格式限制相关 */ + TextSchema *string `thrift:"text_schema,20,optional" frugal:"20,optional,string" form:"text_schema" json:"text_schema,omitempty" query:"text_schema"` +} + +func NewFieldSchema() *FieldSchema { + return &FieldSchema{} +} + +func (p *FieldSchema) InitDefault() { +} + +var FieldSchema_Key_DEFAULT string + +func (p *FieldSchema) GetKey() (v string) { + if p == nil { + return + } + if !p.IsSetKey() { + return FieldSchema_Key_DEFAULT + } + return *p.Key +} + +var FieldSchema_Name_DEFAULT string + +func (p *FieldSchema) GetName() (v string) { + if p == nil { + return + } + if !p.IsSetName() { + return FieldSchema_Name_DEFAULT + } + return *p.Name +} + +var FieldSchema_Description_DEFAULT string + +func (p *FieldSchema) GetDescription() (v string) { + if p == nil { + return + } + if !p.IsSetDescription() { + return FieldSchema_Description_DEFAULT + } + return *p.Description +} + +var FieldSchema_ContentType_DEFAULT common.ContentType + +func (p *FieldSchema) GetContentType() (v common.ContentType) { + if p == nil { + return + } + if !p.IsSetContentType() { + return FieldSchema_ContentType_DEFAULT + } + return *p.ContentType +} + +var FieldSchema_DefaultFormat_DEFAULT dataset.FieldDisplayFormat + +func (p *FieldSchema) GetDefaultFormat() (v dataset.FieldDisplayFormat) { + if p == nil { + return + } + if !p.IsSetDefaultFormat() { + return FieldSchema_DefaultFormat_DEFAULT + } + return *p.DefaultFormat +} + +var FieldSchema_TextSchema_DEFAULT string + +func (p *FieldSchema) GetTextSchema() (v string) { + if p == nil { + return + } + if !p.IsSetTextSchema() { + return FieldSchema_TextSchema_DEFAULT + } + return *p.TextSchema +} +func (p *FieldSchema) SetKey(val *string) { + p.Key = val +} +func (p *FieldSchema) SetName(val *string) { + p.Name = val +} +func (p *FieldSchema) SetDescription(val *string) { + p.Description = val +} +func (p *FieldSchema) SetContentType(val *common.ContentType) { + p.ContentType = val +} +func (p *FieldSchema) SetDefaultFormat(val *dataset.FieldDisplayFormat) { + p.DefaultFormat = val +} +func (p *FieldSchema) SetTextSchema(val *string) { + p.TextSchema = val +} + +var fieldIDToName_FieldSchema = map[int16]string{ + 1: "key", + 2: "name", + 3: "description", + 4: "content_type", + 5: "default_format", + 20: "text_schema", +} + +func (p *FieldSchema) IsSetKey() bool { + return p.Key != nil +} + +func (p *FieldSchema) IsSetName() bool { + return p.Name != nil +} + +func (p *FieldSchema) IsSetDescription() bool { + return p.Description != nil +} + +func (p *FieldSchema) IsSetContentType() bool { + return p.ContentType != nil +} + +func (p *FieldSchema) IsSetDefaultFormat() bool { + return p.DefaultFormat != nil +} + +func (p *FieldSchema) IsSetTextSchema() bool { + return p.TextSchema != nil +} + +func (p *FieldSchema) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRING { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.I32 { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 20: + if fieldTypeId == thrift.STRING { + if err = p.ReadField20(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldSchema[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *FieldSchema) ReadField1(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Key = _field + return nil +} +func (p *FieldSchema) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Name = _field + return nil +} +func (p *FieldSchema) ReadField3(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Description = _field + return nil +} +func (p *FieldSchema) ReadField4(iprot thrift.TProtocol) error { + + var _field *common.ContentType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.ContentType = _field + return nil +} +func (p *FieldSchema) ReadField5(iprot thrift.TProtocol) error { + + var _field *dataset.FieldDisplayFormat + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + tmp := dataset.FieldDisplayFormat(v) + _field = &tmp + } + p.DefaultFormat = _field + return nil +} +func (p *FieldSchema) ReadField20(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.TextSchema = _field + return nil +} + +func (p *FieldSchema) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("FieldSchema"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField20(oprot); err != nil { + fieldId = 20 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *FieldSchema) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetKey() { + if err = oprot.WriteFieldBegin("key", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Key); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *FieldSchema) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetName() { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *FieldSchema) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetDescription() { + if err = oprot.WriteFieldBegin("description", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Description); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *FieldSchema) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetContentType() { + if err = oprot.WriteFieldBegin("content_type", thrift.STRING, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.ContentType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *FieldSchema) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetDefaultFormat() { + if err = oprot.WriteFieldBegin("default_format", thrift.I32, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(int32(*p.DefaultFormat)); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *FieldSchema) writeField20(oprot thrift.TProtocol) (err error) { + if p.IsSetTextSchema() { + if err = oprot.WriteFieldBegin("text_schema", thrift.STRING, 20); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.TextSchema); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 20 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 20 end error: ", p), err) +} + +func (p *FieldSchema) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("FieldSchema(%+v)", *p) + +} + +func (p *FieldSchema) DeepEqual(ano *FieldSchema) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Key) { + return false + } + if !p.Field2DeepEqual(ano.Name) { + return false + } + if !p.Field3DeepEqual(ano.Description) { + return false + } + if !p.Field4DeepEqual(ano.ContentType) { + return false + } + if !p.Field5DeepEqual(ano.DefaultFormat) { + return false + } + if !p.Field20DeepEqual(ano.TextSchema) { + return false + } + return true +} + +func (p *FieldSchema) Field1DeepEqual(src *string) bool { + + if p.Key == src { + return true + } else if p.Key == nil || src == nil { + return false + } + if strings.Compare(*p.Key, *src) != 0 { + return false + } + return true +} +func (p *FieldSchema) Field2DeepEqual(src *string) bool { + + if p.Name == src { + return true + } else if p.Name == nil || src == nil { + return false + } + if strings.Compare(*p.Name, *src) != 0 { + return false + } + return true +} +func (p *FieldSchema) Field3DeepEqual(src *string) bool { + + if p.Description == src { + return true + } else if p.Description == nil || src == nil { + return false + } + if strings.Compare(*p.Description, *src) != 0 { + return false + } + return true +} +func (p *FieldSchema) Field4DeepEqual(src *common.ContentType) bool { + + if p.ContentType == src { + return true + } else if p.ContentType == nil || src == nil { + return false + } + if strings.Compare(*p.ContentType, *src) != 0 { + return false + } + return true +} +func (p *FieldSchema) Field5DeepEqual(src *dataset.FieldDisplayFormat) bool { + + if p.DefaultFormat == src { + return true + } else if p.DefaultFormat == nil || src == nil { + return false + } + if *p.DefaultFormat != *src { + return false + } + return true +} +func (p *FieldSchema) Field20DeepEqual(src *string) bool { + + if p.TextSchema == src { + return true + } else if p.TextSchema == nil || src == nil { + return false + } + if strings.Compare(*p.TextSchema, *src) != 0 { + return false + } + return true +} + +type Item struct { + Status ItemStatus `thrift:"status,1,required" frugal:"1,required,string" form:"status,required" json:"status,required" query:"status,required"` + // todo 多模态需要修改 + FieldList []*FieldData `thrift:"field_list,2,optional" frugal:"2,optional,list" form:"field_list" json:"field_list,omitempty" query:"field_list"` + // 错误信息 + Errors []*ItemError `thrift:"errors,3,optional" frugal:"3,optional,list" form:"errors" json:"errors,omitempty" query:"errors"` +} + +func NewItem() *Item { + return &Item{} +} + +func (p *Item) InitDefault() { +} + +func (p *Item) GetStatus() (v ItemStatus) { + if p != nil { + return p.Status + } + return +} + +var Item_FieldList_DEFAULT []*FieldData + +func (p *Item) GetFieldList() (v []*FieldData) { + if p == nil { + return + } + if !p.IsSetFieldList() { + return Item_FieldList_DEFAULT + } + return p.FieldList +} + +var Item_Errors_DEFAULT []*ItemError + +func (p *Item) GetErrors() (v []*ItemError) { + if p == nil { + return + } + if !p.IsSetErrors() { + return Item_Errors_DEFAULT + } + return p.Errors +} +func (p *Item) SetStatus(val ItemStatus) { + p.Status = val +} +func (p *Item) SetFieldList(val []*FieldData) { + p.FieldList = val +} +func (p *Item) SetErrors(val []*ItemError) { + p.Errors = val +} + +var fieldIDToName_Item = map[int16]string{ + 1: "status", + 2: "field_list", + 3: "errors", +} + +func (p *Item) IsSetFieldList() bool { + return p.FieldList != nil +} + +func (p *Item) IsSetErrors() bool { + return p.Errors != nil +} + +func (p *Item) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetStatus bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetStatus = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.LIST { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.LIST { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetStatus { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Item[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_Item[fieldId])) +} + +func (p *Item) ReadField1(iprot thrift.TProtocol) error { + + var _field ItemStatus + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.Status = _field + return nil +} +func (p *Item) ReadField2(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*FieldData, 0, size) + values := make([]FieldData, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldList = _field + return nil +} +func (p *Item) ReadField3(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*ItemError, 0, size) + values := make([]ItemError, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.Errors = _field + return nil +} + +func (p *Item) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("Item"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *Item) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("status", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.Status); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *Item) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldList() { + if err = oprot.WriteFieldBegin("field_list", thrift.LIST, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldList)); err != nil { + return err + } + for _, v := range p.FieldList { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *Item) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetErrors() { + if err = oprot.WriteFieldBegin("errors", thrift.LIST, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Errors)); err != nil { + return err + } + for _, v := range p.Errors { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *Item) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("Item(%+v)", *p) + +} + +func (p *Item) DeepEqual(ano *Item) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Status) { + return false + } + if !p.Field2DeepEqual(ano.FieldList) { + return false + } + if !p.Field3DeepEqual(ano.Errors) { + return false + } + return true +} + +func (p *Item) Field1DeepEqual(src ItemStatus) bool { + + if strings.Compare(p.Status, src) != 0 { + return false + } + return true +} +func (p *Item) Field2DeepEqual(src []*FieldData) bool { + + if len(p.FieldList) != len(src) { + return false + } + for i, v := range p.FieldList { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *Item) Field3DeepEqual(src []*ItemError) bool { + + if len(p.Errors) != len(src) { + return false + } + for i, v := range p.Errors { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +type FieldData struct { + Key *string `thrift:"key,1,optional" frugal:"1,optional,string" form:"key" json:"key,omitempty" query:"key"` + Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty" query:"name"` + Content *Content `thrift:"content,3,optional" frugal:"3,optional,Content" form:"content" json:"content,omitempty" query:"content"` +} + +func NewFieldData() *FieldData { + return &FieldData{} +} + +func (p *FieldData) InitDefault() { +} + +var FieldData_Key_DEFAULT string + +func (p *FieldData) GetKey() (v string) { + if p == nil { + return + } + if !p.IsSetKey() { + return FieldData_Key_DEFAULT + } + return *p.Key +} + +var FieldData_Name_DEFAULT string + +func (p *FieldData) GetName() (v string) { + if p == nil { + return + } + if !p.IsSetName() { + return FieldData_Name_DEFAULT + } + return *p.Name +} + +var FieldData_Content_DEFAULT *Content + +func (p *FieldData) GetContent() (v *Content) { + if p == nil { + return + } + if !p.IsSetContent() { + return FieldData_Content_DEFAULT + } + return p.Content +} +func (p *FieldData) SetKey(val *string) { + p.Key = val +} +func (p *FieldData) SetName(val *string) { + p.Name = val +} +func (p *FieldData) SetContent(val *Content) { + p.Content = val +} + +var fieldIDToName_FieldData = map[int16]string{ + 1: "key", + 2: "name", + 3: "content", +} + +func (p *FieldData) IsSetKey() bool { + return p.Key != nil +} + +func (p *FieldData) IsSetName() bool { + return p.Name != nil +} + +func (p *FieldData) IsSetContent() bool { + return p.Content != nil +} + +func (p *FieldData) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldData[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *FieldData) ReadField1(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Key = _field + return nil +} +func (p *FieldData) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Name = _field + return nil +} +func (p *FieldData) ReadField3(iprot thrift.TProtocol) error { + _field := NewContent() + if err := _field.Read(iprot); err != nil { + return err + } + p.Content = _field + return nil +} + +func (p *FieldData) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("FieldData"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *FieldData) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetKey() { + if err = oprot.WriteFieldBegin("key", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Key); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *FieldData) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetName() { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *FieldData) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetContent() { + if err = oprot.WriteFieldBegin("content", thrift.STRUCT, 3); err != nil { + goto WriteFieldBeginError + } + if err := p.Content.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *FieldData) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("FieldData(%+v)", *p) + +} + +func (p *FieldData) DeepEqual(ano *FieldData) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Key) { + return false + } + if !p.Field2DeepEqual(ano.Name) { + return false + } + if !p.Field3DeepEqual(ano.Content) { + return false + } + return true +} + +func (p *FieldData) Field1DeepEqual(src *string) bool { + + if p.Key == src { + return true + } else if p.Key == nil || src == nil { + return false + } + if strings.Compare(*p.Key, *src) != 0 { + return false + } + return true +} +func (p *FieldData) Field2DeepEqual(src *string) bool { + + if p.Name == src { + return true + } else if p.Name == nil || src == nil { + return false + } + if strings.Compare(*p.Name, *src) != 0 { + return false + } + return true +} +func (p *FieldData) Field3DeepEqual(src *Content) bool { + + if !p.Content.DeepEqual(src) { + return false + } + return true +} + +type Content struct { + ContentType *common.ContentType `thrift:"contentType,1,optional" frugal:"1,optional,string" json:"content_type" form:"contentType" query:"contentType"` + Text *string `thrift:"text,10,optional" frugal:"10,optional,string" json:"text" form:"text" query:"text"` + // 图片内容 + Image *Image `thrift:"image,11,optional" frugal:"11,optional,Image" json:"image" form:"image" query:"image"` + // 图文混排时,图文内容 + MultiPart []*Content `thrift:"multiPart,12,optional" frugal:"12,optional,list" json:"multi_part" form:"multiPart" query:"multiPart"` +} + +func NewContent() *Content { + return &Content{} +} + +func (p *Content) InitDefault() { +} + +var Content_ContentType_DEFAULT common.ContentType + +func (p *Content) GetContentType() (v common.ContentType) { + if p == nil { + return + } + if !p.IsSetContentType() { + return Content_ContentType_DEFAULT + } + return *p.ContentType +} + +var Content_Text_DEFAULT string + +func (p *Content) GetText() (v string) { + if p == nil { + return + } + if !p.IsSetText() { + return Content_Text_DEFAULT + } + return *p.Text +} + +var Content_Image_DEFAULT *Image + +func (p *Content) GetImage() (v *Image) { + if p == nil { + return + } + if !p.IsSetImage() { + return Content_Image_DEFAULT + } + return p.Image +} + +var Content_MultiPart_DEFAULT []*Content + +func (p *Content) GetMultiPart() (v []*Content) { + if p == nil { + return + } + if !p.IsSetMultiPart() { + return Content_MultiPart_DEFAULT + } + return p.MultiPart +} +func (p *Content) SetContentType(val *common.ContentType) { + p.ContentType = val +} +func (p *Content) SetText(val *string) { + p.Text = val +} +func (p *Content) SetImage(val *Image) { + p.Image = val +} +func (p *Content) SetMultiPart(val []*Content) { + p.MultiPart = val +} + +var fieldIDToName_Content = map[int16]string{ + 1: "contentType", + 10: "text", + 11: "image", + 12: "multiPart", +} + +func (p *Content) IsSetContentType() bool { + return p.ContentType != nil +} + +func (p *Content) IsSetText() bool { + return p.Text != nil +} + +func (p *Content) IsSetImage() bool { + return p.Image != nil +} + +func (p *Content) IsSetMultiPart() bool { + return p.MultiPart != nil +} + +func (p *Content) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 10: + if fieldTypeId == thrift.STRING { + if err = p.ReadField10(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 11: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField11(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 12: + if fieldTypeId == thrift.LIST { + if err = p.ReadField12(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Content[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *Content) ReadField1(iprot thrift.TProtocol) error { + + var _field *common.ContentType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.ContentType = _field + return nil +} +func (p *Content) ReadField10(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Text = _field + return nil +} +func (p *Content) ReadField11(iprot thrift.TProtocol) error { + _field := NewImage() + if err := _field.Read(iprot); err != nil { + return err + } + p.Image = _field + return nil +} +func (p *Content) ReadField12(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*Content, 0, size) + values := make([]Content, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.MultiPart = _field + return nil +} + +func (p *Content) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("Content"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField10(oprot); err != nil { + fieldId = 10 + goto WriteFieldError + } + if err = p.writeField11(oprot); err != nil { + fieldId = 11 + goto WriteFieldError + } + if err = p.writeField12(oprot); err != nil { + fieldId = 12 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *Content) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetContentType() { + if err = oprot.WriteFieldBegin("contentType", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.ContentType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *Content) writeField10(oprot thrift.TProtocol) (err error) { + if p.IsSetText() { + if err = oprot.WriteFieldBegin("text", thrift.STRING, 10); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Text); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) +} +func (p *Content) writeField11(oprot thrift.TProtocol) (err error) { + if p.IsSetImage() { + if err = oprot.WriteFieldBegin("image", thrift.STRUCT, 11); err != nil { + goto WriteFieldBeginError + } + if err := p.Image.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) +} +func (p *Content) writeField12(oprot thrift.TProtocol) (err error) { + if p.IsSetMultiPart() { + if err = oprot.WriteFieldBegin("multiPart", thrift.LIST, 12); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.MultiPart)); err != nil { + return err + } + for _, v := range p.MultiPart { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 end error: ", p), err) +} + +func (p *Content) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("Content(%+v)", *p) + +} + +func (p *Content) DeepEqual(ano *Content) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.ContentType) { + return false + } + if !p.Field10DeepEqual(ano.Text) { + return false + } + if !p.Field11DeepEqual(ano.Image) { + return false + } + if !p.Field12DeepEqual(ano.MultiPart) { + return false + } + return true +} + +func (p *Content) Field1DeepEqual(src *common.ContentType) bool { + + if p.ContentType == src { + return true + } else if p.ContentType == nil || src == nil { + return false + } + if strings.Compare(*p.ContentType, *src) != 0 { + return false + } + return true +} +func (p *Content) Field10DeepEqual(src *string) bool { + + if p.Text == src { + return true + } else if p.Text == nil || src == nil { + return false + } + if strings.Compare(*p.Text, *src) != 0 { + return false + } + return true +} +func (p *Content) Field11DeepEqual(src *Image) bool { + + if !p.Image.DeepEqual(src) { + return false + } + return true +} +func (p *Content) Field12DeepEqual(src []*Content) bool { + + if len(p.MultiPart) != len(src) { + return false + } + for i, v := range p.MultiPart { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +type Image struct { + Name *string `thrift:"name,1,optional" frugal:"1,optional,string" json:"name" form:"name" query:"name"` + URL *string `thrift:"url,2,optional" frugal:"2,optional,string" json:"url" form:"url" query:"url"` +} + +func NewImage() *Image { + return &Image{} +} + +func (p *Image) InitDefault() { +} + +var Image_Name_DEFAULT string + +func (p *Image) GetName() (v string) { + if p == nil { + return + } + if !p.IsSetName() { + return Image_Name_DEFAULT + } + return *p.Name +} + +var Image_URL_DEFAULT string + +func (p *Image) GetURL() (v string) { + if p == nil { + return + } + if !p.IsSetURL() { + return Image_URL_DEFAULT + } + return *p.URL +} +func (p *Image) SetName(val *string) { + p.Name = val +} +func (p *Image) SetURL(val *string) { + p.URL = val +} + +var fieldIDToName_Image = map[int16]string{ + 1: "name", + 2: "url", +} + +func (p *Image) IsSetName() bool { + return p.Name != nil +} + +func (p *Image) IsSetURL() bool { + return p.URL != nil +} + +func (p *Image) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Image[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *Image) ReadField1(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Name = _field + return nil +} +func (p *Image) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.URL = _field + return nil +} + +func (p *Image) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("Image"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *Image) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetName() { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *Image) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetURL() { + if err = oprot.WriteFieldBegin("url", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.URL); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *Image) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("Image(%+v)", *p) + +} + +func (p *Image) DeepEqual(ano *Image) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Name) { + return false + } + if !p.Field2DeepEqual(ano.URL) { + return false + } + return true +} + +func (p *Image) Field1DeepEqual(src *string) bool { + + if p.Name == src { + return true + } else if p.Name == nil || src == nil { + return false + } + if strings.Compare(*p.Name, *src) != 0 { + return false + } + return true +} +func (p *Image) Field2DeepEqual(src *string) bool { + + if p.URL == src { + return true + } else if p.URL == nil || src == nil { + return false + } + if strings.Compare(*p.URL, *src) != 0 { + return false + } + return true +} + +type ItemError struct { + Type *dataset.ItemErrorType `thrift:"type,1,optional" frugal:"1,optional,ItemErrorType" form:"type" json:"type,omitempty" query:"type"` + // 有错误的字段名,非必填 + FieldNames []string `thrift:"field_names,2,optional" frugal:"2,optional,list" form:"field_names" json:"field_names,omitempty" query:"field_names"` +} + +func NewItemError() *ItemError { + return &ItemError{} +} + +func (p *ItemError) InitDefault() { +} + +var ItemError_Type_DEFAULT dataset.ItemErrorType + +func (p *ItemError) GetType() (v dataset.ItemErrorType) { + if p == nil { + return + } + if !p.IsSetType() { + return ItemError_Type_DEFAULT + } + return *p.Type +} + +var ItemError_FieldNames_DEFAULT []string + +func (p *ItemError) GetFieldNames() (v []string) { + if p == nil { + return + } + if !p.IsSetFieldNames() { + return ItemError_FieldNames_DEFAULT + } + return p.FieldNames +} +func (p *ItemError) SetType(val *dataset.ItemErrorType) { + p.Type = val +} +func (p *ItemError) SetFieldNames(val []string) { + p.FieldNames = val +} + +var fieldIDToName_ItemError = map[int16]string{ + 1: "type", + 2: "field_names", +} + +func (p *ItemError) IsSetType() bool { + return p.Type != nil +} + +func (p *ItemError) IsSetFieldNames() bool { + return p.FieldNames != nil +} + +func (p *ItemError) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I32 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.LIST { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ItemError[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *ItemError) ReadField1(iprot thrift.TProtocol) error { + + var _field *dataset.ItemErrorType + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + tmp := dataset.ItemErrorType(v) + _field = &tmp + } + p.Type = _field + return nil +} +func (p *ItemError) ReadField2(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]string, 0, size) + for i := 0; i < size; i++ { + + var _elem string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _elem = v + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldNames = _field + return nil +} + +func (p *ItemError) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ItemError"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ItemError) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetType() { + if err = oprot.WriteFieldBegin("type", thrift.I32, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(int32(*p.Type)); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ItemError) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldNames() { + if err = oprot.WriteFieldBegin("field_names", thrift.LIST, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRING, len(p.FieldNames)); err != nil { + return err + } + for _, v := range p.FieldNames { + if err := oprot.WriteString(v); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *ItemError) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ItemError(%+v)", *p) + +} + +func (p *ItemError) DeepEqual(ano *ItemError) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Type) { + return false + } + if !p.Field2DeepEqual(ano.FieldNames) { + return false + } + return true +} + +func (p *ItemError) Field1DeepEqual(src *dataset.ItemErrorType) bool { + + if p.Type == src { + return true + } else if p.Type == nil || src == nil { + return false + } + if *p.Type != *src { + return false + } + return true +} +func (p *ItemError) Field2DeepEqual(src []string) bool { + + if len(p.FieldNames) != len(src) { + return false + } + for i, v := range p.FieldNames { + _src := src[i] + if strings.Compare(v, _src) != 0 { + return false + } + } + return true +} + +type FieldMapping struct { + // 数据集字段约束 + FieldSchema *FieldSchema `thrift:"field_schema,1,required" frugal:"1,required,FieldSchema" form:"field_schema,required" json:"field_schema,required" query:"field_schema,required"` + TraceFieldKey string `thrift:"trace_field_key,2,required" frugal:"2,required,string" form:"trace_field_key,required" json:"trace_field_key,required" query:"trace_field_key,required"` + TraceFieldJsonpath string `thrift:"trace_field_jsonpath,3,required" frugal:"3,required,string" form:"trace_field_jsonpath,required" json:"trace_field_jsonpath,required" query:"trace_field_jsonpath,required"` +} + +func NewFieldMapping() *FieldMapping { + return &FieldMapping{} +} + +func (p *FieldMapping) InitDefault() { +} + +var FieldMapping_FieldSchema_DEFAULT *FieldSchema + +func (p *FieldMapping) GetFieldSchema() (v *FieldSchema) { + if p == nil { + return + } + if !p.IsSetFieldSchema() { + return FieldMapping_FieldSchema_DEFAULT + } + return p.FieldSchema +} + +func (p *FieldMapping) GetTraceFieldKey() (v string) { + if p != nil { + return p.TraceFieldKey + } + return +} + +func (p *FieldMapping) GetTraceFieldJsonpath() (v string) { + if p != nil { + return p.TraceFieldJsonpath + } + return +} +func (p *FieldMapping) SetFieldSchema(val *FieldSchema) { + p.FieldSchema = val +} +func (p *FieldMapping) SetTraceFieldKey(val string) { + p.TraceFieldKey = val +} +func (p *FieldMapping) SetTraceFieldJsonpath(val string) { + p.TraceFieldJsonpath = val +} + +var fieldIDToName_FieldMapping = map[int16]string{ + 1: "field_schema", + 2: "trace_field_key", + 3: "trace_field_jsonpath", +} + +func (p *FieldMapping) IsSetFieldSchema() bool { + return p.FieldSchema != nil +} + +func (p *FieldMapping) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetFieldSchema bool = false + var issetTraceFieldKey bool = false + var issetTraceFieldJsonpath bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetFieldSchema = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetTraceFieldKey = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetTraceFieldJsonpath = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetFieldSchema { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetTraceFieldKey { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetTraceFieldJsonpath { + fieldId = 3 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldMapping[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_FieldMapping[fieldId])) +} + +func (p *FieldMapping) ReadField1(iprot thrift.TProtocol) error { + _field := NewFieldSchema() + if err := _field.Read(iprot); err != nil { + return err + } + p.FieldSchema = _field + return nil +} +func (p *FieldMapping) ReadField2(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.TraceFieldKey = _field + return nil +} +func (p *FieldMapping) ReadField3(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.TraceFieldJsonpath = _field + return nil +} + +func (p *FieldMapping) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("FieldMapping"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *FieldMapping) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("field_schema", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.FieldSchema.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *FieldMapping) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("trace_field_key", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.TraceFieldKey); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *FieldMapping) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("trace_field_jsonpath", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.TraceFieldJsonpath); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *FieldMapping) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("FieldMapping(%+v)", *p) + +} + +func (p *FieldMapping) DeepEqual(ano *FieldMapping) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.FieldSchema) { + return false + } + if !p.Field2DeepEqual(ano.TraceFieldKey) { + return false + } + if !p.Field3DeepEqual(ano.TraceFieldJsonpath) { + return false + } + return true +} + +func (p *FieldMapping) Field1DeepEqual(src *FieldSchema) bool { + + if !p.FieldSchema.DeepEqual(src) { + return false + } + return true +} +func (p *FieldMapping) Field2DeepEqual(src string) bool { + + if strings.Compare(p.TraceFieldKey, src) != 0 { + return false + } + return true +} +func (p *FieldMapping) Field3DeepEqual(src string) bool { + + if strings.Compare(p.TraceFieldJsonpath, src) != 0 { + return false + } + return true +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/dataset/export_dataset_validator.go b/backend/kitex_gen/coze/loop/observability/domain/dataset/export_dataset_validator.go new file mode 100644 index 000000000..ae9b5f219 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/domain/dataset/export_dataset_validator.go @@ -0,0 +1,83 @@ +// Code generated by Validator v0.2.6. DO NOT EDIT. + +package dataset + +import ( + "bytes" + "fmt" + "reflect" + "regexp" + "strings" + "time" +) + +// unused protection +var ( + _ = fmt.Formatter(nil) + _ = (*bytes.Buffer)(nil) + _ = (*strings.Builder)(nil) + _ = reflect.Type(nil) + _ = (*regexp.Regexp)(nil) + _ = time.Nanosecond +) + +func (p *DatasetSchema) IsValid() error { + return nil +} +func (p *FieldSchema) IsValid() error { + if p.Name != nil { + if len(*p.Name) < int(1) { + return fmt.Errorf("field Name min_len rule failed, current value: %d", len(*p.Name)) + } + if len(*p.Name) > int(128) { + return fmt.Errorf("field Name max_len rule failed, current value: %d", len(*p.Name)) + } + } + if p.Description != nil { + if len(*p.Description) > int(1024) { + return fmt.Errorf("field Description max_len rule failed, current value: %d", len(*p.Description)) + } + } + if p.ContentType == nil { + return fmt.Errorf("field ContentType not_nil rule failed") + } + if p.DefaultFormat != nil { + if p.DefaultFormat.String() == "" { + return fmt.Errorf("field DefaultFormat defined_only rule failed") + } + } + return nil +} +func (p *Item) IsValid() error { + return nil +} +func (p *FieldData) IsValid() error { + if p.Content != nil { + if err := p.Content.IsValid(); err != nil { + return fmt.Errorf("field Content not valid, %w", err) + } + } + return nil +} +func (p *Content) IsValid() error { + if p.Image != nil { + if err := p.Image.IsValid(); err != nil { + return fmt.Errorf("field Image not valid, %w", err) + } + } + return nil +} +func (p *Image) IsValid() error { + return nil +} +func (p *ItemError) IsValid() error { + return nil +} +func (p *FieldMapping) IsValid() error { + if p.FieldSchema != nil { + if err := p.FieldSchema.IsValid(); err != nil { + return fmt.Errorf("field FieldSchema not valid, %w", err) + } + } + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/dataset/k-export_dataset.go b/backend/kitex_gen/coze/loop/observability/domain/dataset/k-export_dataset.go new file mode 100644 index 000000000..617ca5cd4 --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/domain/dataset/k-export_dataset.go @@ -0,0 +1,2015 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. + +package dataset + +import ( + "bytes" + "fmt" + "reflect" + "strings" + + "github.com/cloudwego/gopkg/protocol/thrift" + kutils "github.com/cloudwego/kitex/pkg/utils" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/domain/dataset" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" +) + +var ( + _ = dataset.KitexUnusedProtection + _ = common.KitexUnusedProtection +) + +// unused protection +var ( + _ = fmt.Formatter(nil) + _ = (*bytes.Buffer)(nil) + _ = (*strings.Builder)(nil) + _ = reflect.Type(nil) + _ = thrift.STOP +) + +func (p *DatasetSchema) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 10: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField10(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DatasetSchema[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *DatasetSchema) FastReadField10(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*FieldSchema, 0, size) + values := make([]FieldSchema, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldSchemas = _field + return offset, nil +} + +func (p *DatasetSchema) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *DatasetSchema) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField10(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *DatasetSchema) BLength() int { + l := 0 + if p != nil { + l += p.field10Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *DatasetSchema) fastWriteField10(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFieldSchemas() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 10) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldSchemas { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *DatasetSchema) field10Length() int { + l := 0 + if p.IsSetFieldSchemas() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldSchemas { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *DatasetSchema) DeepCopy(s interface{}) error { + src, ok := s.(*DatasetSchema) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.FieldSchemas != nil { + p.FieldSchemas = make([]*FieldSchema, 0, len(src.FieldSchemas)) + for _, elem := range src.FieldSchemas { + var _elem *FieldSchema + if elem != nil { + _elem = &FieldSchema{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldSchemas = append(p.FieldSchemas, _elem) + } + } + + return nil +} + +func (p *FieldSchema) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 20: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField20(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldSchema[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *FieldSchema) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Key = _field + return offset, nil +} + +func (p *FieldSchema) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Name = _field + return offset, nil +} + +func (p *FieldSchema) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Description = _field + return offset, nil +} + +func (p *FieldSchema) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *common.ContentType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ContentType = _field + return offset, nil +} + +func (p *FieldSchema) FastReadField5(buf []byte) (int, error) { + offset := 0 + + var _field *dataset.FieldDisplayFormat + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + + tmp := dataset.FieldDisplayFormat(v) + _field = &tmp + } + p.DefaultFormat = _field + return offset, nil +} + +func (p *FieldSchema) FastReadField20(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TextSchema = _field + return offset, nil +} + +func (p *FieldSchema) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *FieldSchema) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField20(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *FieldSchema) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field20Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *FieldSchema) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetKey() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Key) + } + return offset +} + +func (p *FieldSchema) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + } + return offset +} + +func (p *FieldSchema) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDescription() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Description) + } + return offset +} + +func (p *FieldSchema) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetContentType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ContentType) + } + return offset +} + +func (p *FieldSchema) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDefaultFormat() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 5) + offset += thrift.Binary.WriteI32(buf[offset:], int32(*p.DefaultFormat)) + } + return offset +} + +func (p *FieldSchema) fastWriteField20(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTextSchema() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 20) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.TextSchema) + } + return offset +} + +func (p *FieldSchema) field1Length() int { + l := 0 + if p.IsSetKey() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Key) + } + return l +} + +func (p *FieldSchema) field2Length() int { + l := 0 + if p.IsSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Name) + } + return l +} + +func (p *FieldSchema) field3Length() int { + l := 0 + if p.IsSetDescription() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Description) + } + return l +} + +func (p *FieldSchema) field4Length() int { + l := 0 + if p.IsSetContentType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.ContentType) + } + return l +} + +func (p *FieldSchema) field5Length() int { + l := 0 + if p.IsSetDefaultFormat() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *FieldSchema) field20Length() int { + l := 0 + if p.IsSetTextSchema() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.TextSchema) + } + return l +} + +func (p *FieldSchema) DeepCopy(s interface{}) error { + src, ok := s.(*FieldSchema) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Key != nil { + var tmp string + if *src.Key != "" { + tmp = kutils.StringDeepCopy(*src.Key) + } + p.Key = &tmp + } + + if src.Name != nil { + var tmp string + if *src.Name != "" { + tmp = kutils.StringDeepCopy(*src.Name) + } + p.Name = &tmp + } + + if src.Description != nil { + var tmp string + if *src.Description != "" { + tmp = kutils.StringDeepCopy(*src.Description) + } + p.Description = &tmp + } + + if src.ContentType != nil { + tmp := *src.ContentType + p.ContentType = &tmp + } + + if src.DefaultFormat != nil { + tmp := *src.DefaultFormat + p.DefaultFormat = &tmp + } + + if src.TextSchema != nil { + var tmp string + if *src.TextSchema != "" { + tmp = kutils.StringDeepCopy(*src.TextSchema) + } + p.TextSchema = &tmp + } + + return nil +} + +func (p *Item) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetStatus bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetStatus = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetStatus { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Item[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_Item[fieldId])) +} + +func (p *Item) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field ItemStatus + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.Status = _field + return offset, nil +} + +func (p *Item) FastReadField2(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*FieldData, 0, size) + values := make([]FieldData, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldList = _field + return offset, nil +} + +func (p *Item) FastReadField3(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*ItemError, 0, size) + values := make([]ItemError, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.Errors = _field + return offset, nil +} + +func (p *Item) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *Item) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *Item) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *Item) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.Status) + return offset +} + +func (p *Item) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFieldList() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldList { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *Item) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetErrors() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 3) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.Errors { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *Item) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.Status) + return l +} + +func (p *Item) field2Length() int { + l := 0 + if p.IsSetFieldList() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldList { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *Item) field3Length() int { + l := 0 + if p.IsSetErrors() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.Errors { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *Item) DeepCopy(s interface{}) error { + src, ok := s.(*Item) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.Status = src.Status + + if src.FieldList != nil { + p.FieldList = make([]*FieldData, 0, len(src.FieldList)) + for _, elem := range src.FieldList { + var _elem *FieldData + if elem != nil { + _elem = &FieldData{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldList = append(p.FieldList, _elem) + } + } + + if src.Errors != nil { + p.Errors = make([]*ItemError, 0, len(src.Errors)) + for _, elem := range src.Errors { + var _elem *ItemError + if elem != nil { + _elem = &ItemError{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.Errors = append(p.Errors, _elem) + } + } + + return nil +} + +func (p *FieldData) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldData[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *FieldData) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Key = _field + return offset, nil +} + +func (p *FieldData) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Name = _field + return offset, nil +} + +func (p *FieldData) FastReadField3(buf []byte) (int, error) { + offset := 0 + _field := NewContent() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Content = _field + return offset, nil +} + +func (p *FieldData) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *FieldData) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *FieldData) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *FieldData) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetKey() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Key) + } + return offset +} + +func (p *FieldData) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + } + return offset +} + +func (p *FieldData) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetContent() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 3) + offset += p.Content.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *FieldData) field1Length() int { + l := 0 + if p.IsSetKey() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Key) + } + return l +} + +func (p *FieldData) field2Length() int { + l := 0 + if p.IsSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Name) + } + return l +} + +func (p *FieldData) field3Length() int { + l := 0 + if p.IsSetContent() { + l += thrift.Binary.FieldBeginLength() + l += p.Content.BLength() + } + return l +} + +func (p *FieldData) DeepCopy(s interface{}) error { + src, ok := s.(*FieldData) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Key != nil { + var tmp string + if *src.Key != "" { + tmp = kutils.StringDeepCopy(*src.Key) + } + p.Key = &tmp + } + + if src.Name != nil { + var tmp string + if *src.Name != "" { + tmp = kutils.StringDeepCopy(*src.Name) + } + p.Name = &tmp + } + + var _content *Content + if src.Content != nil { + _content = &Content{} + if err := _content.DeepCopy(src.Content); err != nil { + return err + } + } + p.Content = _content + + return nil +} + +func (p *Content) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 10: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField10(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 11: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField11(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 12: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField12(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Content[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *Content) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *common.ContentType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ContentType = _field + return offset, nil +} + +func (p *Content) FastReadField10(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Text = _field + return offset, nil +} + +func (p *Content) FastReadField11(buf []byte) (int, error) { + offset := 0 + _field := NewImage() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Image = _field + return offset, nil +} + +func (p *Content) FastReadField12(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*Content, 0, size) + values := make([]Content, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.MultiPart = _field + return offset, nil +} + +func (p *Content) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *Content) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField10(buf[offset:], w) + offset += p.fastWriteField11(buf[offset:], w) + offset += p.fastWriteField12(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *Content) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field10Length() + l += p.field11Length() + l += p.field12Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *Content) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetContentType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ContentType) + } + return offset +} + +func (p *Content) fastWriteField10(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetText() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 10) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Text) + } + return offset +} + +func (p *Content) fastWriteField11(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetImage() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 11) + offset += p.Image.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *Content) fastWriteField12(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetMultiPart() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 12) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.MultiPart { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *Content) field1Length() int { + l := 0 + if p.IsSetContentType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.ContentType) + } + return l +} + +func (p *Content) field10Length() int { + l := 0 + if p.IsSetText() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Text) + } + return l +} + +func (p *Content) field11Length() int { + l := 0 + if p.IsSetImage() { + l += thrift.Binary.FieldBeginLength() + l += p.Image.BLength() + } + return l +} + +func (p *Content) field12Length() int { + l := 0 + if p.IsSetMultiPart() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.MultiPart { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *Content) DeepCopy(s interface{}) error { + src, ok := s.(*Content) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.ContentType != nil { + tmp := *src.ContentType + p.ContentType = &tmp + } + + if src.Text != nil { + var tmp string + if *src.Text != "" { + tmp = kutils.StringDeepCopy(*src.Text) + } + p.Text = &tmp + } + + var _image *Image + if src.Image != nil { + _image = &Image{} + if err := _image.DeepCopy(src.Image); err != nil { + return err + } + } + p.Image = _image + + if src.MultiPart != nil { + p.MultiPart = make([]*Content, 0, len(src.MultiPart)) + for _, elem := range src.MultiPart { + var _elem *Content + if elem != nil { + _elem = &Content{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.MultiPart = append(p.MultiPart, _elem) + } + } + + return nil +} + +func (p *Image) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Image[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *Image) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Name = _field + return offset, nil +} + +func (p *Image) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.URL = _field + return offset, nil +} + +func (p *Image) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *Image) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *Image) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *Image) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + } + return offset +} + +func (p *Image) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetURL() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.URL) + } + return offset +} + +func (p *Image) field1Length() int { + l := 0 + if p.IsSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Name) + } + return l +} + +func (p *Image) field2Length() int { + l := 0 + if p.IsSetURL() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.URL) + } + return l +} + +func (p *Image) DeepCopy(s interface{}) error { + src, ok := s.(*Image) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Name != nil { + var tmp string + if *src.Name != "" { + tmp = kutils.StringDeepCopy(*src.Name) + } + p.Name = &tmp + } + + if src.URL != nil { + var tmp string + if *src.URL != "" { + tmp = kutils.StringDeepCopy(*src.URL) + } + p.URL = &tmp + } + + return nil +} + +func (p *ItemError) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ItemError[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *ItemError) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *dataset.ItemErrorType + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + + tmp := dataset.ItemErrorType(v) + _field = &tmp + } + p.Type = _field + return offset, nil +} + +func (p *ItemError) FastReadField2(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]string, 0, size) + for i := 0; i < size; i++ { + var _elem string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _elem = v + } + + _field = append(_field, _elem) + } + p.FieldNames = _field + return offset, nil +} + +func (p *ItemError) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ItemError) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ItemError) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ItemError) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 1) + offset += thrift.Binary.WriteI32(buf[offset:], int32(*p.Type)) + } + return offset +} + +func (p *ItemError) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFieldNames() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldNames { + length++ + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, v) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRING, length) + } + return offset +} + +func (p *ItemError) field1Length() int { + l := 0 + if p.IsSetType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *ItemError) field2Length() int { + l := 0 + if p.IsSetFieldNames() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldNames { + _ = v + l += thrift.Binary.StringLengthNocopy(v) + } + } + return l +} + +func (p *ItemError) DeepCopy(s interface{}) error { + src, ok := s.(*ItemError) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Type != nil { + tmp := *src.Type + p.Type = &tmp + } + + if src.FieldNames != nil { + p.FieldNames = make([]string, 0, len(src.FieldNames)) + for _, elem := range src.FieldNames { + var _elem string + if elem != "" { + _elem = kutils.StringDeepCopy(elem) + } + p.FieldNames = append(p.FieldNames, _elem) + } + } + + return nil +} + +func (p *FieldMapping) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetFieldSchema bool = false + var issetTraceFieldKey bool = false + var issetTraceFieldJsonpath bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetFieldSchema = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTraceFieldKey = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTraceFieldJsonpath = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetFieldSchema { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetTraceFieldKey { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetTraceFieldJsonpath { + fieldId = 3 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldMapping[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_FieldMapping[fieldId])) +} + +func (p *FieldMapping) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewFieldSchema() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.FieldSchema = _field + return offset, nil +} + +func (p *FieldMapping) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TraceFieldKey = _field + return offset, nil +} + +func (p *FieldMapping) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TraceFieldJsonpath = _field + return offset, nil +} + +func (p *FieldMapping) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *FieldMapping) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *FieldMapping) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *FieldMapping) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.FieldSchema.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *FieldMapping) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TraceFieldKey) + return offset +} + +func (p *FieldMapping) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TraceFieldJsonpath) + return offset +} + +func (p *FieldMapping) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.FieldSchema.BLength() + return l +} + +func (p *FieldMapping) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.TraceFieldKey) + return l +} + +func (p *FieldMapping) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.TraceFieldJsonpath) + return l +} + +func (p *FieldMapping) DeepCopy(s interface{}) error { + src, ok := s.(*FieldMapping) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _fieldSchema *FieldSchema + if src.FieldSchema != nil { + _fieldSchema = &FieldSchema{} + if err := _fieldSchema.DeepCopy(src.FieldSchema); err != nil { + return err + } + } + p.FieldSchema = _fieldSchema + + if src.TraceFieldKey != "" { + p.TraceFieldKey = kutils.StringDeepCopy(src.TraceFieldKey) + } + + if src.TraceFieldJsonpath != "" { + p.TraceFieldJsonpath = kutils.StringDeepCopy(src.TraceFieldJsonpath) + } + + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go index 5894526dd..9079d147d 100644 --- a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go +++ b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/client.go @@ -24,6 +24,8 @@ type Client interface { UpdateManualAnnotation(ctx context.Context, req *trace.UpdateManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.UpdateManualAnnotationResponse, err error) DeleteManualAnnotation(ctx context.Context, req *trace.DeleteManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.DeleteManualAnnotationResponse, err error) ListAnnotations(ctx context.Context, req *trace.ListAnnotationsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationsResponse, err error) + ExportTracesToDataset(ctx context.Context, req *trace.ExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.ExportTracesToDatasetResponse, err error) + PreviewExportTracesToDataset(ctx context.Context, req *trace.PreviewExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.PreviewExportTracesToDatasetResponse, err error) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) @@ -123,6 +125,16 @@ func (p *kObservabilityTraceServiceClient) ListAnnotations(ctx context.Context, return p.kClient.ListAnnotations(ctx, req) } +func (p *kObservabilityTraceServiceClient) ExportTracesToDataset(ctx context.Context, req *trace.ExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.ExportTracesToDatasetResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ExportTracesToDataset(ctx, req) +} + +func (p *kObservabilityTraceServiceClient) PreviewExportTracesToDataset(ctx context.Context, req *trace.PreviewExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.PreviewExportTracesToDatasetResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.PreviewExportTracesToDataset(ctx, req) +} + func (p *kObservabilityTraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) { ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.ChangeEvaluatorScore(ctx, req) diff --git a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go index d06fe43ea..30bdc7a2f 100644 --- a/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go +++ b/backend/kitex_gen/coze/loop/observability/observabilitytraceservice/observabilitytraceservice.go @@ -105,6 +105,20 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), + "ExportTracesToDataset": kitex.NewMethodInfo( + exportTracesToDatasetHandler, + newTraceServiceExportTracesToDatasetArgs, + newTraceServiceExportTracesToDatasetResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "PreviewExportTracesToDataset": kitex.NewMethodInfo( + previewExportTracesToDatasetHandler, + newTraceServicePreviewExportTracesToDatasetArgs, + newTraceServicePreviewExportTracesToDatasetResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), "ChangeEvaluatorScore": kitex.NewMethodInfo( changeEvaluatorScoreHandler, newTraceServiceChangeEvaluatorScoreArgs, @@ -406,6 +420,44 @@ func newTraceServiceListAnnotationsResult() interface{} { return trace.NewTraceServiceListAnnotationsResult() } +func exportTracesToDatasetHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceExportTracesToDatasetArgs) + realResult := result.(*trace.TraceServiceExportTracesToDatasetResult) + success, err := handler.(trace.TraceService).ExportTracesToDataset(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceExportTracesToDatasetArgs() interface{} { + return trace.NewTraceServiceExportTracesToDatasetArgs() +} + +func newTraceServiceExportTracesToDatasetResult() interface{} { + return trace.NewTraceServiceExportTracesToDatasetResult() +} + +func previewExportTracesToDatasetHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServicePreviewExportTracesToDatasetArgs) + realResult := result.(*trace.TraceServicePreviewExportTracesToDatasetResult) + success, err := handler.(trace.TraceService).PreviewExportTracesToDataset(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServicePreviewExportTracesToDatasetArgs() interface{} { + return trace.NewTraceServicePreviewExportTracesToDatasetArgs() +} + +func newTraceServicePreviewExportTracesToDatasetResult() interface{} { + return trace.NewTraceServicePreviewExportTracesToDatasetResult() +} + func changeEvaluatorScoreHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { realArg := arg.(*trace.TraceServiceChangeEvaluatorScoreArgs) realResult := result.(*trace.TraceServiceChangeEvaluatorScoreResult) @@ -605,6 +657,26 @@ func (p *kClient) ListAnnotations(ctx context.Context, req *trace.ListAnnotation return _result.GetSuccess(), nil } +func (p *kClient) ExportTracesToDataset(ctx context.Context, req *trace.ExportTracesToDatasetRequest) (r *trace.ExportTracesToDatasetResponse, err error) { + var _args trace.TraceServiceExportTracesToDatasetArgs + _args.Req = req + var _result trace.TraceServiceExportTracesToDatasetResult + if err = p.c.Call(ctx, "ExportTracesToDataset", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) PreviewExportTracesToDataset(ctx context.Context, req *trace.PreviewExportTracesToDatasetRequest) (r *trace.PreviewExportTracesToDatasetResponse, err error) { + var _args trace.TraceServicePreviewExportTracesToDatasetArgs + _args.Req = req + var _result trace.TraceServicePreviewExportTracesToDatasetResult + if err = p.c.Call(ctx, "PreviewExportTracesToDataset", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + func (p *kClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) (r *trace.ChangeEvaluatorScoreResponse, err error) { var _args trace.TraceServiceChangeEvaluatorScoreArgs _args.Req = req diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index 445df383f..3864df85c 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -7,8 +7,10 @@ import ( "fmt" "github.com/apache/thrift/lib/go/thrift" "github.com/coze-dev/coze-loop/backend/kitex_gen/base" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/annotation" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" @@ -11029,117 +11031,186 @@ func (p *ListAnnotationsResponse) Field255DeepEqual(src *base.BaseResp) bool { return true } -type ChangeEvaluatorScoreRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - EvaluatorRecordID int64 `thrift:"evaluator_record_id,2,required" frugal:"2,required,i64" json:"evaluator_record_id,required" query:"evaluator_record_id,required"` - SpanID string `thrift:"span_id,3,required" frugal:"3,required,string" json:"span_id,required" query:"span_id,required"` - StartTime int64 `thrift:"start_time,4,required" frugal:"4,required,i64" json:"start_time" query:"start_time,required" ` - Correction *annotation.Correction `thrift:"correction,5,required" frugal:"5,required,annotation.Correction" json:"correction,required" query:"correction,required"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` +type ExportTracesToDatasetRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + SpanIds []*SpanID `thrift:"span_ids,2,required" frugal:"2,required,list" form:"span_ids,required" json:"span_ids,required"` + Category dataset.DatasetCategory `thrift:"category,3,required" frugal:"3,required,DatasetCategory" form:"category,required" json:"category,required"` + Config *DatasetConfig `thrift:"config,4,required" frugal:"4,required,DatasetConfig" form:"config,required" json:"config,required"` + StartTime int64 `thrift:"start_time,5,required" frugal:"5,required,i64" json:"start_time" form:"start_time,required" ` + EndTime int64 `thrift:"end_time,6,required" frugal:"6,required,i64" json:"end_time" form:"end_time,required" ` + PlatformType *common.PlatformType `thrift:"platform_type,7,optional" frugal:"7,optional,string" form:"platform_type" json:"platform_type,omitempty"` + // 导入方式,不填默认为追加 + ExportType dataset0.ExportType `thrift:"export_type,8,required" frugal:"8,required,string" form:"export_type,required" json:"export_type,required"` + FieldMappings []*dataset0.FieldMapping `thrift:"field_mappings,9,optional" frugal:"9,optional,list" form:"field_mappings" json:"field_mappings,omitempty"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } -func NewChangeEvaluatorScoreRequest() *ChangeEvaluatorScoreRequest { - return &ChangeEvaluatorScoreRequest{} +func NewExportTracesToDatasetRequest() *ExportTracesToDatasetRequest { + return &ExportTracesToDatasetRequest{} } -func (p *ChangeEvaluatorScoreRequest) InitDefault() { +func (p *ExportTracesToDatasetRequest) InitDefault() { } -func (p *ChangeEvaluatorScoreRequest) GetWorkspaceID() (v int64) { +func (p *ExportTracesToDatasetRequest) GetWorkspaceID() (v int64) { if p != nil { return p.WorkspaceID } return } -func (p *ChangeEvaluatorScoreRequest) GetEvaluatorRecordID() (v int64) { +func (p *ExportTracesToDatasetRequest) GetSpanIds() (v []*SpanID) { if p != nil { - return p.EvaluatorRecordID + return p.SpanIds } return } -func (p *ChangeEvaluatorScoreRequest) GetSpanID() (v string) { +func (p *ExportTracesToDatasetRequest) GetCategory() (v dataset.DatasetCategory) { if p != nil { - return p.SpanID + return p.Category } return } -func (p *ChangeEvaluatorScoreRequest) GetStartTime() (v int64) { +var ExportTracesToDatasetRequest_Config_DEFAULT *DatasetConfig + +func (p *ExportTracesToDatasetRequest) GetConfig() (v *DatasetConfig) { + if p == nil { + return + } + if !p.IsSetConfig() { + return ExportTracesToDatasetRequest_Config_DEFAULT + } + return p.Config +} + +func (p *ExportTracesToDatasetRequest) GetStartTime() (v int64) { if p != nil { return p.StartTime } return } -var ChangeEvaluatorScoreRequest_Correction_DEFAULT *annotation.Correction +func (p *ExportTracesToDatasetRequest) GetEndTime() (v int64) { + if p != nil { + return p.EndTime + } + return +} -func (p *ChangeEvaluatorScoreRequest) GetCorrection() (v *annotation.Correction) { +var ExportTracesToDatasetRequest_PlatformType_DEFAULT common.PlatformType + +func (p *ExportTracesToDatasetRequest) GetPlatformType() (v common.PlatformType) { if p == nil { return } - if !p.IsSetCorrection() { - return ChangeEvaluatorScoreRequest_Correction_DEFAULT + if !p.IsSetPlatformType() { + return ExportTracesToDatasetRequest_PlatformType_DEFAULT } - return p.Correction + return *p.PlatformType } -var ChangeEvaluatorScoreRequest_Base_DEFAULT *base.Base +func (p *ExportTracesToDatasetRequest) GetExportType() (v dataset0.ExportType) { + if p != nil { + return p.ExportType + } + return +} -func (p *ChangeEvaluatorScoreRequest) GetBase() (v *base.Base) { +var ExportTracesToDatasetRequest_FieldMappings_DEFAULT []*dataset0.FieldMapping + +func (p *ExportTracesToDatasetRequest) GetFieldMappings() (v []*dataset0.FieldMapping) { + if p == nil { + return + } + if !p.IsSetFieldMappings() { + return ExportTracesToDatasetRequest_FieldMappings_DEFAULT + } + return p.FieldMappings +} + +var ExportTracesToDatasetRequest_Base_DEFAULT *base.Base + +func (p *ExportTracesToDatasetRequest) GetBase() (v *base.Base) { if p == nil { return } if !p.IsSetBase() { - return ChangeEvaluatorScoreRequest_Base_DEFAULT + return ExportTracesToDatasetRequest_Base_DEFAULT } return p.Base } -func (p *ChangeEvaluatorScoreRequest) SetWorkspaceID(val int64) { +func (p *ExportTracesToDatasetRequest) SetWorkspaceID(val int64) { p.WorkspaceID = val } -func (p *ChangeEvaluatorScoreRequest) SetEvaluatorRecordID(val int64) { - p.EvaluatorRecordID = val +func (p *ExportTracesToDatasetRequest) SetSpanIds(val []*SpanID) { + p.SpanIds = val } -func (p *ChangeEvaluatorScoreRequest) SetSpanID(val string) { - p.SpanID = val +func (p *ExportTracesToDatasetRequest) SetCategory(val dataset.DatasetCategory) { + p.Category = val } -func (p *ChangeEvaluatorScoreRequest) SetStartTime(val int64) { +func (p *ExportTracesToDatasetRequest) SetConfig(val *DatasetConfig) { + p.Config = val +} +func (p *ExportTracesToDatasetRequest) SetStartTime(val int64) { p.StartTime = val } -func (p *ChangeEvaluatorScoreRequest) SetCorrection(val *annotation.Correction) { - p.Correction = val +func (p *ExportTracesToDatasetRequest) SetEndTime(val int64) { + p.EndTime = val } -func (p *ChangeEvaluatorScoreRequest) SetBase(val *base.Base) { +func (p *ExportTracesToDatasetRequest) SetPlatformType(val *common.PlatformType) { + p.PlatformType = val +} +func (p *ExportTracesToDatasetRequest) SetExportType(val dataset0.ExportType) { + p.ExportType = val +} +func (p *ExportTracesToDatasetRequest) SetFieldMappings(val []*dataset0.FieldMapping) { + p.FieldMappings = val +} +func (p *ExportTracesToDatasetRequest) SetBase(val *base.Base) { p.Base = val } -var fieldIDToName_ChangeEvaluatorScoreRequest = map[int16]string{ +var fieldIDToName_ExportTracesToDatasetRequest = map[int16]string{ 1: "workspace_id", - 2: "evaluator_record_id", - 3: "span_id", - 4: "start_time", - 5: "correction", + 2: "span_ids", + 3: "category", + 4: "config", + 5: "start_time", + 6: "end_time", + 7: "platform_type", + 8: "export_type", + 9: "field_mappings", 255: "Base", } -func (p *ChangeEvaluatorScoreRequest) IsSetCorrection() bool { - return p.Correction != nil +func (p *ExportTracesToDatasetRequest) IsSetConfig() bool { + return p.Config != nil } -func (p *ChangeEvaluatorScoreRequest) IsSetBase() bool { +func (p *ExportTracesToDatasetRequest) IsSetPlatformType() bool { + return p.PlatformType != nil +} + +func (p *ExportTracesToDatasetRequest) IsSetFieldMappings() bool { + return p.FieldMappings != nil +} + +func (p *ExportTracesToDatasetRequest) IsSetBase() bool { return p.Base != nil } -func (p *ChangeEvaluatorScoreRequest) Read(iprot thrift.TProtocol) (err error) { +func (p *ExportTracesToDatasetRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 var issetWorkspaceID bool = false - var issetEvaluatorRecordID bool = false - var issetSpanID bool = false + var issetSpanIds bool = false + var issetCategory bool = false + var issetConfig bool = false var issetStartTime bool = false - var issetCorrection bool = false + var issetEndTime bool = false + var issetExportType bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -11165,38 +11236,72 @@ func (p *ChangeEvaluatorScoreRequest) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 2: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.LIST { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } - issetEvaluatorRecordID = true + issetSpanIds = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 3: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I32 { if err = p.ReadField3(iprot); err != nil { goto ReadFieldError } - issetSpanID = true + issetCategory = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 4: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRUCT { if err = p.ReadField4(iprot); err != nil { goto ReadFieldError } - issetStartTime = true + issetConfig = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 5: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.I64 { if err = p.ReadField5(iprot); err != nil { goto ReadFieldError } - issetCorrection = true + issetStartTime = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.I64 { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + issetEndTime = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 7: + if fieldTypeId == thrift.STRING { + if err = p.ReadField7(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 8: + if fieldTypeId == thrift.STRING { + if err = p.ReadField8(iprot); err != nil { + goto ReadFieldError + } + issetExportType = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 9: + if fieldTypeId == thrift.LIST { + if err = p.ReadField9(iprot); err != nil { + goto ReadFieldError + } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -11226,32 +11331,42 @@ func (p *ChangeEvaluatorScoreRequest) Read(iprot thrift.TProtocol) (err error) { goto RequiredFieldNotSetError } - if !issetEvaluatorRecordID { + if !issetSpanIds { fieldId = 2 goto RequiredFieldNotSetError } - if !issetSpanID { + if !issetCategory { fieldId = 3 goto RequiredFieldNotSetError } - if !issetStartTime { + if !issetConfig { fieldId = 4 goto RequiredFieldNotSetError } - if !issetCorrection { + if !issetStartTime { fieldId = 5 goto RequiredFieldNotSetError } + + if !issetEndTime { + fieldId = 6 + goto RequiredFieldNotSetError + } + + if !issetExportType { + fieldId = 8 + goto RequiredFieldNotSetError + } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreRequest[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExportTracesToDatasetRequest[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -11260,10 +11375,10 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreRequest[fieldId])) + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ExportTracesToDatasetRequest[fieldId])) } -func (p *ChangeEvaluatorScoreRequest) ReadField1(iprot thrift.TProtocol) error { +func (p *ExportTracesToDatasetRequest) ReadField1(iprot thrift.TProtocol) error { var _field int64 if v, err := iprot.ReadI64(); err != nil { @@ -11274,7 +11389,49 @@ func (p *ChangeEvaluatorScoreRequest) ReadField1(iprot thrift.TProtocol) error { p.WorkspaceID = _field return nil } -func (p *ChangeEvaluatorScoreRequest) ReadField2(iprot thrift.TProtocol) error { +func (p *ExportTracesToDatasetRequest) ReadField2(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*SpanID, 0, size) + values := make([]SpanID, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.SpanIds = _field + return nil +} +func (p *ExportTracesToDatasetRequest) ReadField3(iprot thrift.TProtocol) error { + + var _field dataset.DatasetCategory + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + _field = dataset.DatasetCategory(v) + } + p.Category = _field + return nil +} +func (p *ExportTracesToDatasetRequest) ReadField4(iprot thrift.TProtocol) error { + _field := NewDatasetConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.Config = _field + return nil +} +func (p *ExportTracesToDatasetRequest) ReadField5(iprot thrift.TProtocol) error { var _field int64 if v, err := iprot.ReadI64(); err != nil { @@ -11282,40 +11439,66 @@ func (p *ChangeEvaluatorScoreRequest) ReadField2(iprot thrift.TProtocol) error { } else { _field = v } - p.EvaluatorRecordID = _field + p.StartTime = _field return nil } -func (p *ChangeEvaluatorScoreRequest) ReadField3(iprot thrift.TProtocol) error { +func (p *ExportTracesToDatasetRequest) ReadField6(iprot thrift.TProtocol) error { - var _field string - if v, err := iprot.ReadString(); err != nil { + var _field int64 + if v, err := iprot.ReadI64(); err != nil { return err } else { _field = v } - p.SpanID = _field + p.EndTime = _field return nil } -func (p *ChangeEvaluatorScoreRequest) ReadField4(iprot thrift.TProtocol) error { +func (p *ExportTracesToDatasetRequest) ReadField7(iprot thrift.TProtocol) error { - var _field int64 - if v, err := iprot.ReadI64(); err != nil { + var _field *common.PlatformType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.PlatformType = _field + return nil +} +func (p *ExportTracesToDatasetRequest) ReadField8(iprot thrift.TProtocol) error { + + var _field dataset0.ExportType + if v, err := iprot.ReadString(); err != nil { return err } else { _field = v } - p.StartTime = _field + p.ExportType = _field return nil } -func (p *ChangeEvaluatorScoreRequest) ReadField5(iprot thrift.TProtocol) error { - _field := annotation.NewCorrection() - if err := _field.Read(iprot); err != nil { +func (p *ExportTracesToDatasetRequest) ReadField9(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { return err } - p.Correction = _field + _field := make([]*dataset0.FieldMapping, 0, size) + values := make([]dataset0.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldMappings = _field return nil } -func (p *ChangeEvaluatorScoreRequest) ReadField255(iprot thrift.TProtocol) error { +func (p *ExportTracesToDatasetRequest) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBase() if err := _field.Read(iprot); err != nil { return err @@ -11324,9 +11507,9 @@ func (p *ChangeEvaluatorScoreRequest) ReadField255(iprot thrift.TProtocol) error return nil } -func (p *ChangeEvaluatorScoreRequest) Write(oprot thrift.TProtocol) (err error) { +func (p *ExportTracesToDatasetRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ChangeEvaluatorScoreRequest"); err != nil { + if err = oprot.WriteStructBegin("ExportTracesToDatasetRequest"); err != nil { goto WriteStructBeginError } if p != nil { @@ -11350,6 +11533,22 @@ func (p *ChangeEvaluatorScoreRequest) Write(oprot thrift.TProtocol) (err error) fieldId = 5 goto WriteFieldError } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + if err = p.writeField7(oprot); err != nil { + fieldId = 7 + goto WriteFieldError + } + if err = p.writeField8(oprot); err != nil { + fieldId = 8 + goto WriteFieldError + } + if err = p.writeField9(oprot); err != nil { + fieldId = 9 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -11372,7 +11571,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *ChangeEvaluatorScoreRequest) writeField1(oprot thrift.TProtocol) (err error) { +func (p *ExportTracesToDatasetRequest) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { goto WriteFieldBeginError } @@ -11388,11 +11587,19 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *ChangeEvaluatorScoreRequest) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluator_record_id", thrift.I64, 2); err != nil { +func (p *ExportTracesToDatasetRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_ids", thrift.LIST, 2); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.EvaluatorRecordID); err != nil { + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.SpanIds)); err != nil { + return err + } + for _, v := range p.SpanIds { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11404,11 +11611,11 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *ChangeEvaluatorScoreRequest) writeField3(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("span_id", thrift.STRING, 3); err != nil { +func (p *ExportTracesToDatasetRequest) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("category", thrift.I32, 3); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(p.SpanID); err != nil { + if err := oprot.WriteI32(int32(p.Category)); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11420,11 +11627,11 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } -func (p *ChangeEvaluatorScoreRequest) writeField4(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("start_time", thrift.I64, 4); err != nil { +func (p *ExportTracesToDatasetRequest) writeField4(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("config", thrift.STRUCT, 4); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.StartTime); err != nil { + if err := p.Config.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11436,11 +11643,11 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } -func (p *ChangeEvaluatorScoreRequest) writeField5(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("correction", thrift.STRUCT, 5); err != nil { +func (p *ExportTracesToDatasetRequest) writeField5(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("start_time", thrift.I64, 5); err != nil { goto WriteFieldBeginError } - if err := p.Correction.Write(oprot); err != nil { + if err := oprot.WriteI64(p.StartTime); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11452,7 +11659,83 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) } -func (p *ChangeEvaluatorScoreRequest) writeField255(oprot thrift.TProtocol) (err error) { +func (p *ExportTracesToDatasetRequest) writeField6(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("end_time", thrift.I64, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EndTime); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} +func (p *ExportTracesToDatasetRequest) writeField7(oprot thrift.TProtocol) (err error) { + if p.IsSetPlatformType() { + if err = oprot.WriteFieldBegin("platform_type", thrift.STRING, 7); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.PlatformType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) +} +func (p *ExportTracesToDatasetRequest) writeField8(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("export_type", thrift.STRING, 8); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.ExportType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 8 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 8 end error: ", p), err) +} +func (p *ExportTracesToDatasetRequest) writeField9(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldMappings() { + if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 9); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { + return err + } + for _, v := range p.FieldMappings { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 end error: ", p), err) +} +func (p *ExportTracesToDatasetRequest) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBase() { if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError @@ -11471,15 +11754,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *ChangeEvaluatorScoreRequest) String() string { +func (p *ExportTracesToDatasetRequest) String() string { if p == nil { return "" } - return fmt.Sprintf("ChangeEvaluatorScoreRequest(%+v)", *p) + return fmt.Sprintf("ExportTracesToDatasetRequest(%+v)", *p) } -func (p *ChangeEvaluatorScoreRequest) DeepEqual(ano *ChangeEvaluatorScoreRequest) bool { +func (p *ExportTracesToDatasetRequest) DeepEqual(ano *ExportTracesToDatasetRequest) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -11488,16 +11771,28 @@ func (p *ChangeEvaluatorScoreRequest) DeepEqual(ano *ChangeEvaluatorScoreRequest if !p.Field1DeepEqual(ano.WorkspaceID) { return false } - if !p.Field2DeepEqual(ano.EvaluatorRecordID) { + if !p.Field2DeepEqual(ano.SpanIds) { return false } - if !p.Field3DeepEqual(ano.SpanID) { + if !p.Field3DeepEqual(ano.Category) { return false } - if !p.Field4DeepEqual(ano.StartTime) { + if !p.Field4DeepEqual(ano.Config) { return false } - if !p.Field5DeepEqual(ano.Correction) { + if !p.Field5DeepEqual(ano.StartTime) { + return false + } + if !p.Field6DeepEqual(ano.EndTime) { + return false + } + if !p.Field7DeepEqual(ano.PlatformType) { + return false + } + if !p.Field8DeepEqual(ano.ExportType) { + return false + } + if !p.Field9DeepEqual(ano.FieldMappings) { return false } if !p.Field255DeepEqual(ano.Base) { @@ -11506,108 +11801,136 @@ func (p *ChangeEvaluatorScoreRequest) DeepEqual(ano *ChangeEvaluatorScoreRequest return true } -func (p *ChangeEvaluatorScoreRequest) Field1DeepEqual(src int64) bool { +func (p *ExportTracesToDatasetRequest) Field1DeepEqual(src int64) bool { if p.WorkspaceID != src { return false } return true } -func (p *ChangeEvaluatorScoreRequest) Field2DeepEqual(src int64) bool { +func (p *ExportTracesToDatasetRequest) Field2DeepEqual(src []*SpanID) bool { - if p.EvaluatorRecordID != src { + if len(p.SpanIds) != len(src) { return false } + for i, v := range p.SpanIds { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } return true } -func (p *ChangeEvaluatorScoreRequest) Field3DeepEqual(src string) bool { +func (p *ExportTracesToDatasetRequest) Field3DeepEqual(src dataset.DatasetCategory) bool { - if strings.Compare(p.SpanID, src) != 0 { + if p.Category != src { return false } return true } -func (p *ChangeEvaluatorScoreRequest) Field4DeepEqual(src int64) bool { +func (p *ExportTracesToDatasetRequest) Field4DeepEqual(src *DatasetConfig) bool { - if p.StartTime != src { + if !p.Config.DeepEqual(src) { return false } return true } -func (p *ChangeEvaluatorScoreRequest) Field5DeepEqual(src *annotation.Correction) bool { +func (p *ExportTracesToDatasetRequest) Field5DeepEqual(src int64) bool { - if !p.Correction.DeepEqual(src) { + if p.StartTime != src { return false } return true } -func (p *ChangeEvaluatorScoreRequest) Field255DeepEqual(src *base.Base) bool { +func (p *ExportTracesToDatasetRequest) Field6DeepEqual(src int64) bool { - if !p.Base.DeepEqual(src) { + if p.EndTime != src { return false } return true } +func (p *ExportTracesToDatasetRequest) Field7DeepEqual(src *common.PlatformType) bool { -type ChangeEvaluatorScoreResponse struct { - Annotation *annotation.Annotation `thrift:"annotation,1,required" frugal:"1,required,annotation.Annotation" form:"annotation,required" json:"annotation,required" query:"annotation,required"` - BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` -} - -func NewChangeEvaluatorScoreResponse() *ChangeEvaluatorScoreResponse { - return &ChangeEvaluatorScoreResponse{} + if p.PlatformType == src { + return true + } else if p.PlatformType == nil || src == nil { + return false + } + if strings.Compare(*p.PlatformType, *src) != 0 { + return false + } + return true } +func (p *ExportTracesToDatasetRequest) Field8DeepEqual(src dataset0.ExportType) bool { -func (p *ChangeEvaluatorScoreResponse) InitDefault() { + if strings.Compare(p.ExportType, src) != 0 { + return false + } + return true } +func (p *ExportTracesToDatasetRequest) Field9DeepEqual(src []*dataset0.FieldMapping) bool { -var ChangeEvaluatorScoreResponse_Annotation_DEFAULT *annotation.Annotation - -func (p *ChangeEvaluatorScoreResponse) GetAnnotation() (v *annotation.Annotation) { - if p == nil { - return + if len(p.FieldMappings) != len(src) { + return false } - if !p.IsSetAnnotation() { - return ChangeEvaluatorScoreResponse_Annotation_DEFAULT + for i, v := range p.FieldMappings { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } } - return p.Annotation + return true } +func (p *ExportTracesToDatasetRequest) Field255DeepEqual(src *base.Base) bool { -var ChangeEvaluatorScoreResponse_BaseResp_DEFAULT *base.BaseResp - -func (p *ChangeEvaluatorScoreResponse) GetBaseResp() (v *base.BaseResp) { - if p == nil { - return - } - if !p.IsSetBaseResp() { - return ChangeEvaluatorScoreResponse_BaseResp_DEFAULT + if !p.Base.DeepEqual(src) { + return false } - return p.BaseResp + return true } -func (p *ChangeEvaluatorScoreResponse) SetAnnotation(val *annotation.Annotation) { - p.Annotation = val + +type SpanID struct { + TraceID string `thrift:"trace_id,1,required" frugal:"1,required,string" form:"trace_id,required" json:"trace_id,required" query:"trace_id,required"` + SpanID string `thrift:"span_id,2,required" frugal:"2,required,string" form:"span_id,required" json:"span_id,required" query:"span_id,required"` } -func (p *ChangeEvaluatorScoreResponse) SetBaseResp(val *base.BaseResp) { - p.BaseResp = val + +func NewSpanID() *SpanID { + return &SpanID{} } -var fieldIDToName_ChangeEvaluatorScoreResponse = map[int16]string{ - 1: "annotation", - 255: "BaseResp", +func (p *SpanID) InitDefault() { } -func (p *ChangeEvaluatorScoreResponse) IsSetAnnotation() bool { - return p.Annotation != nil +func (p *SpanID) GetTraceID() (v string) { + if p != nil { + return p.TraceID + } + return } -func (p *ChangeEvaluatorScoreResponse) IsSetBaseResp() bool { - return p.BaseResp != nil +func (p *SpanID) GetSpanID() (v string) { + if p != nil { + return p.SpanID + } + return +} +func (p *SpanID) SetTraceID(val string) { + p.TraceID = val +} +func (p *SpanID) SetSpanID(val string) { + p.SpanID = val } -func (p *ChangeEvaluatorScoreResponse) Read(iprot thrift.TProtocol) (err error) { +var fieldIDToName_SpanID = map[int16]string{ + 1: "trace_id", + 2: "span_id", +} + +func (p *SpanID) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetAnnotation bool = false + var issetTraceID bool = false + var issetSpanID bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -11624,19 +11947,20 @@ func (p *ChangeEvaluatorScoreResponse) Read(iprot thrift.TProtocol) (err error) switch fieldId { case 1: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.STRING { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetAnnotation = true + issetTraceID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } + issetSpanID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -11653,17 +11977,22 @@ func (p *ChangeEvaluatorScoreResponse) Read(iprot thrift.TProtocol) (err error) goto ReadStructEndError } - if !issetAnnotation { + if !issetTraceID { fieldId = 1 goto RequiredFieldNotSetError } + + if !issetSpanID { + fieldId = 2 + goto RequiredFieldNotSetError + } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreResponse[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanID[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -11672,29 +12001,35 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreResponse[fieldId])) + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_SpanID[fieldId])) } -func (p *ChangeEvaluatorScoreResponse) ReadField1(iprot thrift.TProtocol) error { - _field := annotation.NewAnnotation() - if err := _field.Read(iprot); err != nil { +func (p *SpanID) ReadField1(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { return err + } else { + _field = v } - p.Annotation = _field + p.TraceID = _field return nil } -func (p *ChangeEvaluatorScoreResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() - if err := _field.Read(iprot); err != nil { +func (p *SpanID) ReadField2(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { return err + } else { + _field = v } - p.BaseResp = _field + p.SpanID = _field return nil } -func (p *ChangeEvaluatorScoreResponse) Write(oprot thrift.TProtocol) (err error) { +func (p *SpanID) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ChangeEvaluatorScoreResponse"); err != nil { + if err = oprot.WriteStructBegin("SpanID"); err != nil { goto WriteStructBeginError } if p != nil { @@ -11702,8 +12037,8 @@ func (p *ChangeEvaluatorScoreResponse) Write(oprot thrift.TProtocol) (err error) fieldId = 1 goto WriteFieldError } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 + if err = p.writeField2(oprot); err != nil { + fieldId = 2 goto WriteFieldError } } @@ -11724,11 +12059,11 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *ChangeEvaluatorScoreResponse) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("annotation", thrift.STRUCT, 1); err != nil { +func (p *SpanID) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("trace_id", thrift.STRING, 1); err != nil { goto WriteFieldBeginError } - if err := p.Annotation.Write(oprot); err != nil { + if err := oprot.WriteString(p.TraceID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11740,118 +12075,157 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *ChangeEvaluatorScoreResponse) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBaseResp() { - if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.BaseResp.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *SpanID) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_id", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.SpanID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *ChangeEvaluatorScoreResponse) String() string { +func (p *SpanID) String() string { if p == nil { return "" } - return fmt.Sprintf("ChangeEvaluatorScoreResponse(%+v)", *p) + return fmt.Sprintf("SpanID(%+v)", *p) } -func (p *ChangeEvaluatorScoreResponse) DeepEqual(ano *ChangeEvaluatorScoreResponse) bool { +func (p *SpanID) DeepEqual(ano *SpanID) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.Annotation) { + if !p.Field1DeepEqual(ano.TraceID) { return false } - if !p.Field255DeepEqual(ano.BaseResp) { + if !p.Field2DeepEqual(ano.SpanID) { return false } return true } -func (p *ChangeEvaluatorScoreResponse) Field1DeepEqual(src *annotation.Annotation) bool { +func (p *SpanID) Field1DeepEqual(src string) bool { - if !p.Annotation.DeepEqual(src) { + if strings.Compare(p.TraceID, src) != 0 { return false } return true } -func (p *ChangeEvaluatorScoreResponse) Field255DeepEqual(src *base.BaseResp) bool { +func (p *SpanID) Field2DeepEqual(src string) bool { - if !p.BaseResp.DeepEqual(src) { + if strings.Compare(p.SpanID, src) != 0 { return false } return true } -type AnnotationEvaluator struct { - EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` - EvaluatorName string `thrift:"evaluator_name,2,required" frugal:"2,required,string" form:"evaluator_name,required" json:"evaluator_name,required" query:"evaluator_name,required"` - EvaluatorVersion string `thrift:"evaluator_version,3,required" frugal:"3,required,string" form:"evaluator_version,required" json:"evaluator_version,required" query:"evaluator_version,required"` +type DatasetConfig struct { + // 是否是新增数据集 + IsNewDataset bool `thrift:"is_new_dataset,1,required" frugal:"1,required,bool" form:"is_new_dataset,required" json:"is_new_dataset,required" query:"is_new_dataset,required"` + // 数据集id,新增数据集时可为空 + DatasetID *int64 `thrift:"dataset_id,2,optional" frugal:"2,optional,i64" json:"dataset_id" form:"dataset_id" query:"dataset_id"` + // 数据集名称,选择已有数据集时可为空 + DatasetName *string `thrift:"dataset_name,3,optional" frugal:"3,optional,string" form:"dataset_name" json:"dataset_name,omitempty" query:"dataset_name"` + // 数据集列数据schema + DatasetSchema *dataset0.DatasetSchema `thrift:"dataset_schema,4,optional" frugal:"4,optional,dataset.DatasetSchema" form:"dataset_schema" json:"dataset_schema,omitempty" query:"dataset_schema"` } -func NewAnnotationEvaluator() *AnnotationEvaluator { - return &AnnotationEvaluator{} +func NewDatasetConfig() *DatasetConfig { + return &DatasetConfig{} } -func (p *AnnotationEvaluator) InitDefault() { +func (p *DatasetConfig) InitDefault() { } -func (p *AnnotationEvaluator) GetEvaluatorVersionID() (v int64) { +func (p *DatasetConfig) GetIsNewDataset() (v bool) { if p != nil { - return p.EvaluatorVersionID + return p.IsNewDataset } return } -func (p *AnnotationEvaluator) GetEvaluatorName() (v string) { - if p != nil { - return p.EvaluatorName +var DatasetConfig_DatasetID_DEFAULT int64 + +func (p *DatasetConfig) GetDatasetID() (v int64) { + if p == nil { + return } - return + if !p.IsSetDatasetID() { + return DatasetConfig_DatasetID_DEFAULT + } + return *p.DatasetID } -func (p *AnnotationEvaluator) GetEvaluatorVersion() (v string) { - if p != nil { - return p.EvaluatorVersion +var DatasetConfig_DatasetName_DEFAULT string + +func (p *DatasetConfig) GetDatasetName() (v string) { + if p == nil { + return } - return + if !p.IsSetDatasetName() { + return DatasetConfig_DatasetName_DEFAULT + } + return *p.DatasetName } -func (p *AnnotationEvaluator) SetEvaluatorVersionID(val int64) { - p.EvaluatorVersionID = val + +var DatasetConfig_DatasetSchema_DEFAULT *dataset0.DatasetSchema + +func (p *DatasetConfig) GetDatasetSchema() (v *dataset0.DatasetSchema) { + if p == nil { + return + } + if !p.IsSetDatasetSchema() { + return DatasetConfig_DatasetSchema_DEFAULT + } + return p.DatasetSchema } -func (p *AnnotationEvaluator) SetEvaluatorName(val string) { - p.EvaluatorName = val +func (p *DatasetConfig) SetIsNewDataset(val bool) { + p.IsNewDataset = val } -func (p *AnnotationEvaluator) SetEvaluatorVersion(val string) { - p.EvaluatorVersion = val +func (p *DatasetConfig) SetDatasetID(val *int64) { + p.DatasetID = val +} +func (p *DatasetConfig) SetDatasetName(val *string) { + p.DatasetName = val +} +func (p *DatasetConfig) SetDatasetSchema(val *dataset0.DatasetSchema) { + p.DatasetSchema = val } -var fieldIDToName_AnnotationEvaluator = map[int16]string{ - 1: "evaluator_version_id", - 2: "evaluator_name", - 3: "evaluator_version", +var fieldIDToName_DatasetConfig = map[int16]string{ + 1: "is_new_dataset", + 2: "dataset_id", + 3: "dataset_name", + 4: "dataset_schema", } -func (p *AnnotationEvaluator) Read(iprot thrift.TProtocol) (err error) { +func (p *DatasetConfig) IsSetDatasetID() bool { + return p.DatasetID != nil +} + +func (p *DatasetConfig) IsSetDatasetName() bool { + return p.DatasetName != nil +} + +func (p *DatasetConfig) IsSetDatasetSchema() bool { + return p.DatasetSchema != nil +} + +func (p *DatasetConfig) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetEvaluatorVersionID bool = false - var issetEvaluatorName bool = false - var issetEvaluatorVersion bool = false + var issetIsNewDataset bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -11868,20 +12242,19 @@ func (p *AnnotationEvaluator) Read(iprot thrift.TProtocol) (err error) { switch fieldId { case 1: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.BOOL { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetEvaluatorVersionID = true + issetIsNewDataset = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 2: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I64 { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } - issetEvaluatorName = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -11890,7 +12263,14 @@ func (p *AnnotationEvaluator) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField3(iprot); err != nil { goto ReadFieldError } - issetEvaluatorVersion = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -11907,27 +12287,17 @@ func (p *AnnotationEvaluator) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } - if !issetEvaluatorVersionID { + if !issetIsNewDataset { fieldId = 1 goto RequiredFieldNotSetError } - - if !issetEvaluatorName { - fieldId = 2 - goto RequiredFieldNotSetError - } - - if !issetEvaluatorVersion { - fieldId = 3 - goto RequiredFieldNotSetError - } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AnnotationEvaluator[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DatasetConfig[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -11936,46 +12306,54 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_AnnotationEvaluator[fieldId])) + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_DatasetConfig[fieldId])) } -func (p *AnnotationEvaluator) ReadField1(iprot thrift.TProtocol) error { +func (p *DatasetConfig) ReadField1(iprot thrift.TProtocol) error { - var _field int64 - if v, err := iprot.ReadI64(); err != nil { + var _field bool + if v, err := iprot.ReadBool(); err != nil { return err } else { _field = v } - p.EvaluatorVersionID = _field + p.IsNewDataset = _field return nil } -func (p *AnnotationEvaluator) ReadField2(iprot thrift.TProtocol) error { +func (p *DatasetConfig) ReadField2(iprot thrift.TProtocol) error { - var _field string - if v, err := iprot.ReadString(); err != nil { + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { return err } else { - _field = v + _field = &v } - p.EvaluatorName = _field + p.DatasetID = _field return nil } -func (p *AnnotationEvaluator) ReadField3(iprot thrift.TProtocol) error { +func (p *DatasetConfig) ReadField3(iprot thrift.TProtocol) error { - var _field string + var _field *string if v, err := iprot.ReadString(); err != nil { return err } else { - _field = v + _field = &v } - p.EvaluatorVersion = _field + p.DatasetName = _field + return nil +} +func (p *DatasetConfig) ReadField4(iprot thrift.TProtocol) error { + _field := dataset0.NewDatasetSchema() + if err := _field.Read(iprot); err != nil { + return err + } + p.DatasetSchema = _field return nil } -func (p *AnnotationEvaluator) Write(oprot thrift.TProtocol) (err error) { +func (p *DatasetConfig) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("AnnotationEvaluator"); err != nil { + if err = oprot.WriteStructBegin("DatasetConfig"); err != nil { goto WriteStructBeginError } if p != nil { @@ -11991,6 +12369,10 @@ func (p *AnnotationEvaluator) Write(oprot thrift.TProtocol) (err error) { fieldId = 3 goto WriteFieldError } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -12009,11 +12391,11 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *AnnotationEvaluator) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluator_version_id", thrift.I64, 1); err != nil { +func (p *DatasetConfig) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("is_new_dataset", thrift.BOOL, 1); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.EvaluatorVersionID); err != nil { + if err := oprot.WriteBool(p.IsNewDataset); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -12025,15 +12407,17 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *AnnotationEvaluator) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluator_name", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(p.EvaluatorName); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError +func (p *DatasetConfig) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetDatasetID() { + if err = oprot.WriteFieldBegin("dataset_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.DatasetID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -12041,15 +12425,17 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *AnnotationEvaluator) writeField3(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluator_version", thrift.STRING, 3); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(p.EvaluatorVersion); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError +func (p *DatasetConfig) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetDatasetName() { + if err = oprot.WriteFieldBegin("dataset_name", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.DatasetName); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -12057,126 +12443,262 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } +func (p *DatasetConfig) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetDatasetSchema() { + if err = oprot.WriteFieldBegin("dataset_schema", thrift.STRUCT, 4); err != nil { + goto WriteFieldBeginError + } + if err := p.DatasetSchema.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} -func (p *AnnotationEvaluator) String() string { +func (p *DatasetConfig) String() string { if p == nil { return "" } - return fmt.Sprintf("AnnotationEvaluator(%+v)", *p) + return fmt.Sprintf("DatasetConfig(%+v)", *p) } -func (p *AnnotationEvaluator) DeepEqual(ano *AnnotationEvaluator) bool { +func (p *DatasetConfig) DeepEqual(ano *DatasetConfig) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.EvaluatorVersionID) { + if !p.Field1DeepEqual(ano.IsNewDataset) { return false } - if !p.Field2DeepEqual(ano.EvaluatorName) { + if !p.Field2DeepEqual(ano.DatasetID) { return false } - if !p.Field3DeepEqual(ano.EvaluatorVersion) { + if !p.Field3DeepEqual(ano.DatasetName) { + return false + } + if !p.Field4DeepEqual(ano.DatasetSchema) { return false } return true } -func (p *AnnotationEvaluator) Field1DeepEqual(src int64) bool { +func (p *DatasetConfig) Field1DeepEqual(src bool) bool { - if p.EvaluatorVersionID != src { + if p.IsNewDataset != src { return false } return true } -func (p *AnnotationEvaluator) Field2DeepEqual(src string) bool { +func (p *DatasetConfig) Field2DeepEqual(src *int64) bool { - if strings.Compare(p.EvaluatorName, src) != 0 { + if p.DatasetID == src { + return true + } else if p.DatasetID == nil || src == nil { + return false + } + if *p.DatasetID != *src { return false } return true } -func (p *AnnotationEvaluator) Field3DeepEqual(src string) bool { +func (p *DatasetConfig) Field3DeepEqual(src *string) bool { - if strings.Compare(p.EvaluatorVersion, src) != 0 { + if p.DatasetName == src { + return true + } else if p.DatasetName == nil || src == nil { + return false + } + if strings.Compare(*p.DatasetName, *src) != 0 { return false } return true } +func (p *DatasetConfig) Field4DeepEqual(src *dataset0.DatasetSchema) bool { -type ListAnnotationEvaluatorsRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - Name *string `thrift:"name,2,optional" frugal:"2,optional,string" json:"name,omitempty" query:"name"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` + if !p.DatasetSchema.DeepEqual(src) { + return false + } + return true } -func NewListAnnotationEvaluatorsRequest() *ListAnnotationEvaluatorsRequest { - return &ListAnnotationEvaluatorsRequest{} +type ExportTracesToDatasetResponse struct { + // 成功导入的数量 + SuccessCount *int32 `thrift:"success_count,1,optional" frugal:"1,optional,i32" form:"success_count" json:"success_count,omitempty" query:"success_count"` + // 错误信息 + Errors []*dataset.ItemErrorGroup `thrift:"errors,2,optional" frugal:"2,optional,list" form:"errors" json:"errors,omitempty" query:"errors"` + // 数据集id + DatasetID *int64 `thrift:"dataset_id,3,optional" frugal:"3,optional,i64" json:"dataset_id" form:"dataset_id" query:"dataset_id"` + // 数据集名称 + DatasetName *string `thrift:"dataset_name,4,optional" frugal:"4,optional,string" form:"dataset_name" json:"dataset_name,omitempty" query:"dataset_name"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"-" json:"-" query:"-"` + // 仅供http请求使用; 内部RPC不予使用,统一通过BaseResp获取Code和Msg + Code *int32 `thrift:"Code,256,optional" frugal:"256,optional,i32" form:"Code" json:"Code,omitempty" query:"Code"` + // 仅供http请求使用; 内部RPC不予使用,统一通过BaseResp获取Code和Msg + Msg *string `thrift:"Msg,257,optional" frugal:"257,optional,string" form:"Msg" json:"Msg,omitempty" query:"Msg"` } -func (p *ListAnnotationEvaluatorsRequest) InitDefault() { +func NewExportTracesToDatasetResponse() *ExportTracesToDatasetResponse { + return &ExportTracesToDatasetResponse{} } -func (p *ListAnnotationEvaluatorsRequest) GetWorkspaceID() (v int64) { - if p != nil { - return p.WorkspaceID +func (p *ExportTracesToDatasetResponse) InitDefault() { +} + +var ExportTracesToDatasetResponse_SuccessCount_DEFAULT int32 + +func (p *ExportTracesToDatasetResponse) GetSuccessCount() (v int32) { + if p == nil { + return } - return + if !p.IsSetSuccessCount() { + return ExportTracesToDatasetResponse_SuccessCount_DEFAULT + } + return *p.SuccessCount } -var ListAnnotationEvaluatorsRequest_Name_DEFAULT string +var ExportTracesToDatasetResponse_Errors_DEFAULT []*dataset.ItemErrorGroup -func (p *ListAnnotationEvaluatorsRequest) GetName() (v string) { +func (p *ExportTracesToDatasetResponse) GetErrors() (v []*dataset.ItemErrorGroup) { if p == nil { return } - if !p.IsSetName() { - return ListAnnotationEvaluatorsRequest_Name_DEFAULT + if !p.IsSetErrors() { + return ExportTracesToDatasetResponse_Errors_DEFAULT } - return *p.Name + return p.Errors } -var ListAnnotationEvaluatorsRequest_Base_DEFAULT *base.Base +var ExportTracesToDatasetResponse_DatasetID_DEFAULT int64 -func (p *ListAnnotationEvaluatorsRequest) GetBase() (v *base.Base) { +func (p *ExportTracesToDatasetResponse) GetDatasetID() (v int64) { if p == nil { return } - if !p.IsSetBase() { - return ListAnnotationEvaluatorsRequest_Base_DEFAULT + if !p.IsSetDatasetID() { + return ExportTracesToDatasetResponse_DatasetID_DEFAULT } - return p.Base + return *p.DatasetID } -func (p *ListAnnotationEvaluatorsRequest) SetWorkspaceID(val int64) { - p.WorkspaceID = val + +var ExportTracesToDatasetResponse_DatasetName_DEFAULT string + +func (p *ExportTracesToDatasetResponse) GetDatasetName() (v string) { + if p == nil { + return + } + if !p.IsSetDatasetName() { + return ExportTracesToDatasetResponse_DatasetName_DEFAULT + } + return *p.DatasetName } -func (p *ListAnnotationEvaluatorsRequest) SetName(val *string) { - p.Name = val + +var ExportTracesToDatasetResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *ExportTracesToDatasetResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return ExportTracesToDatasetResponse_BaseResp_DEFAULT + } + return p.BaseResp } -func (p *ListAnnotationEvaluatorsRequest) SetBase(val *base.Base) { - p.Base = val + +var ExportTracesToDatasetResponse_Code_DEFAULT int32 + +func (p *ExportTracesToDatasetResponse) GetCode() (v int32) { + if p == nil { + return + } + if !p.IsSetCode() { + return ExportTracesToDatasetResponse_Code_DEFAULT + } + return *p.Code } -var fieldIDToName_ListAnnotationEvaluatorsRequest = map[int16]string{ - 1: "workspace_id", - 2: "name", - 255: "Base", +var ExportTracesToDatasetResponse_Msg_DEFAULT string + +func (p *ExportTracesToDatasetResponse) GetMsg() (v string) { + if p == nil { + return + } + if !p.IsSetMsg() { + return ExportTracesToDatasetResponse_Msg_DEFAULT + } + return *p.Msg +} +func (p *ExportTracesToDatasetResponse) SetSuccessCount(val *int32) { + p.SuccessCount = val +} +func (p *ExportTracesToDatasetResponse) SetErrors(val []*dataset.ItemErrorGroup) { + p.Errors = val +} +func (p *ExportTracesToDatasetResponse) SetDatasetID(val *int64) { + p.DatasetID = val +} +func (p *ExportTracesToDatasetResponse) SetDatasetName(val *string) { + p.DatasetName = val +} +func (p *ExportTracesToDatasetResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} +func (p *ExportTracesToDatasetResponse) SetCode(val *int32) { + p.Code = val +} +func (p *ExportTracesToDatasetResponse) SetMsg(val *string) { + p.Msg = val } -func (p *ListAnnotationEvaluatorsRequest) IsSetName() bool { - return p.Name != nil +var fieldIDToName_ExportTracesToDatasetResponse = map[int16]string{ + 1: "success_count", + 2: "errors", + 3: "dataset_id", + 4: "dataset_name", + 255: "BaseResp", + 256: "Code", + 257: "Msg", } -func (p *ListAnnotationEvaluatorsRequest) IsSetBase() bool { - return p.Base != nil +func (p *ExportTracesToDatasetResponse) IsSetSuccessCount() bool { + return p.SuccessCount != nil } -func (p *ListAnnotationEvaluatorsRequest) Read(iprot thrift.TProtocol) (err error) { +func (p *ExportTracesToDatasetResponse) IsSetErrors() bool { + return p.Errors != nil +} + +func (p *ExportTracesToDatasetResponse) IsSetDatasetID() bool { + return p.DatasetID != nil +} + +func (p *ExportTracesToDatasetResponse) IsSetDatasetName() bool { + return p.DatasetName != nil +} + +func (p *ExportTracesToDatasetResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *ExportTracesToDatasetResponse) IsSetCode() bool { + return p.Code != nil +} + +func (p *ExportTracesToDatasetResponse) IsSetMsg() bool { + return p.Msg != nil +} + +func (p *ExportTracesToDatasetResponse) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetWorkspaceID bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -12193,22 +12715,37 @@ func (p *ListAnnotationEvaluatorsRequest) Read(iprot thrift.TProtocol) (err erro switch fieldId { case 1: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.I32 { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetWorkspaceID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 2: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.LIST { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 3: + if fieldTypeId == thrift.I64 { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRING { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -12217,6 +12754,22 @@ func (p *ListAnnotationEvaluatorsRequest) Read(iprot thrift.TProtocol) (err erro } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 256: + if fieldTypeId == thrift.I32 { + if err = p.ReadField256(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 257: + if fieldTypeId == thrift.STRING { + if err = p.ReadField257(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -12230,17 +12783,13 @@ func (p *ListAnnotationEvaluatorsRequest) Read(iprot thrift.TProtocol) (err erro goto ReadStructEndError } - if !issetWorkspaceID { - fieldId = 1 - goto RequiredFieldNotSetError - } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExportTracesToDatasetResponse[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12248,22 +12797,54 @@ ReadFieldEndError: return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId])) } -func (p *ListAnnotationEvaluatorsRequest) ReadField1(iprot thrift.TProtocol) error { +func (p *ExportTracesToDatasetResponse) ReadField1(iprot thrift.TProtocol) error { - var _field int64 + var _field *int32 + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + _field = &v + } + p.SuccessCount = _field + return nil +} +func (p *ExportTracesToDatasetResponse) ReadField2(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*dataset.ItemErrorGroup, 0, size) + values := make([]dataset.ItemErrorGroup, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.Errors = _field + return nil +} +func (p *ExportTracesToDatasetResponse) ReadField3(iprot thrift.TProtocol) error { + + var _field *int64 if v, err := iprot.ReadI64(); err != nil { return err } else { - _field = v + _field = &v } - p.WorkspaceID = _field + p.DatasetID = _field return nil } -func (p *ListAnnotationEvaluatorsRequest) ReadField2(iprot thrift.TProtocol) error { +func (p *ExportTracesToDatasetResponse) ReadField4(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -12271,21 +12852,43 @@ func (p *ListAnnotationEvaluatorsRequest) ReadField2(iprot thrift.TProtocol) err } else { _field = &v } - p.Name = _field + p.DatasetName = _field return nil } -func (p *ListAnnotationEvaluatorsRequest) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBase() +func (p *ExportTracesToDatasetResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() if err := _field.Read(iprot); err != nil { return err } - p.Base = _field + p.BaseResp = _field return nil } +func (p *ExportTracesToDatasetResponse) ReadField256(iprot thrift.TProtocol) error { -func (p *ListAnnotationEvaluatorsRequest) Write(oprot thrift.TProtocol) (err error) { + var _field *int32 + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + _field = &v + } + p.Code = _field + return nil +} +func (p *ExportTracesToDatasetResponse) ReadField257(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Msg = _field + return nil +} + +func (p *ExportTracesToDatasetResponse) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListAnnotationEvaluatorsRequest"); err != nil { + if err = oprot.WriteStructBegin("ExportTracesToDatasetResponse"); err != nil { goto WriteStructBeginError } if p != nil { @@ -12297,10 +12900,26 @@ func (p *ListAnnotationEvaluatorsRequest) Write(oprot thrift.TProtocol) (err err fieldId = 2 goto WriteFieldError } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError } + if err = p.writeField256(oprot); err != nil { + fieldId = 256 + goto WriteFieldError + } + if err = p.writeField257(oprot); err != nil { + fieldId = 257 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -12319,15 +12938,17 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *ListAnnotationEvaluatorsRequest) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.WorkspaceID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError +func (p *ExportTracesToDatasetResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccessCount() { + if err = oprot.WriteFieldBegin("success_count", thrift.I32, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(*p.SuccessCount); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -12335,12 +12956,20 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *ListAnnotationEvaluatorsRequest) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetName() { - if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { +func (p *ExportTracesToDatasetResponse) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetErrors() { + if err = oprot.WriteFieldBegin("errors", thrift.LIST, 2); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(*p.Name); err != nil { + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Errors)); err != nil { + return err + } + for _, v := range p.Errors { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -12353,12 +12982,12 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *ListAnnotationEvaluatorsRequest) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBase() { - if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { +func (p *ExportTracesToDatasetResponse) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetDatasetID() { + if err = oprot.WriteFieldBegin("dataset_id", thrift.I64, 3); err != nil { goto WriteFieldBeginError } - if err := p.Base.Write(oprot); err != nil { + if err := oprot.WriteI64(*p.DatasetID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -12367,114 +12996,382 @@ func (p *ListAnnotationEvaluatorsRequest) writeField255(oprot thrift.TProtocol) } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } - -func (p *ListAnnotationEvaluatorsRequest) String() string { - if p == nil { - return "" +func (p *ExportTracesToDatasetResponse) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetDatasetName() { + if err = oprot.WriteFieldBegin("dataset_name", thrift.STRING, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.DatasetName); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } - return fmt.Sprintf("ListAnnotationEvaluatorsRequest(%+v)", *p) - + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } - -func (p *ListAnnotationEvaluatorsRequest) DeepEqual(ano *ListAnnotationEvaluatorsRequest) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.WorkspaceID) { - return false - } - if !p.Field2DeepEqual(ano.Name) { - return false - } - if !p.Field255DeepEqual(ano.Base) { - return false +func (p *ExportTracesToDatasetResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} +func (p *ExportTracesToDatasetResponse) writeField256(oprot thrift.TProtocol) (err error) { + if p.IsSetCode() { + if err = oprot.WriteFieldBegin("Code", thrift.I32, 256); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(*p.Code); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 256 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 256 end error: ", p), err) +} +func (p *ExportTracesToDatasetResponse) writeField257(oprot thrift.TProtocol) (err error) { + if p.IsSetMsg() { + if err = oprot.WriteFieldBegin("Msg", thrift.STRING, 257); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Msg); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 257 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 257 end error: ", p), err) +} + +func (p *ExportTracesToDatasetResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ExportTracesToDatasetResponse(%+v)", *p) + +} + +func (p *ExportTracesToDatasetResponse) DeepEqual(ano *ExportTracesToDatasetResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.SuccessCount) { + return false + } + if !p.Field2DeepEqual(ano.Errors) { + return false + } + if !p.Field3DeepEqual(ano.DatasetID) { + return false + } + if !p.Field4DeepEqual(ano.DatasetName) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + if !p.Field256DeepEqual(ano.Code) { + return false + } + if !p.Field257DeepEqual(ano.Msg) { + return false } return true } -func (p *ListAnnotationEvaluatorsRequest) Field1DeepEqual(src int64) bool { +func (p *ExportTracesToDatasetResponse) Field1DeepEqual(src *int32) bool { - if p.WorkspaceID != src { + if p.SuccessCount == src { + return true + } else if p.SuccessCount == nil || src == nil { + return false + } + if *p.SuccessCount != *src { return false } return true } -func (p *ListAnnotationEvaluatorsRequest) Field2DeepEqual(src *string) bool { +func (p *ExportTracesToDatasetResponse) Field2DeepEqual(src []*dataset.ItemErrorGroup) bool { - if p.Name == src { + if len(p.Errors) != len(src) { + return false + } + for i, v := range p.Errors { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *ExportTracesToDatasetResponse) Field3DeepEqual(src *int64) bool { + + if p.DatasetID == src { return true - } else if p.Name == nil || src == nil { + } else if p.DatasetID == nil || src == nil { return false } - if strings.Compare(*p.Name, *src) != 0 { + if *p.DatasetID != *src { return false } return true } -func (p *ListAnnotationEvaluatorsRequest) Field255DeepEqual(src *base.Base) bool { +func (p *ExportTracesToDatasetResponse) Field4DeepEqual(src *string) bool { - if !p.Base.DeepEqual(src) { + if p.DatasetName == src { + return true + } else if p.DatasetName == nil || src == nil { + return false + } + if strings.Compare(*p.DatasetName, *src) != 0 { return false } return true } +func (p *ExportTracesToDatasetResponse) Field255DeepEqual(src *base.BaseResp) bool { -type ListAnnotationEvaluatorsResponse struct { - Evaluators []*AnnotationEvaluator `thrift:"evaluators,1,required" frugal:"1,required,list" form:"evaluators,required" json:"evaluators,required" query:"evaluators,required"` - BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` + if !p.BaseResp.DeepEqual(src) { + return false + } + return true } +func (p *ExportTracesToDatasetResponse) Field256DeepEqual(src *int32) bool { -func NewListAnnotationEvaluatorsResponse() *ListAnnotationEvaluatorsResponse { - return &ListAnnotationEvaluatorsResponse{} + if p.Code == src { + return true + } else if p.Code == nil || src == nil { + return false + } + if *p.Code != *src { + return false + } + return true } +func (p *ExportTracesToDatasetResponse) Field257DeepEqual(src *string) bool { -func (p *ListAnnotationEvaluatorsResponse) InitDefault() { + if p.Msg == src { + return true + } else if p.Msg == nil || src == nil { + return false + } + if strings.Compare(*p.Msg, *src) != 0 { + return false + } + return true } -func (p *ListAnnotationEvaluatorsResponse) GetEvaluators() (v []*AnnotationEvaluator) { +type PreviewExportTracesToDatasetRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + SpanIds []*SpanID `thrift:"span_ids,2,required" frugal:"2,required,list" form:"span_ids,required" json:"span_ids,required"` + Category dataset.DatasetCategory `thrift:"category,3,required" frugal:"3,required,DatasetCategory" form:"category,required" json:"category,required"` + Config *DatasetConfig `thrift:"config,4,required" frugal:"4,required,DatasetConfig" form:"config,required" json:"config,required"` + StartTime int64 `thrift:"start_time,5,required" frugal:"5,required,i64" json:"start_time" form:"start_time,required" ` + EndTime int64 `thrift:"end_time,6,required" frugal:"6,required,i64" json:"end_time" form:"end_time,required" ` + PlatformType *common.PlatformType `thrift:"platform_type,7,optional" frugal:"7,optional,string" form:"platform_type" json:"platform_type,omitempty"` + // 导入方式,不填默认为追加 + ExportType dataset0.ExportType `thrift:"export_type,8,required" frugal:"8,required,string" form:"export_type,required" json:"export_type,required"` + FieldMappings []*dataset0.FieldMapping `thrift:"field_mappings,9,optional" frugal:"9,optional,list" form:"field_mappings" json:"field_mappings,omitempty"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` +} + +func NewPreviewExportTracesToDatasetRequest() *PreviewExportTracesToDatasetRequest { + return &PreviewExportTracesToDatasetRequest{} +} + +func (p *PreviewExportTracesToDatasetRequest) InitDefault() { +} + +func (p *PreviewExportTracesToDatasetRequest) GetWorkspaceID() (v int64) { if p != nil { - return p.Evaluators + return p.WorkspaceID } return } -var ListAnnotationEvaluatorsResponse_BaseResp_DEFAULT *base.BaseResp +func (p *PreviewExportTracesToDatasetRequest) GetSpanIds() (v []*SpanID) { + if p != nil { + return p.SpanIds + } + return +} -func (p *ListAnnotationEvaluatorsResponse) GetBaseResp() (v *base.BaseResp) { +func (p *PreviewExportTracesToDatasetRequest) GetCategory() (v dataset.DatasetCategory) { + if p != nil { + return p.Category + } + return +} + +var PreviewExportTracesToDatasetRequest_Config_DEFAULT *DatasetConfig + +func (p *PreviewExportTracesToDatasetRequest) GetConfig() (v *DatasetConfig) { if p == nil { return } - if !p.IsSetBaseResp() { - return ListAnnotationEvaluatorsResponse_BaseResp_DEFAULT + if !p.IsSetConfig() { + return PreviewExportTracesToDatasetRequest_Config_DEFAULT } - return p.BaseResp + return p.Config } -func (p *ListAnnotationEvaluatorsResponse) SetEvaluators(val []*AnnotationEvaluator) { - p.Evaluators = val + +func (p *PreviewExportTracesToDatasetRequest) GetStartTime() (v int64) { + if p != nil { + return p.StartTime + } + return } -func (p *ListAnnotationEvaluatorsResponse) SetBaseResp(val *base.BaseResp) { - p.BaseResp = val + +func (p *PreviewExportTracesToDatasetRequest) GetEndTime() (v int64) { + if p != nil { + return p.EndTime + } + return } -var fieldIDToName_ListAnnotationEvaluatorsResponse = map[int16]string{ - 1: "evaluators", - 255: "BaseResp", +var PreviewExportTracesToDatasetRequest_PlatformType_DEFAULT common.PlatformType + +func (p *PreviewExportTracesToDatasetRequest) GetPlatformType() (v common.PlatformType) { + if p == nil { + return + } + if !p.IsSetPlatformType() { + return PreviewExportTracesToDatasetRequest_PlatformType_DEFAULT + } + return *p.PlatformType } -func (p *ListAnnotationEvaluatorsResponse) IsSetBaseResp() bool { - return p.BaseResp != nil +func (p *PreviewExportTracesToDatasetRequest) GetExportType() (v dataset0.ExportType) { + if p != nil { + return p.ExportType + } + return } -func (p *ListAnnotationEvaluatorsResponse) Read(iprot thrift.TProtocol) (err error) { +var PreviewExportTracesToDatasetRequest_FieldMappings_DEFAULT []*dataset0.FieldMapping + +func (p *PreviewExportTracesToDatasetRequest) GetFieldMappings() (v []*dataset0.FieldMapping) { + if p == nil { + return + } + if !p.IsSetFieldMappings() { + return PreviewExportTracesToDatasetRequest_FieldMappings_DEFAULT + } + return p.FieldMappings +} + +var PreviewExportTracesToDatasetRequest_Base_DEFAULT *base.Base + +func (p *PreviewExportTracesToDatasetRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return PreviewExportTracesToDatasetRequest_Base_DEFAULT + } + return p.Base +} +func (p *PreviewExportTracesToDatasetRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *PreviewExportTracesToDatasetRequest) SetSpanIds(val []*SpanID) { + p.SpanIds = val +} +func (p *PreviewExportTracesToDatasetRequest) SetCategory(val dataset.DatasetCategory) { + p.Category = val +} +func (p *PreviewExportTracesToDatasetRequest) SetConfig(val *DatasetConfig) { + p.Config = val +} +func (p *PreviewExportTracesToDatasetRequest) SetStartTime(val int64) { + p.StartTime = val +} +func (p *PreviewExportTracesToDatasetRequest) SetEndTime(val int64) { + p.EndTime = val +} +func (p *PreviewExportTracesToDatasetRequest) SetPlatformType(val *common.PlatformType) { + p.PlatformType = val +} +func (p *PreviewExportTracesToDatasetRequest) SetExportType(val dataset0.ExportType) { + p.ExportType = val +} +func (p *PreviewExportTracesToDatasetRequest) SetFieldMappings(val []*dataset0.FieldMapping) { + p.FieldMappings = val +} +func (p *PreviewExportTracesToDatasetRequest) SetBase(val *base.Base) { + p.Base = val +} + +var fieldIDToName_PreviewExportTracesToDatasetRequest = map[int16]string{ + 1: "workspace_id", + 2: "span_ids", + 3: "category", + 4: "config", + 5: "start_time", + 6: "end_time", + 7: "platform_type", + 8: "export_type", + 9: "field_mappings", + 255: "Base", +} + +func (p *PreviewExportTracesToDatasetRequest) IsSetConfig() bool { + return p.Config != nil +} + +func (p *PreviewExportTracesToDatasetRequest) IsSetPlatformType() bool { + return p.PlatformType != nil +} + +func (p *PreviewExportTracesToDatasetRequest) IsSetFieldMappings() bool { + return p.FieldMappings != nil +} + +func (p *PreviewExportTracesToDatasetRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *PreviewExportTracesToDatasetRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetEvaluators bool = false + var issetWorkspaceID bool = false + var issetSpanIds bool = false + var issetCategory bool = false + var issetConfig bool = false + var issetStartTime bool = false + var issetEndTime bool = false + var issetExportType bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -12491,38 +13388,138 @@ func (p *ListAnnotationEvaluatorsResponse) Read(iprot thrift.TProtocol) (err err switch fieldId { case 1: - if fieldTypeId == thrift.LIST { + if fieldTypeId == thrift.I64 { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetEvaluators = true + issetWorkspaceID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { + case 2: + if fieldTypeId == thrift.LIST { + if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } + issetSpanIds = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - default: - if err = iprot.Skip(fieldTypeId); err != nil { + case 3: + if fieldTypeId == thrift.I32 { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetCategory = true + } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - if !issetEvaluators { - fieldId = 1 - goto RequiredFieldNotSetError + case 4: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + issetConfig = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.I64 { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + issetStartTime = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.I64 { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + issetEndTime = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 7: + if fieldTypeId == thrift.STRING { + if err = p.ReadField7(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 8: + if fieldTypeId == thrift.STRING { + if err = p.ReadField8(iprot); err != nil { + goto ReadFieldError + } + issetExportType = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 9: + if fieldTypeId == thrift.LIST { + if err = p.ReadField9(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetSpanIds { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetCategory { + fieldId = 3 + goto RequiredFieldNotSetError + } + + if !issetConfig { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetStartTime { + fieldId = 5 + goto RequiredFieldNotSetError + } + + if !issetEndTime { + fieldId = 6 + goto RequiredFieldNotSetError + } + + if !issetExportType { + fieldId = 8 + goto RequiredFieldNotSetError } return nil ReadStructBeginError: @@ -12530,7 +13527,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_PreviewExportTracesToDatasetRequest[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12539,16 +13536,27 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId])) + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_PreviewExportTracesToDatasetRequest[fieldId])) } -func (p *ListAnnotationEvaluatorsResponse) ReadField1(iprot thrift.TProtocol) error { +func (p *PreviewExportTracesToDatasetRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *PreviewExportTracesToDatasetRequest) ReadField2(iprot thrift.TProtocol) error { _, size, err := iprot.ReadListBegin() if err != nil { return err } - _field := make([]*AnnotationEvaluator, 0, size) - values := make([]AnnotationEvaluator, size) + _field := make([]*SpanID, 0, size) + values := make([]SpanID, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -12562,21 +13570,107 @@ func (p *ListAnnotationEvaluatorsResponse) ReadField1(iprot thrift.TProtocol) er if err := iprot.ReadListEnd(); err != nil { return err } - p.Evaluators = _field + p.SpanIds = _field return nil } -func (p *ListAnnotationEvaluatorsResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() +func (p *PreviewExportTracesToDatasetRequest) ReadField3(iprot thrift.TProtocol) error { + + var _field dataset.DatasetCategory + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + _field = dataset.DatasetCategory(v) + } + p.Category = _field + return nil +} +func (p *PreviewExportTracesToDatasetRequest) ReadField4(iprot thrift.TProtocol) error { + _field := NewDatasetConfig() if err := _field.Read(iprot); err != nil { return err } - p.BaseResp = _field + p.Config = _field return nil } +func (p *PreviewExportTracesToDatasetRequest) ReadField5(iprot thrift.TProtocol) error { -func (p *ListAnnotationEvaluatorsResponse) Write(oprot thrift.TProtocol) (err error) { + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.StartTime = _field + return nil +} +func (p *PreviewExportTracesToDatasetRequest) ReadField6(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EndTime = _field + return nil +} +func (p *PreviewExportTracesToDatasetRequest) ReadField7(iprot thrift.TProtocol) error { + + var _field *common.PlatformType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.PlatformType = _field + return nil +} +func (p *PreviewExportTracesToDatasetRequest) ReadField8(iprot thrift.TProtocol) error { + + var _field dataset0.ExportType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.ExportType = _field + return nil +} +func (p *PreviewExportTracesToDatasetRequest) ReadField9(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*dataset0.FieldMapping, 0, size) + values := make([]dataset0.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldMappings = _field + return nil +} +func (p *PreviewExportTracesToDatasetRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *PreviewExportTracesToDatasetRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListAnnotationEvaluatorsResponse"); err != nil { + if err = oprot.WriteStructBegin("PreviewExportTracesToDatasetRequest"); err != nil { goto WriteStructBeginError } if p != nil { @@ -12584,6 +13678,38 @@ func (p *ListAnnotationEvaluatorsResponse) Write(oprot thrift.TProtocol) (err er fieldId = 1 goto WriteFieldError } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + if err = p.writeField7(oprot); err != nil { + fieldId = 7 + goto WriteFieldError + } + if err = p.writeField8(oprot); err != nil { + fieldId = 8 + goto WriteFieldError + } + if err = p.writeField9(oprot); err != nil { + fieldId = 9 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -12606,14 +13732,30 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *ListAnnotationEvaluatorsResponse) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluators", thrift.LIST, 1); err != nil { +func (p *PreviewExportTracesToDatasetRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Evaluators)); err != nil { + if err := oprot.WriteI64(p.WorkspaceID); err != nil { return err } - for _, v := range p.Evaluators { + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *PreviewExportTracesToDatasetRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_ids", thrift.LIST, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.SpanIds)); err != nil { + return err + } + for _, v := range p.SpanIds { if err := v.Write(oprot); err != nil { return err } @@ -12626,16 +13768,140 @@ func (p *ListAnnotationEvaluatorsResponse) writeField1(oprot thrift.TProtocol) ( } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *ListAnnotationEvaluatorsResponse) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBaseResp() { - if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.BaseResp.Write(oprot); err != nil { +func (p *PreviewExportTracesToDatasetRequest) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("category", thrift.I32, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(int32(p.Category)); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *PreviewExportTracesToDatasetRequest) writeField4(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("config", thrift.STRUCT, 4); err != nil { + goto WriteFieldBeginError + } + if err := p.Config.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *PreviewExportTracesToDatasetRequest) writeField5(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("start_time", thrift.I64, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.StartTime); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *PreviewExportTracesToDatasetRequest) writeField6(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("end_time", thrift.I64, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EndTime); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} +func (p *PreviewExportTracesToDatasetRequest) writeField7(oprot thrift.TProtocol) (err error) { + if p.IsSetPlatformType() { + if err = oprot.WriteFieldBegin("platform_type", thrift.STRING, 7); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.PlatformType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) +} +func (p *PreviewExportTracesToDatasetRequest) writeField8(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("export_type", thrift.STRING, 8); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.ExportType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 8 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 8 end error: ", p), err) +} +func (p *PreviewExportTracesToDatasetRequest) writeField9(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldMappings() { + if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 9); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { + return err + } + for _, v := range p.FieldMappings { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 end error: ", p), err) +} +func (p *PreviewExportTracesToDatasetRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -12649,35 +13915,66 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *ListAnnotationEvaluatorsResponse) String() string { +func (p *PreviewExportTracesToDatasetRequest) String() string { if p == nil { return "" } - return fmt.Sprintf("ListAnnotationEvaluatorsResponse(%+v)", *p) + return fmt.Sprintf("PreviewExportTracesToDatasetRequest(%+v)", *p) } -func (p *ListAnnotationEvaluatorsResponse) DeepEqual(ano *ListAnnotationEvaluatorsResponse) bool { +func (p *PreviewExportTracesToDatasetRequest) DeepEqual(ano *PreviewExportTracesToDatasetRequest) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.Evaluators) { + if !p.Field1DeepEqual(ano.WorkspaceID) { return false } - if !p.Field255DeepEqual(ano.BaseResp) { + if !p.Field2DeepEqual(ano.SpanIds) { + return false + } + if !p.Field3DeepEqual(ano.Category) { + return false + } + if !p.Field4DeepEqual(ano.Config) { + return false + } + if !p.Field5DeepEqual(ano.StartTime) { + return false + } + if !p.Field6DeepEqual(ano.EndTime) { + return false + } + if !p.Field7DeepEqual(ano.PlatformType) { + return false + } + if !p.Field8DeepEqual(ano.ExportType) { + return false + } + if !p.Field9DeepEqual(ano.FieldMappings) { + return false + } + if !p.Field255DeepEqual(ano.Base) { return false } return true } -func (p *ListAnnotationEvaluatorsResponse) Field1DeepEqual(src []*AnnotationEvaluator) bool { +func (p *PreviewExportTracesToDatasetRequest) Field1DeepEqual(src int64) bool { - if len(p.Evaluators) != len(src) { + if p.WorkspaceID != src { return false } - for i, v := range p.Evaluators { + return true +} +func (p *PreviewExportTracesToDatasetRequest) Field2DeepEqual(src []*SpanID) bool { + + if len(p.SpanIds) != len(src) { + return false + } + for i, v := range p.SpanIds { _src := src[i] if !v.DeepEqual(_src) { return false @@ -12685,174 +13982,199 @@ func (p *ListAnnotationEvaluatorsResponse) Field1DeepEqual(src []*AnnotationEval } return true } -func (p *ListAnnotationEvaluatorsResponse) Field255DeepEqual(src *base.BaseResp) bool { +func (p *PreviewExportTracesToDatasetRequest) Field3DeepEqual(src dataset.DatasetCategory) bool { - if !p.BaseResp.DeepEqual(src) { + if p.Category != src { return false } return true } +func (p *PreviewExportTracesToDatasetRequest) Field4DeepEqual(src *DatasetConfig) bool { -type ExtractSpanInfoRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" json:"trace_id,required" query:"trace_id,required"` - SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" json:"span_ids,required" query:"span_ids,required"` - StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" query:"start_time" ` - EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" query:"end_time" ` - PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` - FieldMappings []*task.FieldMapping `thrift:"field_mappings,7,optional" frugal:"7,optional,list" form:"field_mappings" json:"field_mappings,omitempty" query:"field_mappings"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` + if !p.Config.DeepEqual(src) { + return false + } + return true } +func (p *PreviewExportTracesToDatasetRequest) Field5DeepEqual(src int64) bool { -func NewExtractSpanInfoRequest() *ExtractSpanInfoRequest { - return &ExtractSpanInfoRequest{} + if p.StartTime != src { + return false + } + return true } +func (p *PreviewExportTracesToDatasetRequest) Field6DeepEqual(src int64) bool { -func (p *ExtractSpanInfoRequest) InitDefault() { + if p.EndTime != src { + return false + } + return true } +func (p *PreviewExportTracesToDatasetRequest) Field7DeepEqual(src *common.PlatformType) bool { -func (p *ExtractSpanInfoRequest) GetWorkspaceID() (v int64) { - if p != nil { - return p.WorkspaceID + if p.PlatformType == src { + return true + } else if p.PlatformType == nil || src == nil { + return false } - return + if strings.Compare(*p.PlatformType, *src) != 0 { + return false + } + return true } +func (p *PreviewExportTracesToDatasetRequest) Field8DeepEqual(src dataset0.ExportType) bool { -func (p *ExtractSpanInfoRequest) GetTraceID() (v string) { - if p != nil { - return p.TraceID + if strings.Compare(p.ExportType, src) != 0 { + return false } - return + return true } +func (p *PreviewExportTracesToDatasetRequest) Field9DeepEqual(src []*dataset0.FieldMapping) bool { -func (p *ExtractSpanInfoRequest) GetSpanIds() (v []string) { - if p != nil { - return p.SpanIds + if len(p.FieldMappings) != len(src) { + return false } - return + for i, v := range p.FieldMappings { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true } +func (p *PreviewExportTracesToDatasetRequest) Field255DeepEqual(src *base.Base) bool { -var ExtractSpanInfoRequest_StartTime_DEFAULT int64 + if !p.Base.DeepEqual(src) { + return false + } + return true +} -func (p *ExtractSpanInfoRequest) GetStartTime() (v int64) { +type PreviewExportTracesToDatasetResponse struct { + // 预览数据 + Items []*dataset0.Item `thrift:"items,1,optional" frugal:"1,optional,list" form:"items" json:"items,omitempty" query:"items"` + // 概要错误信息 + Errors []*dataset.ItemErrorGroup `thrift:"errors,2,optional" frugal:"2,optional,list" form:"errors" json:"errors,omitempty" query:"errors"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"-" json:"-" query:"-"` + // 仅供http请求使用; 内部RPC不予使用,统一通过BaseResp获取Code和Msg + Code *int32 `thrift:"Code,256,optional" frugal:"256,optional,i32" form:"Code" json:"Code,omitempty" query:"Code"` + // 仅供http请求使用; 内部RPC不予使用,统一通过BaseResp获取Code和Msg + Msg *string `thrift:"Msg,257,optional" frugal:"257,optional,string" form:"Msg" json:"Msg,omitempty" query:"Msg"` +} + +func NewPreviewExportTracesToDatasetResponse() *PreviewExportTracesToDatasetResponse { + return &PreviewExportTracesToDatasetResponse{} +} + +func (p *PreviewExportTracesToDatasetResponse) InitDefault() { +} + +var PreviewExportTracesToDatasetResponse_Items_DEFAULT []*dataset0.Item + +func (p *PreviewExportTracesToDatasetResponse) GetItems() (v []*dataset0.Item) { if p == nil { return } - if !p.IsSetStartTime() { - return ExtractSpanInfoRequest_StartTime_DEFAULT + if !p.IsSetItems() { + return PreviewExportTracesToDatasetResponse_Items_DEFAULT } - return *p.StartTime + return p.Items } -var ExtractSpanInfoRequest_EndTime_DEFAULT int64 +var PreviewExportTracesToDatasetResponse_Errors_DEFAULT []*dataset.ItemErrorGroup -func (p *ExtractSpanInfoRequest) GetEndTime() (v int64) { +func (p *PreviewExportTracesToDatasetResponse) GetErrors() (v []*dataset.ItemErrorGroup) { if p == nil { return } - if !p.IsSetEndTime() { - return ExtractSpanInfoRequest_EndTime_DEFAULT + if !p.IsSetErrors() { + return PreviewExportTracesToDatasetResponse_Errors_DEFAULT } - return *p.EndTime + return p.Errors } -var ExtractSpanInfoRequest_PlatformType_DEFAULT common.PlatformType +var PreviewExportTracesToDatasetResponse_BaseResp_DEFAULT *base.BaseResp -func (p *ExtractSpanInfoRequest) GetPlatformType() (v common.PlatformType) { +func (p *PreviewExportTracesToDatasetResponse) GetBaseResp() (v *base.BaseResp) { if p == nil { return } - if !p.IsSetPlatformType() { - return ExtractSpanInfoRequest_PlatformType_DEFAULT + if !p.IsSetBaseResp() { + return PreviewExportTracesToDatasetResponse_BaseResp_DEFAULT } - return *p.PlatformType + return p.BaseResp } -var ExtractSpanInfoRequest_FieldMappings_DEFAULT []*task.FieldMapping +var PreviewExportTracesToDatasetResponse_Code_DEFAULT int32 -func (p *ExtractSpanInfoRequest) GetFieldMappings() (v []*task.FieldMapping) { +func (p *PreviewExportTracesToDatasetResponse) GetCode() (v int32) { if p == nil { return } - if !p.IsSetFieldMappings() { - return ExtractSpanInfoRequest_FieldMappings_DEFAULT + if !p.IsSetCode() { + return PreviewExportTracesToDatasetResponse_Code_DEFAULT } - return p.FieldMappings + return *p.Code } -var ExtractSpanInfoRequest_Base_DEFAULT *base.Base +var PreviewExportTracesToDatasetResponse_Msg_DEFAULT string -func (p *ExtractSpanInfoRequest) GetBase() (v *base.Base) { +func (p *PreviewExportTracesToDatasetResponse) GetMsg() (v string) { if p == nil { return } - if !p.IsSetBase() { - return ExtractSpanInfoRequest_Base_DEFAULT + if !p.IsSetMsg() { + return PreviewExportTracesToDatasetResponse_Msg_DEFAULT } - return p.Base + return *p.Msg } -func (p *ExtractSpanInfoRequest) SetWorkspaceID(val int64) { - p.WorkspaceID = val +func (p *PreviewExportTracesToDatasetResponse) SetItems(val []*dataset0.Item) { + p.Items = val } -func (p *ExtractSpanInfoRequest) SetTraceID(val string) { - p.TraceID = val +func (p *PreviewExportTracesToDatasetResponse) SetErrors(val []*dataset.ItemErrorGroup) { + p.Errors = val } -func (p *ExtractSpanInfoRequest) SetSpanIds(val []string) { - p.SpanIds = val +func (p *PreviewExportTracesToDatasetResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val } -func (p *ExtractSpanInfoRequest) SetStartTime(val *int64) { - p.StartTime = val -} -func (p *ExtractSpanInfoRequest) SetEndTime(val *int64) { - p.EndTime = val -} -func (p *ExtractSpanInfoRequest) SetPlatformType(val *common.PlatformType) { - p.PlatformType = val -} -func (p *ExtractSpanInfoRequest) SetFieldMappings(val []*task.FieldMapping) { - p.FieldMappings = val +func (p *PreviewExportTracesToDatasetResponse) SetCode(val *int32) { + p.Code = val } -func (p *ExtractSpanInfoRequest) SetBase(val *base.Base) { - p.Base = val +func (p *PreviewExportTracesToDatasetResponse) SetMsg(val *string) { + p.Msg = val } -var fieldIDToName_ExtractSpanInfoRequest = map[int16]string{ - 1: "workspace_id", - 2: "trace_id", - 3: "span_ids", - 4: "start_time", - 5: "end_time", - 6: "platform_type", - 7: "field_mappings", - 255: "Base", +var fieldIDToName_PreviewExportTracesToDatasetResponse = map[int16]string{ + 1: "items", + 2: "errors", + 255: "BaseResp", + 256: "Code", + 257: "Msg", } -func (p *ExtractSpanInfoRequest) IsSetStartTime() bool { - return p.StartTime != nil +func (p *PreviewExportTracesToDatasetResponse) IsSetItems() bool { + return p.Items != nil } -func (p *ExtractSpanInfoRequest) IsSetEndTime() bool { - return p.EndTime != nil +func (p *PreviewExportTracesToDatasetResponse) IsSetErrors() bool { + return p.Errors != nil } -func (p *ExtractSpanInfoRequest) IsSetPlatformType() bool { - return p.PlatformType != nil +func (p *PreviewExportTracesToDatasetResponse) IsSetBaseResp() bool { + return p.BaseResp != nil } -func (p *ExtractSpanInfoRequest) IsSetFieldMappings() bool { - return p.FieldMappings != nil +func (p *PreviewExportTracesToDatasetResponse) IsSetCode() bool { + return p.Code != nil } -func (p *ExtractSpanInfoRequest) IsSetBase() bool { - return p.Base != nil +func (p *PreviewExportTracesToDatasetResponse) IsSetMsg() bool { + return p.Msg != nil } -func (p *ExtractSpanInfoRequest) Read(iprot thrift.TProtocol) (err error) { +func (p *PreviewExportTracesToDatasetResponse) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetWorkspaceID bool = false - var issetTraceID bool = false - var issetSpanIds bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -12869,67 +14191,40 @@ func (p *ExtractSpanInfoRequest) Read(iprot thrift.TProtocol) (err error) { switch fieldId { case 1: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.LIST { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetWorkspaceID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 2: - if fieldTypeId == thrift.STRING { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - issetTraceID = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 3: if fieldTypeId == thrift.LIST { - if err = p.ReadField3(iprot); err != nil { + if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } - issetSpanIds = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 4: - if fieldTypeId == thrift.I64 { - if err = p.ReadField4(iprot); err != nil { + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 5: - if fieldTypeId == thrift.I64 { - if err = p.ReadField5(iprot); err != nil { + case 256: + if fieldTypeId == thrift.I32 { + if err = p.ReadField256(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 6: + case 257: if fieldTypeId == thrift.STRING { - if err = p.ReadField6(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 7: - if fieldTypeId == thrift.LIST { - if err = p.ReadField7(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { + if err = p.ReadField257(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { @@ -12948,27 +14243,13 @@ func (p *ExtractSpanInfoRequest) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } - if !issetWorkspaceID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetTraceID { - fieldId = 2 - goto RequiredFieldNotSetError - } - - if !issetSpanIds { - fieldId = 3 - goto RequiredFieldNotSetError - } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoRequest[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_PreviewExportTracesToDatasetResponse[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12976,45 +14257,44 @@ ReadFieldEndError: return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ExtractSpanInfoRequest[fieldId])) } -func (p *ExtractSpanInfoRequest) ReadField1(iprot thrift.TProtocol) error { - - var _field int64 - if v, err := iprot.ReadI64(); err != nil { +func (p *PreviewExportTracesToDatasetResponse) ReadField1(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { return err - } else { - _field = v } - p.WorkspaceID = _field - return nil -} -func (p *ExtractSpanInfoRequest) ReadField2(iprot thrift.TProtocol) error { + _field := make([]*dataset0.Item, 0, size) + values := make([]dataset0.Item, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() - var _field string - if v, err := iprot.ReadString(); err != nil { + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { return err - } else { - _field = v } - p.TraceID = _field + p.Items = _field return nil } -func (p *ExtractSpanInfoRequest) ReadField3(iprot thrift.TProtocol) error { +func (p *PreviewExportTracesToDatasetResponse) ReadField2(iprot thrift.TProtocol) error { _, size, err := iprot.ReadListBegin() if err != nil { return err } - _field := make([]string, 0, size) + _field := make([]*dataset.ItemErrorGroup, 0, size) + values := make([]dataset.ItemErrorGroup, size) for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() - var _elem string - if v, err := iprot.ReadString(); err != nil { + if err := _elem.Read(iprot); err != nil { return err - } else { - _elem = v } _field = append(_field, _elem) @@ -13022,77 +14302,43 @@ func (p *ExtractSpanInfoRequest) ReadField3(iprot thrift.TProtocol) error { if err := iprot.ReadListEnd(); err != nil { return err } - p.SpanIds = _field + p.Errors = _field return nil } -func (p *ExtractSpanInfoRequest) ReadField4(iprot thrift.TProtocol) error { - - var _field *int64 - if v, err := iprot.ReadI64(); err != nil { +func (p *PreviewExportTracesToDatasetResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { return err - } else { - _field = &v } - p.StartTime = _field + p.BaseResp = _field return nil } -func (p *ExtractSpanInfoRequest) ReadField5(iprot thrift.TProtocol) error { +func (p *PreviewExportTracesToDatasetResponse) ReadField256(iprot thrift.TProtocol) error { - var _field *int64 - if v, err := iprot.ReadI64(); err != nil { + var _field *int32 + if v, err := iprot.ReadI32(); err != nil { return err } else { _field = &v } - p.EndTime = _field + p.Code = _field return nil } -func (p *ExtractSpanInfoRequest) ReadField6(iprot thrift.TProtocol) error { +func (p *PreviewExportTracesToDatasetResponse) ReadField257(iprot thrift.TProtocol) error { - var _field *common.PlatformType + var _field *string if v, err := iprot.ReadString(); err != nil { return err } else { _field = &v } - p.PlatformType = _field - return nil -} -func (p *ExtractSpanInfoRequest) ReadField7(iprot thrift.TProtocol) error { - _, size, err := iprot.ReadListBegin() - if err != nil { - return err - } - _field := make([]*task.FieldMapping, 0, size) - values := make([]task.FieldMapping, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - - if err := _elem.Read(iprot); err != nil { - return err - } - - _field = append(_field, _elem) - } - if err := iprot.ReadListEnd(); err != nil { - return err - } - p.FieldMappings = _field - return nil -} -func (p *ExtractSpanInfoRequest) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBase() - if err := _field.Read(iprot); err != nil { - return err - } - p.Base = _field + p.Msg = _field return nil } -func (p *ExtractSpanInfoRequest) Write(oprot thrift.TProtocol) (err error) { +func (p *PreviewExportTracesToDatasetResponse) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ExtractSpanInfoRequest"); err != nil { + if err = oprot.WriteStructBegin("PreviewExportTracesToDatasetResponse"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13104,28 +14350,16 @@ func (p *ExtractSpanInfoRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 2 goto WriteFieldError } - if err = p.writeField3(oprot); err != nil { - fieldId = 3 - goto WriteFieldError - } - if err = p.writeField4(oprot); err != nil { - fieldId = 4 - goto WriteFieldError - } - if err = p.writeField5(oprot); err != nil { - fieldId = 5 - goto WriteFieldError - } - if err = p.writeField6(oprot); err != nil { - fieldId = 6 + if err = p.writeField255(oprot); err != nil { + fieldId = 255 goto WriteFieldError } - if err = p.writeField7(oprot); err != nil { - fieldId = 7 + if err = p.writeField256(oprot); err != nil { + fieldId = 256 goto WriteFieldError } - if err = p.writeField255(oprot); err != nil { - fieldId = 255 + if err = p.writeField257(oprot); err != nil { + fieldId = 257 goto WriteFieldError } } @@ -13146,15 +14380,25 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *ExtractSpanInfoRequest) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.WorkspaceID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError +func (p *PreviewExportTracesToDatasetResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetItems() { + if err = oprot.WriteFieldBegin("items", thrift.LIST, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Items)); err != nil { + return err + } + for _, v := range p.Items { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -13162,15 +14406,25 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *ExtractSpanInfoRequest) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("trace_id", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(p.TraceID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError +func (p *PreviewExportTracesToDatasetResponse) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetErrors() { + if err = oprot.WriteFieldBegin("errors", thrift.LIST, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Errors)); err != nil { + return err + } + for _, v := range p.Errors { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -13178,72 +14432,12 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *ExtractSpanInfoRequest) writeField3(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("span_ids", thrift.LIST, 3); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteListBegin(thrift.STRING, len(p.SpanIds)); err != nil { - return err - } - for _, v := range p.SpanIds { - if err := oprot.WriteString(v); err != nil { - return err - } - } - if err := oprot.WriteListEnd(); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) -} -func (p *ExtractSpanInfoRequest) writeField4(oprot thrift.TProtocol) (err error) { - if p.IsSetStartTime() { - if err = oprot.WriteFieldBegin("start_time", thrift.I64, 4); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(*p.StartTime); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) -} -func (p *ExtractSpanInfoRequest) writeField5(oprot thrift.TProtocol) (err error) { - if p.IsSetEndTime() { - if err = oprot.WriteFieldBegin("end_time", thrift.I64, 5); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(*p.EndTime); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) -} -func (p *ExtractSpanInfoRequest) writeField6(oprot thrift.TProtocol) (err error) { - if p.IsSetPlatformType() { - if err = oprot.WriteFieldBegin("platform_type", thrift.STRING, 6); err != nil { +func (p *PreviewExportTracesToDatasetResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(*p.PlatformType); err != nil { + if err := p.BaseResp.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -13252,24 +14446,16 @@ func (p *ExtractSpanInfoRequest) writeField6(oprot thrift.TProtocol) (err error) } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *ExtractSpanInfoRequest) writeField7(oprot thrift.TProtocol) (err error) { - if p.IsSetFieldMappings() { - if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 7); err != nil { +func (p *PreviewExportTracesToDatasetResponse) writeField256(oprot thrift.TProtocol) (err error) { + if p.IsSetCode() { + if err = oprot.WriteFieldBegin("Code", thrift.I32, 256); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { - return err - } - for _, v := range p.FieldMappings { - if err := v.Write(oprot); err != nil { - return err - } - } - if err := oprot.WriteListEnd(); err != nil { + if err := oprot.WriteI32(*p.Code); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -13278,16 +14464,16 @@ func (p *ExtractSpanInfoRequest) writeField7(oprot thrift.TProtocol) (err error) } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 256 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 256 end error: ", p), err) } -func (p *ExtractSpanInfoRequest) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBase() { - if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { +func (p *PreviewExportTracesToDatasetResponse) writeField257(oprot thrift.TProtocol) (err error) { + if p.IsSetMsg() { + if err = oprot.WriteFieldBegin("Msg", thrift.STRING, 257); err != nil { goto WriteFieldBeginError } - if err := p.Base.Write(oprot); err != nil { + if err := oprot.WriteString(*p.Msg); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -13296,215 +14482,212 @@ func (p *ExtractSpanInfoRequest) writeField255(oprot thrift.TProtocol) (err erro } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 257 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 257 end error: ", p), err) } -func (p *ExtractSpanInfoRequest) String() string { +func (p *PreviewExportTracesToDatasetResponse) String() string { if p == nil { return "" } - return fmt.Sprintf("ExtractSpanInfoRequest(%+v)", *p) + return fmt.Sprintf("PreviewExportTracesToDatasetResponse(%+v)", *p) } -func (p *ExtractSpanInfoRequest) DeepEqual(ano *ExtractSpanInfoRequest) bool { +func (p *PreviewExportTracesToDatasetResponse) DeepEqual(ano *PreviewExportTracesToDatasetResponse) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.WorkspaceID) { - return false - } - if !p.Field2DeepEqual(ano.TraceID) { - return false - } - if !p.Field3DeepEqual(ano.SpanIds) { - return false - } - if !p.Field4DeepEqual(ano.StartTime) { + if !p.Field1DeepEqual(ano.Items) { return false } - if !p.Field5DeepEqual(ano.EndTime) { + if !p.Field2DeepEqual(ano.Errors) { return false } - if !p.Field6DeepEqual(ano.PlatformType) { + if !p.Field255DeepEqual(ano.BaseResp) { return false } - if !p.Field7DeepEqual(ano.FieldMappings) { + if !p.Field256DeepEqual(ano.Code) { return false } - if !p.Field255DeepEqual(ano.Base) { + if !p.Field257DeepEqual(ano.Msg) { return false } return true } -func (p *ExtractSpanInfoRequest) Field1DeepEqual(src int64) bool { +func (p *PreviewExportTracesToDatasetResponse) Field1DeepEqual(src []*dataset0.Item) bool { - if p.WorkspaceID != src { + if len(p.Items) != len(src) { return false } - return true -} -func (p *ExtractSpanInfoRequest) Field2DeepEqual(src string) bool { - - if strings.Compare(p.TraceID, src) != 0 { - return false + for i, v := range p.Items { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } } return true } -func (p *ExtractSpanInfoRequest) Field3DeepEqual(src []string) bool { +func (p *PreviewExportTracesToDatasetResponse) Field2DeepEqual(src []*dataset.ItemErrorGroup) bool { - if len(p.SpanIds) != len(src) { + if len(p.Errors) != len(src) { return false } - for i, v := range p.SpanIds { + for i, v := range p.Errors { _src := src[i] - if strings.Compare(v, _src) != 0 { + if !v.DeepEqual(_src) { return false } } return true } -func (p *ExtractSpanInfoRequest) Field4DeepEqual(src *int64) bool { +func (p *PreviewExportTracesToDatasetResponse) Field255DeepEqual(src *base.BaseResp) bool { - if p.StartTime == src { - return true - } else if p.StartTime == nil || src == nil { - return false - } - if *p.StartTime != *src { + if !p.BaseResp.DeepEqual(src) { return false } return true } -func (p *ExtractSpanInfoRequest) Field5DeepEqual(src *int64) bool { +func (p *PreviewExportTracesToDatasetResponse) Field256DeepEqual(src *int32) bool { - if p.EndTime == src { + if p.Code == src { return true - } else if p.EndTime == nil || src == nil { + } else if p.Code == nil || src == nil { return false } - if *p.EndTime != *src { + if *p.Code != *src { return false } return true } -func (p *ExtractSpanInfoRequest) Field6DeepEqual(src *common.PlatformType) bool { +func (p *PreviewExportTracesToDatasetResponse) Field257DeepEqual(src *string) bool { - if p.PlatformType == src { + if p.Msg == src { return true - } else if p.PlatformType == nil || src == nil { + } else if p.Msg == nil || src == nil { return false } - if strings.Compare(*p.PlatformType, *src) != 0 { + if strings.Compare(*p.Msg, *src) != 0 { return false } return true } -func (p *ExtractSpanInfoRequest) Field7DeepEqual(src []*task.FieldMapping) bool { - if len(p.FieldMappings) != len(src) { - return false - } - for i, v := range p.FieldMappings { - _src := src[i] - if !v.DeepEqual(_src) { - return false - } - } - return true +type ChangeEvaluatorScoreRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + EvaluatorRecordID int64 `thrift:"evaluator_record_id,2,required" frugal:"2,required,i64" json:"evaluator_record_id,required" query:"evaluator_record_id,required"` + SpanID string `thrift:"span_id,3,required" frugal:"3,required,string" json:"span_id,required" query:"span_id,required"` + StartTime int64 `thrift:"start_time,4,required" frugal:"4,required,i64" json:"start_time" query:"start_time,required" ` + Correction *annotation.Correction `thrift:"correction,5,required" frugal:"5,required,annotation.Correction" json:"correction,required" query:"correction,required"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } -func (p *ExtractSpanInfoRequest) Field255DeepEqual(src *base.Base) bool { - if !p.Base.DeepEqual(src) { - return false - } - return true +func NewChangeEvaluatorScoreRequest() *ChangeEvaluatorScoreRequest { + return &ChangeEvaluatorScoreRequest{} } -type FieldData struct { - Key *string `thrift:"key,1,optional" frugal:"1,optional,string" form:"key" json:"key,omitempty" query:"key"` - Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty" query:"name"` - Content *Content `thrift:"content,3,optional" frugal:"3,optional,Content" form:"content" json:"content,omitempty" query:"content"` +func (p *ChangeEvaluatorScoreRequest) InitDefault() { } -func NewFieldData() *FieldData { - return &FieldData{} +func (p *ChangeEvaluatorScoreRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return } -func (p *FieldData) InitDefault() { +func (p *ChangeEvaluatorScoreRequest) GetEvaluatorRecordID() (v int64) { + if p != nil { + return p.EvaluatorRecordID + } + return } -var FieldData_Key_DEFAULT string - -func (p *FieldData) GetKey() (v string) { - if p == nil { - return +func (p *ChangeEvaluatorScoreRequest) GetSpanID() (v string) { + if p != nil { + return p.SpanID } - if !p.IsSetKey() { - return FieldData_Key_DEFAULT + return +} + +func (p *ChangeEvaluatorScoreRequest) GetStartTime() (v int64) { + if p != nil { + return p.StartTime } - return *p.Key + return } -var FieldData_Name_DEFAULT string +var ChangeEvaluatorScoreRequest_Correction_DEFAULT *annotation.Correction -func (p *FieldData) GetName() (v string) { +func (p *ChangeEvaluatorScoreRequest) GetCorrection() (v *annotation.Correction) { if p == nil { return } - if !p.IsSetName() { - return FieldData_Name_DEFAULT + if !p.IsSetCorrection() { + return ChangeEvaluatorScoreRequest_Correction_DEFAULT } - return *p.Name + return p.Correction } -var FieldData_Content_DEFAULT *Content +var ChangeEvaluatorScoreRequest_Base_DEFAULT *base.Base -func (p *FieldData) GetContent() (v *Content) { +func (p *ChangeEvaluatorScoreRequest) GetBase() (v *base.Base) { if p == nil { return } - if !p.IsSetContent() { - return FieldData_Content_DEFAULT + if !p.IsSetBase() { + return ChangeEvaluatorScoreRequest_Base_DEFAULT } - return p.Content + return p.Base } -func (p *FieldData) SetKey(val *string) { - p.Key = val +func (p *ChangeEvaluatorScoreRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val } -func (p *FieldData) SetName(val *string) { - p.Name = val +func (p *ChangeEvaluatorScoreRequest) SetEvaluatorRecordID(val int64) { + p.EvaluatorRecordID = val } -func (p *FieldData) SetContent(val *Content) { - p.Content = val +func (p *ChangeEvaluatorScoreRequest) SetSpanID(val string) { + p.SpanID = val } - -var fieldIDToName_FieldData = map[int16]string{ - 1: "key", - 2: "name", - 3: "content", +func (p *ChangeEvaluatorScoreRequest) SetStartTime(val int64) { + p.StartTime = val +} +func (p *ChangeEvaluatorScoreRequest) SetCorrection(val *annotation.Correction) { + p.Correction = val +} +func (p *ChangeEvaluatorScoreRequest) SetBase(val *base.Base) { + p.Base = val } -func (p *FieldData) IsSetKey() bool { - return p.Key != nil +var fieldIDToName_ChangeEvaluatorScoreRequest = map[int16]string{ + 1: "workspace_id", + 2: "evaluator_record_id", + 3: "span_id", + 4: "start_time", + 5: "correction", + 255: "Base", } -func (p *FieldData) IsSetName() bool { - return p.Name != nil +func (p *ChangeEvaluatorScoreRequest) IsSetCorrection() bool { + return p.Correction != nil } -func (p *FieldData) IsSetContent() bool { - return p.Content != nil +func (p *ChangeEvaluatorScoreRequest) IsSetBase() bool { + return p.Base != nil } -func (p *FieldData) Read(iprot thrift.TProtocol) (err error) { +func (p *ChangeEvaluatorScoreRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 + var issetWorkspaceID bool = false + var issetEvaluatorRecordID bool = false + var issetSpanID bool = false + var issetStartTime bool = false + var issetCorrection bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -13521,26 +14704,55 @@ func (p *FieldData) Read(iprot thrift.TProtocol) (err error) { switch fieldId { case 1: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I64 { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } + issetWorkspaceID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 2: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I64 { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } + issetEvaluatorRecordID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 3: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.STRING { if err = p.ReadField3(iprot); err != nil { goto ReadFieldError } + issetSpanID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.I64 { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + issetStartTime = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + issetCorrection = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -13557,13 +14769,37 @@ func (p *FieldData) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorRecordID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetSpanID { + fieldId = 3 + goto RequiredFieldNotSetError + } + + if !issetStartTime { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetCorrection { + fieldId = 5 + goto RequiredFieldNotSetError + } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldData[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreRequest[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -13571,42 +14807,74 @@ ReadFieldEndError: return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreRequest[fieldId])) } -func (p *FieldData) ReadField1(iprot thrift.TProtocol) error { +func (p *ChangeEvaluatorScoreRequest) ReadField1(iprot thrift.TProtocol) error { - var _field *string - if v, err := iprot.ReadString(); err != nil { + var _field int64 + if v, err := iprot.ReadI64(); err != nil { return err } else { - _field = &v + _field = v } - p.Key = _field + p.WorkspaceID = _field return nil } -func (p *FieldData) ReadField2(iprot thrift.TProtocol) error { +func (p *ChangeEvaluatorScoreRequest) ReadField2(iprot thrift.TProtocol) error { - var _field *string + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorRecordID = _field + return nil +} +func (p *ChangeEvaluatorScoreRequest) ReadField3(iprot thrift.TProtocol) error { + + var _field string if v, err := iprot.ReadString(); err != nil { return err } else { - _field = &v + _field = v } - p.Name = _field + p.SpanID = _field return nil } -func (p *FieldData) ReadField3(iprot thrift.TProtocol) error { - _field := NewContent() +func (p *ChangeEvaluatorScoreRequest) ReadField4(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.StartTime = _field + return nil +} +func (p *ChangeEvaluatorScoreRequest) ReadField5(iprot thrift.TProtocol) error { + _field := annotation.NewCorrection() if err := _field.Read(iprot); err != nil { return err } - p.Content = _field + p.Correction = _field + return nil +} +func (p *ChangeEvaluatorScoreRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field return nil } -func (p *FieldData) Write(oprot thrift.TProtocol) (err error) { +func (p *ChangeEvaluatorScoreRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("FieldData"); err != nil { + if err = oprot.WriteStructBegin("ChangeEvaluatorScoreRequest"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13622,6 +14890,18 @@ func (p *FieldData) Write(oprot thrift.TProtocol) (err error) { fieldId = 3 goto WriteFieldError } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -13640,17 +14920,15 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *FieldData) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetKey() { - if err = oprot.WriteFieldBegin("key", thrift.STRING, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Key); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *ChangeEvaluatorScoreRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -13658,17 +14936,15 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *FieldData) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetName() { - if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Name); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *ChangeEvaluatorScoreRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_record_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EvaluatorRecordID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -13676,17 +14952,15 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *FieldData) writeField3(oprot thrift.TProtocol) (err error) { - if p.IsSetContent() { - if err = oprot.WriteFieldBegin("content", thrift.STRUCT, 3); err != nil { - goto WriteFieldBeginError - } - if err := p.Content.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *ChangeEvaluatorScoreRequest) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_id", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.SpanID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -13694,167 +14968,194 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } - -func (p *FieldData) String() string { - if p == nil { - return "" +func (p *ChangeEvaluatorScoreRequest) writeField4(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("start_time", thrift.I64, 4); err != nil { + goto WriteFieldBeginError } - return fmt.Sprintf("FieldData(%+v)", *p) - -} - -func (p *FieldData) DeepEqual(ano *FieldData) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false + if err := oprot.WriteI64(p.StartTime); err != nil { + return err } - if !p.Field1DeepEqual(ano.Key) { - return false + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } - if !p.Field2DeepEqual(ano.Name) { - return false + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *ChangeEvaluatorScoreRequest) writeField5(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("correction", thrift.STRUCT, 5); err != nil { + goto WriteFieldBeginError } - if !p.Field3DeepEqual(ano.Content) { - return false + if err := p.Correction.Write(oprot); err != nil { + return err } - return true + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *ChangeEvaluatorScoreRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *FieldData) Field1DeepEqual(src *string) bool { +func (p *ChangeEvaluatorScoreRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ChangeEvaluatorScoreRequest(%+v)", *p) - if p.Key == src { +} + +func (p *ChangeEvaluatorScoreRequest) DeepEqual(ano *ChangeEvaluatorScoreRequest) bool { + if p == ano { return true - } else if p.Key == nil || src == nil { + } else if p == nil || ano == nil { return false } - if strings.Compare(*p.Key, *src) != 0 { + if !p.Field1DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field2DeepEqual(ano.EvaluatorRecordID) { + return false + } + if !p.Field3DeepEqual(ano.SpanID) { + return false + } + if !p.Field4DeepEqual(ano.StartTime) { + return false + } + if !p.Field5DeepEqual(ano.Correction) { + return false + } + if !p.Field255DeepEqual(ano.Base) { return false } return true } -func (p *FieldData) Field2DeepEqual(src *string) bool { - if p.Name == src { - return true - } else if p.Name == nil || src == nil { +func (p *ChangeEvaluatorScoreRequest) Field1DeepEqual(src int64) bool { + + if p.WorkspaceID != src { return false } - if strings.Compare(*p.Name, *src) != 0 { + return true +} +func (p *ChangeEvaluatorScoreRequest) Field2DeepEqual(src int64) bool { + + if p.EvaluatorRecordID != src { return false } return true } -func (p *FieldData) Field3DeepEqual(src *Content) bool { +func (p *ChangeEvaluatorScoreRequest) Field3DeepEqual(src string) bool { - if !p.Content.DeepEqual(src) { + if strings.Compare(p.SpanID, src) != 0 { return false } return true } +func (p *ChangeEvaluatorScoreRequest) Field4DeepEqual(src int64) bool { -type Content struct { - ContentType *ContentType `thrift:"contentType,1,optional" frugal:"1,optional,string" json:"content_type" form:"contentType" query:"contentType"` - Text *string `thrift:"text,10,optional" frugal:"10,optional,string" json:"text" form:"text" query:"text"` - // 图片内容 - Image *Image `thrift:"image,11,optional" frugal:"11,optional,Image" json:"image" form:"image" query:"image"` - // 图文混排时,图文内容 - MultiPart []*Content `thrift:"multiPart,12,optional" frugal:"12,optional,list" json:"multi_part" form:"multiPart" query:"multiPart"` + if p.StartTime != src { + return false + } + return true } +func (p *ChangeEvaluatorScoreRequest) Field5DeepEqual(src *annotation.Correction) bool { -func NewContent() *Content { - return &Content{} + if !p.Correction.DeepEqual(src) { + return false + } + return true } +func (p *ChangeEvaluatorScoreRequest) Field255DeepEqual(src *base.Base) bool { -func (p *Content) InitDefault() { + if !p.Base.DeepEqual(src) { + return false + } + return true } -var Content_ContentType_DEFAULT ContentType - -func (p *Content) GetContentType() (v ContentType) { - if p == nil { - return - } - if !p.IsSetContentType() { - return Content_ContentType_DEFAULT - } - return *p.ContentType +type ChangeEvaluatorScoreResponse struct { + Annotation *annotation.Annotation `thrift:"annotation,1,required" frugal:"1,required,annotation.Annotation" form:"annotation,required" json:"annotation,required" query:"annotation,required"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` } -var Content_Text_DEFAULT string +func NewChangeEvaluatorScoreResponse() *ChangeEvaluatorScoreResponse { + return &ChangeEvaluatorScoreResponse{} +} -func (p *Content) GetText() (v string) { - if p == nil { - return - } - if !p.IsSetText() { - return Content_Text_DEFAULT - } - return *p.Text +func (p *ChangeEvaluatorScoreResponse) InitDefault() { } -var Content_Image_DEFAULT *Image +var ChangeEvaluatorScoreResponse_Annotation_DEFAULT *annotation.Annotation -func (p *Content) GetImage() (v *Image) { +func (p *ChangeEvaluatorScoreResponse) GetAnnotation() (v *annotation.Annotation) { if p == nil { return } - if !p.IsSetImage() { - return Content_Image_DEFAULT + if !p.IsSetAnnotation() { + return ChangeEvaluatorScoreResponse_Annotation_DEFAULT } - return p.Image + return p.Annotation } -var Content_MultiPart_DEFAULT []*Content +var ChangeEvaluatorScoreResponse_BaseResp_DEFAULT *base.BaseResp -func (p *Content) GetMultiPart() (v []*Content) { +func (p *ChangeEvaluatorScoreResponse) GetBaseResp() (v *base.BaseResp) { if p == nil { return } - if !p.IsSetMultiPart() { - return Content_MultiPart_DEFAULT + if !p.IsSetBaseResp() { + return ChangeEvaluatorScoreResponse_BaseResp_DEFAULT } - return p.MultiPart -} -func (p *Content) SetContentType(val *ContentType) { - p.ContentType = val -} -func (p *Content) SetText(val *string) { - p.Text = val -} -func (p *Content) SetImage(val *Image) { - p.Image = val -} -func (p *Content) SetMultiPart(val []*Content) { - p.MultiPart = val + return p.BaseResp } - -var fieldIDToName_Content = map[int16]string{ - 1: "contentType", - 10: "text", - 11: "image", - 12: "multiPart", +func (p *ChangeEvaluatorScoreResponse) SetAnnotation(val *annotation.Annotation) { + p.Annotation = val } - -func (p *Content) IsSetContentType() bool { - return p.ContentType != nil +func (p *ChangeEvaluatorScoreResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val } -func (p *Content) IsSetText() bool { - return p.Text != nil +var fieldIDToName_ChangeEvaluatorScoreResponse = map[int16]string{ + 1: "annotation", + 255: "BaseResp", } -func (p *Content) IsSetImage() bool { - return p.Image != nil +func (p *ChangeEvaluatorScoreResponse) IsSetAnnotation() bool { + return p.Annotation != nil } -func (p *Content) IsSetMultiPart() bool { - return p.MultiPart != nil +func (p *ChangeEvaluatorScoreResponse) IsSetBaseResp() bool { + return p.BaseResp != nil } -func (p *Content) Read(iprot thrift.TProtocol) (err error) { +func (p *ChangeEvaluatorScoreResponse) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 + var issetAnnotation bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -13871,32 +15172,17 @@ func (p *Content) Read(iprot thrift.TProtocol) (err error) { switch fieldId { case 1: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.STRUCT { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } + issetAnnotation = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 10: - if fieldTypeId == thrift.STRING { - if err = p.ReadField10(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 11: + case 255: if fieldTypeId == thrift.STRUCT { - if err = p.ReadField11(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 12: - if fieldTypeId == thrift.LIST { - if err = p.ReadField12(iprot); err != nil { + if err = p.ReadField255(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { @@ -13915,13 +15201,17 @@ func (p *Content) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } + if !issetAnnotation { + fieldId = 1 + goto RequiredFieldNotSetError + } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Content[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreResponse[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -13929,65 +15219,30 @@ ReadFieldEndError: return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreResponse[fieldId])) } -func (p *Content) ReadField1(iprot thrift.TProtocol) error { - - var _field *ContentType - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.ContentType = _field - return nil -} -func (p *Content) ReadField10(iprot thrift.TProtocol) error { - - var _field *string - if v, err := iprot.ReadString(); err != nil { +func (p *ChangeEvaluatorScoreResponse) ReadField1(iprot thrift.TProtocol) error { + _field := annotation.NewAnnotation() + if err := _field.Read(iprot); err != nil { return err - } else { - _field = &v } - p.Text = _field + p.Annotation = _field return nil } -func (p *Content) ReadField11(iprot thrift.TProtocol) error { - _field := NewImage() +func (p *ChangeEvaluatorScoreResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() if err := _field.Read(iprot); err != nil { return err } - p.Image = _field - return nil -} -func (p *Content) ReadField12(iprot thrift.TProtocol) error { - _, size, err := iprot.ReadListBegin() - if err != nil { - return err - } - _field := make([]*Content, 0, size) - values := make([]Content, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - - if err := _elem.Read(iprot); err != nil { - return err - } - - _field = append(_field, _elem) - } - if err := iprot.ReadListEnd(); err != nil { - return err - } - p.MultiPart = _field + p.BaseResp = _field return nil } -func (p *Content) Write(oprot thrift.TProtocol) (err error) { +func (p *ChangeEvaluatorScoreResponse) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("Content"); err != nil { + if err = oprot.WriteStructBegin("ChangeEvaluatorScoreResponse"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13995,16 +15250,8 @@ func (p *Content) Write(oprot thrift.TProtocol) (err error) { fieldId = 1 goto WriteFieldError } - if err = p.writeField10(oprot); err != nil { - fieldId = 10 - goto WriteFieldError - } - if err = p.writeField11(oprot); err != nil { - fieldId = 11 - goto WriteFieldError - } - if err = p.writeField12(oprot); err != nil { - fieldId = 12 + if err = p.writeField255(oprot); err != nil { + fieldId = 255 goto WriteFieldError } } @@ -14025,74 +15272,28 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *Content) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetContentType() { - if err = oprot.WriteFieldBegin("contentType", thrift.STRING, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.ContentType); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *ChangeEvaluatorScoreResponse) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("annotation", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *Content) writeField10(oprot thrift.TProtocol) (err error) { - if p.IsSetText() { - if err = oprot.WriteFieldBegin("text", thrift.STRING, 10); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Text); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } + if err := p.Annotation.Write(oprot); err != nil { + return err } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) -} -func (p *Content) writeField11(oprot thrift.TProtocol) (err error) { - if p.IsSetImage() { - if err = oprot.WriteFieldBegin("image", thrift.STRUCT, 11); err != nil { - goto WriteFieldBeginError - } - if err := p.Image.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 11 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *Content) writeField12(oprot thrift.TProtocol) (err error) { - if p.IsSetMultiPart() { - if err = oprot.WriteFieldBegin("multiPart", thrift.LIST, 12); err != nil { +func (p *ChangeEvaluatorScoreResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.MultiPart)); err != nil { - return err - } - for _, v := range p.MultiPart { - if err := v.Write(oprot); err != nil { - return err - } - } - if err := oprot.WriteListEnd(); err != nil { + if err := p.BaseResp.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -14101,143 +15302,104 @@ func (p *Content) writeField12(oprot thrift.TProtocol) (err error) { } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 12 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 12 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *Content) String() string { +func (p *ChangeEvaluatorScoreResponse) String() string { if p == nil { return "" } - return fmt.Sprintf("Content(%+v)", *p) + return fmt.Sprintf("ChangeEvaluatorScoreResponse(%+v)", *p) } -func (p *Content) DeepEqual(ano *Content) bool { +func (p *ChangeEvaluatorScoreResponse) DeepEqual(ano *ChangeEvaluatorScoreResponse) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.ContentType) { - return false - } - if !p.Field10DeepEqual(ano.Text) { - return false - } - if !p.Field11DeepEqual(ano.Image) { + if !p.Field1DeepEqual(ano.Annotation) { return false } - if !p.Field12DeepEqual(ano.MultiPart) { + if !p.Field255DeepEqual(ano.BaseResp) { return false } return true } -func (p *Content) Field1DeepEqual(src *ContentType) bool { - - if p.ContentType == src { - return true - } else if p.ContentType == nil || src == nil { - return false - } - if strings.Compare(*p.ContentType, *src) != 0 { - return false - } - return true -} -func (p *Content) Field10DeepEqual(src *string) bool { +func (p *ChangeEvaluatorScoreResponse) Field1DeepEqual(src *annotation.Annotation) bool { - if p.Text == src { - return true - } else if p.Text == nil || src == nil { - return false - } - if strings.Compare(*p.Text, *src) != 0 { + if !p.Annotation.DeepEqual(src) { return false } return true } -func (p *Content) Field11DeepEqual(src *Image) bool { +func (p *ChangeEvaluatorScoreResponse) Field255DeepEqual(src *base.BaseResp) bool { - if !p.Image.DeepEqual(src) { + if !p.BaseResp.DeepEqual(src) { return false } return true } -func (p *Content) Field12DeepEqual(src []*Content) bool { - if len(p.MultiPart) != len(src) { - return false - } - for i, v := range p.MultiPart { - _src := src[i] - if !v.DeepEqual(_src) { - return false - } - } - return true +type AnnotationEvaluator struct { + EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` + EvaluatorName string `thrift:"evaluator_name,2,required" frugal:"2,required,string" form:"evaluator_name,required" json:"evaluator_name,required" query:"evaluator_name,required"` + EvaluatorVersion string `thrift:"evaluator_version,3,required" frugal:"3,required,string" form:"evaluator_version,required" json:"evaluator_version,required" query:"evaluator_version,required"` } -type Image struct { - Name *string `thrift:"name,1,optional" frugal:"1,optional,string" json:"name" form:"name" query:"name"` - URL *string `thrift:"url,2,optional" frugal:"2,optional,string" json:"url" form:"url" query:"url"` +func NewAnnotationEvaluator() *AnnotationEvaluator { + return &AnnotationEvaluator{} } -func NewImage() *Image { - return &Image{} +func (p *AnnotationEvaluator) InitDefault() { } -func (p *Image) InitDefault() { +func (p *AnnotationEvaluator) GetEvaluatorVersionID() (v int64) { + if p != nil { + return p.EvaluatorVersionID + } + return } -var Image_Name_DEFAULT string - -func (p *Image) GetName() (v string) { - if p == nil { - return - } - if !p.IsSetName() { - return Image_Name_DEFAULT +func (p *AnnotationEvaluator) GetEvaluatorName() (v string) { + if p != nil { + return p.EvaluatorName } - return *p.Name + return } -var Image_URL_DEFAULT string - -func (p *Image) GetURL() (v string) { - if p == nil { - return - } - if !p.IsSetURL() { - return Image_URL_DEFAULT +func (p *AnnotationEvaluator) GetEvaluatorVersion() (v string) { + if p != nil { + return p.EvaluatorVersion } - return *p.URL -} -func (p *Image) SetName(val *string) { - p.Name = val + return } -func (p *Image) SetURL(val *string) { - p.URL = val +func (p *AnnotationEvaluator) SetEvaluatorVersionID(val int64) { + p.EvaluatorVersionID = val } - -var fieldIDToName_Image = map[int16]string{ - 1: "name", - 2: "url", +func (p *AnnotationEvaluator) SetEvaluatorName(val string) { + p.EvaluatorName = val } - -func (p *Image) IsSetName() bool { - return p.Name != nil +func (p *AnnotationEvaluator) SetEvaluatorVersion(val string) { + p.EvaluatorVersion = val } -func (p *Image) IsSetURL() bool { - return p.URL != nil +var fieldIDToName_AnnotationEvaluator = map[int16]string{ + 1: "evaluator_version_id", + 2: "evaluator_name", + 3: "evaluator_version", } -func (p *Image) Read(iprot thrift.TProtocol) (err error) { +func (p *AnnotationEvaluator) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 + var issetEvaluatorVersionID bool = false + var issetEvaluatorName bool = false + var issetEvaluatorVersion bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -14254,10 +15416,11 @@ func (p *Image) Read(iprot thrift.TProtocol) (err error) { switch fieldId { case 1: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I64 { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } + issetEvaluatorVersionID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -14266,6 +15429,16 @@ func (p *Image) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } + issetEvaluatorName = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorVersion = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -14282,48 +15455,75 @@ func (p *Image) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Image[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - + if !issetEvaluatorVersionID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorName { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorVersion { + fieldId = 3 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AnnotationEvaluator[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + ReadFieldEndError: return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_AnnotationEvaluator[fieldId])) } -func (p *Image) ReadField1(iprot thrift.TProtocol) error { +func (p *AnnotationEvaluator) ReadField1(iprot thrift.TProtocol) error { - var _field *string + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorVersionID = _field + return nil +} +func (p *AnnotationEvaluator) ReadField2(iprot thrift.TProtocol) error { + + var _field string if v, err := iprot.ReadString(); err != nil { return err } else { - _field = &v + _field = v } - p.Name = _field + p.EvaluatorName = _field return nil } -func (p *Image) ReadField2(iprot thrift.TProtocol) error { +func (p *AnnotationEvaluator) ReadField3(iprot thrift.TProtocol) error { - var _field *string + var _field string if v, err := iprot.ReadString(); err != nil { return err } else { - _field = &v + _field = v } - p.URL = _field + p.EvaluatorVersion = _field return nil } -func (p *Image) Write(oprot thrift.TProtocol) (err error) { +func (p *AnnotationEvaluator) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("Image"); err != nil { + if err = oprot.WriteStructBegin("AnnotationEvaluator"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14335,6 +15535,10 @@ func (p *Image) Write(oprot thrift.TProtocol) (err error) { fieldId = 2 goto WriteFieldError } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -14353,17 +15557,15 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *Image) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetName() { - if err = oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Name); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *AnnotationEvaluator) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_version_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EvaluatorVersionID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -14371,17 +15573,15 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *Image) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetURL() { - if err = oprot.WriteFieldBegin("url", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.URL); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *AnnotationEvaluator) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.EvaluatorName); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -14389,97 +15589,142 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } +func (p *AnnotationEvaluator) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_version", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.EvaluatorVersion); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} -func (p *Image) String() string { +func (p *AnnotationEvaluator) String() string { if p == nil { return "" } - return fmt.Sprintf("Image(%+v)", *p) + return fmt.Sprintf("AnnotationEvaluator(%+v)", *p) } -func (p *Image) DeepEqual(ano *Image) bool { +func (p *AnnotationEvaluator) DeepEqual(ano *AnnotationEvaluator) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.Name) { + if !p.Field1DeepEqual(ano.EvaluatorVersionID) { return false } - if !p.Field2DeepEqual(ano.URL) { + if !p.Field2DeepEqual(ano.EvaluatorName) { + return false + } + if !p.Field3DeepEqual(ano.EvaluatorVersion) { return false } return true } -func (p *Image) Field1DeepEqual(src *string) bool { +func (p *AnnotationEvaluator) Field1DeepEqual(src int64) bool { - if p.Name == src { - return true - } else if p.Name == nil || src == nil { - return false - } - if strings.Compare(*p.Name, *src) != 0 { + if p.EvaluatorVersionID != src { return false } return true } -func (p *Image) Field2DeepEqual(src *string) bool { +func (p *AnnotationEvaluator) Field2DeepEqual(src string) bool { - if p.URL == src { - return true - } else if p.URL == nil || src == nil { + if strings.Compare(p.EvaluatorName, src) != 0 { return false } - if strings.Compare(*p.URL, *src) != 0 { + return true +} +func (p *AnnotationEvaluator) Field3DeepEqual(src string) bool { + + if strings.Compare(p.EvaluatorVersion, src) != 0 { return false } return true } -type SpanInfo struct { - SpanID string `thrift:"span_id,1,required" frugal:"1,required,string" form:"span_id,required" json:"span_id,required" query:"span_id,required"` - FieldList []*FieldData `thrift:"field_list,2,required" frugal:"2,required,list" form:"field_list,required" json:"field_list,required" query:"field_list,required"` +type ListAnnotationEvaluatorsRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + Name *string `thrift:"name,2,optional" frugal:"2,optional,string" json:"name,omitempty" query:"name"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` } -func NewSpanInfo() *SpanInfo { - return &SpanInfo{} +func NewListAnnotationEvaluatorsRequest() *ListAnnotationEvaluatorsRequest { + return &ListAnnotationEvaluatorsRequest{} } -func (p *SpanInfo) InitDefault() { +func (p *ListAnnotationEvaluatorsRequest) InitDefault() { } -func (p *SpanInfo) GetSpanID() (v string) { +func (p *ListAnnotationEvaluatorsRequest) GetWorkspaceID() (v int64) { if p != nil { - return p.SpanID + return p.WorkspaceID } return } -func (p *SpanInfo) GetFieldList() (v []*FieldData) { - if p != nil { - return p.FieldList +var ListAnnotationEvaluatorsRequest_Name_DEFAULT string + +func (p *ListAnnotationEvaluatorsRequest) GetName() (v string) { + if p == nil { + return } - return + if !p.IsSetName() { + return ListAnnotationEvaluatorsRequest_Name_DEFAULT + } + return *p.Name } -func (p *SpanInfo) SetSpanID(val string) { - p.SpanID = val + +var ListAnnotationEvaluatorsRequest_Base_DEFAULT *base.Base + +func (p *ListAnnotationEvaluatorsRequest) GetBase() (v *base.Base) { + if p == nil { + return + } + if !p.IsSetBase() { + return ListAnnotationEvaluatorsRequest_Base_DEFAULT + } + return p.Base } -func (p *SpanInfo) SetFieldList(val []*FieldData) { - p.FieldList = val +func (p *ListAnnotationEvaluatorsRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val +} +func (p *ListAnnotationEvaluatorsRequest) SetName(val *string) { + p.Name = val +} +func (p *ListAnnotationEvaluatorsRequest) SetBase(val *base.Base) { + p.Base = val } -var fieldIDToName_SpanInfo = map[int16]string{ - 1: "span_id", - 2: "field_list", +var fieldIDToName_ListAnnotationEvaluatorsRequest = map[int16]string{ + 1: "workspace_id", + 2: "name", + 255: "Base", } -func (p *SpanInfo) Read(iprot thrift.TProtocol) (err error) { +func (p *ListAnnotationEvaluatorsRequest) IsSetName() bool { + return p.Name != nil +} + +func (p *ListAnnotationEvaluatorsRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *ListAnnotationEvaluatorsRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetSpanID bool = false - var issetFieldList bool = false + var issetWorkspaceID bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -14496,20 +15741,27 @@ func (p *SpanInfo) Read(iprot thrift.TProtocol) (err error) { switch fieldId { case 1: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I64 { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetSpanID = true + issetWorkspaceID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 2: - if fieldTypeId == thrift.LIST { + if fieldTypeId == thrift.STRING { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } - issetFieldList = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -14526,22 +15778,17 @@ func (p *SpanInfo) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } - if !issetSpanID { + if !issetWorkspaceID { fieldId = 1 goto RequiredFieldNotSetError } - - if !issetFieldList { - fieldId = 2 - goto RequiredFieldNotSetError - } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanInfo[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14550,47 +15797,43 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_SpanInfo[fieldId])) + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId])) } -func (p *SpanInfo) ReadField1(iprot thrift.TProtocol) error { +func (p *ListAnnotationEvaluatorsRequest) ReadField1(iprot thrift.TProtocol) error { - var _field string - if v, err := iprot.ReadString(); err != nil { + var _field int64 + if v, err := iprot.ReadI64(); err != nil { return err } else { _field = v } - p.SpanID = _field + p.WorkspaceID = _field return nil } -func (p *SpanInfo) ReadField2(iprot thrift.TProtocol) error { - _, size, err := iprot.ReadListBegin() - if err != nil { - return err - } - _field := make([]*FieldData, 0, size) - values := make([]FieldData, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - - if err := _elem.Read(iprot); err != nil { - return err - } +func (p *ListAnnotationEvaluatorsRequest) ReadField2(iprot thrift.TProtocol) error { - _field = append(_field, _elem) + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v } - if err := iprot.ReadListEnd(); err != nil { + p.Name = _field + return nil +} +func (p *ListAnnotationEvaluatorsRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { return err } - p.FieldList = _field + p.Base = _field return nil } -func (p *SpanInfo) Write(oprot thrift.TProtocol) (err error) { +func (p *ListAnnotationEvaluatorsRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("SpanInfo"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotationEvaluatorsRequest"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14602,6 +15845,10 @@ func (p *SpanInfo) Write(oprot thrift.TProtocol) (err error) { fieldId = 2 goto WriteFieldError } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -14620,11 +15867,11 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *SpanInfo) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("span_id", thrift.STRING, 1); err != nil { +func (p *ListAnnotationEvaluatorsRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(p.SpanID); err != nil { + if err := oprot.WriteI64(p.WorkspaceID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -14636,23 +15883,17 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *SpanInfo) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("field_list", thrift.LIST, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldList)); err != nil { - return err - } - for _, v := range p.FieldList { - if err := v.Write(oprot); err != nil { +func (p *ListAnnotationEvaluatorsRequest) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetName() { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Name); err != nil { return err } - } - if err := oprot.WriteListEnd(); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -14660,101 +15901,128 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } +func (p *ListAnnotationEvaluatorsRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} -func (p *SpanInfo) String() string { +func (p *ListAnnotationEvaluatorsRequest) String() string { if p == nil { return "" } - return fmt.Sprintf("SpanInfo(%+v)", *p) + return fmt.Sprintf("ListAnnotationEvaluatorsRequest(%+v)", *p) } -func (p *SpanInfo) DeepEqual(ano *SpanInfo) bool { +func (p *ListAnnotationEvaluatorsRequest) DeepEqual(ano *ListAnnotationEvaluatorsRequest) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.SpanID) { + if !p.Field1DeepEqual(ano.WorkspaceID) { return false } - if !p.Field2DeepEqual(ano.FieldList) { + if !p.Field2DeepEqual(ano.Name) { + return false + } + if !p.Field255DeepEqual(ano.Base) { return false } return true } -func (p *SpanInfo) Field1DeepEqual(src string) bool { +func (p *ListAnnotationEvaluatorsRequest) Field1DeepEqual(src int64) bool { - if strings.Compare(p.SpanID, src) != 0 { + if p.WorkspaceID != src { return false } return true } -func (p *SpanInfo) Field2DeepEqual(src []*FieldData) bool { +func (p *ListAnnotationEvaluatorsRequest) Field2DeepEqual(src *string) bool { - if len(p.FieldList) != len(src) { + if p.Name == src { + return true + } else if p.Name == nil || src == nil { return false } - for i, v := range p.FieldList { - _src := src[i] - if !v.DeepEqual(_src) { - return false - } + if strings.Compare(*p.Name, *src) != 0 { + return false } return true } +func (p *ListAnnotationEvaluatorsRequest) Field255DeepEqual(src *base.Base) bool { -type ExtractSpanInfoResponse struct { - SpanInfos []*SpanInfo `thrift:"span_infos,1,required" frugal:"1,required,list" form:"span_infos,required" json:"span_infos,required" query:"span_infos,required"` - BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` + if !p.Base.DeepEqual(src) { + return false + } + return true } -func NewExtractSpanInfoResponse() *ExtractSpanInfoResponse { - return &ExtractSpanInfoResponse{} +type ListAnnotationEvaluatorsResponse struct { + Evaluators []*AnnotationEvaluator `thrift:"evaluators,1,required" frugal:"1,required,list" form:"evaluators,required" json:"evaluators,required" query:"evaluators,required"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` } -func (p *ExtractSpanInfoResponse) InitDefault() { +func NewListAnnotationEvaluatorsResponse() *ListAnnotationEvaluatorsResponse { + return &ListAnnotationEvaluatorsResponse{} } -func (p *ExtractSpanInfoResponse) GetSpanInfos() (v []*SpanInfo) { +func (p *ListAnnotationEvaluatorsResponse) InitDefault() { +} + +func (p *ListAnnotationEvaluatorsResponse) GetEvaluators() (v []*AnnotationEvaluator) { if p != nil { - return p.SpanInfos + return p.Evaluators } return } -var ExtractSpanInfoResponse_BaseResp_DEFAULT *base.BaseResp +var ListAnnotationEvaluatorsResponse_BaseResp_DEFAULT *base.BaseResp -func (p *ExtractSpanInfoResponse) GetBaseResp() (v *base.BaseResp) { +func (p *ListAnnotationEvaluatorsResponse) GetBaseResp() (v *base.BaseResp) { if p == nil { return } if !p.IsSetBaseResp() { - return ExtractSpanInfoResponse_BaseResp_DEFAULT + return ListAnnotationEvaluatorsResponse_BaseResp_DEFAULT } return p.BaseResp } -func (p *ExtractSpanInfoResponse) SetSpanInfos(val []*SpanInfo) { - p.SpanInfos = val +func (p *ListAnnotationEvaluatorsResponse) SetEvaluators(val []*AnnotationEvaluator) { + p.Evaluators = val } -func (p *ExtractSpanInfoResponse) SetBaseResp(val *base.BaseResp) { +func (p *ListAnnotationEvaluatorsResponse) SetBaseResp(val *base.BaseResp) { p.BaseResp = val } -var fieldIDToName_ExtractSpanInfoResponse = map[int16]string{ - 1: "span_infos", +var fieldIDToName_ListAnnotationEvaluatorsResponse = map[int16]string{ + 1: "evaluators", 255: "BaseResp", } -func (p *ExtractSpanInfoResponse) IsSetBaseResp() bool { +func (p *ListAnnotationEvaluatorsResponse) IsSetBaseResp() bool { return p.BaseResp != nil } -func (p *ExtractSpanInfoResponse) Read(iprot thrift.TProtocol) (err error) { +func (p *ListAnnotationEvaluatorsResponse) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetSpanInfos bool = false + var issetEvaluators bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -14775,7 +16043,7 @@ func (p *ExtractSpanInfoResponse) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetSpanInfos = true + issetEvaluators = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -14800,7 +16068,7 @@ func (p *ExtractSpanInfoResponse) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } - if !issetSpanInfos { + if !issetEvaluators { fieldId = 1 goto RequiredFieldNotSetError } @@ -14810,7 +16078,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoResponse[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14819,16 +16087,16 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ExtractSpanInfoResponse[fieldId])) + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId])) } -func (p *ExtractSpanInfoResponse) ReadField1(iprot thrift.TProtocol) error { +func (p *ListAnnotationEvaluatorsResponse) ReadField1(iprot thrift.TProtocol) error { _, size, err := iprot.ReadListBegin() if err != nil { return err } - _field := make([]*SpanInfo, 0, size) - values := make([]SpanInfo, size) + _field := make([]*AnnotationEvaluator, 0, size) + values := make([]AnnotationEvaluator, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -14842,10 +16110,10 @@ func (p *ExtractSpanInfoResponse) ReadField1(iprot thrift.TProtocol) error { if err := iprot.ReadListEnd(); err != nil { return err } - p.SpanInfos = _field + p.Evaluators = _field return nil } -func (p *ExtractSpanInfoResponse) ReadField255(iprot thrift.TProtocol) error { +func (p *ListAnnotationEvaluatorsResponse) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBaseResp() if err := _field.Read(iprot); err != nil { return err @@ -14854,9 +16122,9 @@ func (p *ExtractSpanInfoResponse) ReadField255(iprot thrift.TProtocol) error { return nil } -func (p *ExtractSpanInfoResponse) Write(oprot thrift.TProtocol) (err error) { +func (p *ListAnnotationEvaluatorsResponse) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ExtractSpanInfoResponse"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotationEvaluatorsResponse"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14886,14 +16154,14 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *ExtractSpanInfoResponse) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("span_infos", thrift.LIST, 1); err != nil { +func (p *ListAnnotationEvaluatorsResponse) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluators", thrift.LIST, 1); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.SpanInfos)); err != nil { + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Evaluators)); err != nil { return err } - for _, v := range p.SpanInfos { + for _, v := range p.Evaluators { if err := v.Write(oprot); err != nil { return err } @@ -14910,7 +16178,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *ExtractSpanInfoResponse) writeField255(oprot thrift.TProtocol) (err error) { +func (p *ListAnnotationEvaluatorsResponse) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBaseResp() { if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError @@ -14929,21 +16197,21 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *ExtractSpanInfoResponse) String() string { +func (p *ListAnnotationEvaluatorsResponse) String() string { if p == nil { return "" } - return fmt.Sprintf("ExtractSpanInfoResponse(%+v)", *p) + return fmt.Sprintf("ListAnnotationEvaluatorsResponse(%+v)", *p) } -func (p *ExtractSpanInfoResponse) DeepEqual(ano *ExtractSpanInfoResponse) bool { +func (p *ListAnnotationEvaluatorsResponse) DeepEqual(ano *ListAnnotationEvaluatorsResponse) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.SpanInfos) { + if !p.Field1DeepEqual(ano.Evaluators) { return false } if !p.Field255DeepEqual(ano.BaseResp) { @@ -14952,12 +16220,12 @@ func (p *ExtractSpanInfoResponse) DeepEqual(ano *ExtractSpanInfoResponse) bool { return true } -func (p *ExtractSpanInfoResponse) Field1DeepEqual(src []*SpanInfo) bool { +func (p *ListAnnotationEvaluatorsResponse) Field1DeepEqual(src []*AnnotationEvaluator) bool { - if len(p.SpanInfos) != len(src) { + if len(p.Evaluators) != len(src) { return false } - for i, v := range p.SpanInfos { + for i, v := range p.Evaluators { _src := src[i] if !v.DeepEqual(_src) { return false @@ -14965,7 +16233,7 @@ func (p *ExtractSpanInfoResponse) Field1DeepEqual(src []*SpanInfo) bool { } return true } -func (p *ExtractSpanInfoResponse) Field255DeepEqual(src *base.BaseResp) bool { +func (p *ListAnnotationEvaluatorsResponse) Field255DeepEqual(src *base.BaseResp) bool { if !p.BaseResp.DeepEqual(src) { return false @@ -14973,277 +16241,3253 @@ func (p *ExtractSpanInfoResponse) Field255DeepEqual(src *base.BaseResp) bool { return true } -type TraceService interface { - ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) - - GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) +type ExtractSpanInfoRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" json:"trace_id,required" query:"trace_id,required"` + SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" json:"span_ids,required" query:"span_ids,required"` + StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" query:"start_time" ` + EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" query:"end_time" ` + PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` + FieldMappings []*task.FieldMapping `thrift:"field_mappings,7,optional" frugal:"7,optional,list" form:"field_mappings" json:"field_mappings,omitempty" query:"field_mappings"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` +} - BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) +func NewExtractSpanInfoRequest() *ExtractSpanInfoRequest { + return &ExtractSpanInfoRequest{} +} - IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) +func (p *ExtractSpanInfoRequest) InitDefault() { +} - GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) +func (p *ExtractSpanInfoRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return +} - CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) +func (p *ExtractSpanInfoRequest) GetTraceID() (v string) { + if p != nil { + return p.TraceID + } + return +} - UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) +func (p *ExtractSpanInfoRequest) GetSpanIds() (v []string) { + if p != nil { + return p.SpanIds + } + return +} - DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) +var ExtractSpanInfoRequest_StartTime_DEFAULT int64 - ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) - - CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) - - UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) - - DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) - - ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) - - ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (r *ChangeEvaluatorScoreResponse, err error) - - ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (r *ListAnnotationEvaluatorsResponse, err error) - - ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (r *ExtractSpanInfoResponse, err error) -} - -type TraceServiceClient struct { - c thrift.TClient -} - -func NewTraceServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *TraceServiceClient { - return &TraceServiceClient{ - c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)), - } -} - -func NewTraceServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *TraceServiceClient { - return &TraceServiceClient{ - c: thrift.NewTStandardClient(iprot, oprot), +func (p *ExtractSpanInfoRequest) GetStartTime() (v int64) { + if p == nil { + return } -} - -func NewTraceServiceClient(c thrift.TClient) *TraceServiceClient { - return &TraceServiceClient{ - c: c, + if !p.IsSetStartTime() { + return ExtractSpanInfoRequest_StartTime_DEFAULT } + return *p.StartTime } -func (p *TraceServiceClient) Client_() thrift.TClient { - return p.c -} +var ExtractSpanInfoRequest_EndTime_DEFAULT int64 -func (p *TraceServiceClient) ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) { - var _args TraceServiceListSpansArgs - _args.Req = req - var _result TraceServiceListSpansResult - if err = p.Client_().Call(ctx, "ListSpans", &_args, &_result); err != nil { +func (p *ExtractSpanInfoRequest) GetEndTime() (v int64) { + if p == nil { return } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) { - var _args TraceServiceGetTraceArgs - _args.Req = req - var _result TraceServiceGetTraceResult - if err = p.Client_().Call(ctx, "GetTrace", &_args, &_result); err != nil { - return + if !p.IsSetEndTime() { + return ExtractSpanInfoRequest_EndTime_DEFAULT } - return _result.GetSuccess(), nil + return *p.EndTime } -func (p *TraceServiceClient) BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) { - var _args TraceServiceBatchGetTracesAdvanceInfoArgs - _args.Req = req - var _result TraceServiceBatchGetTracesAdvanceInfoResult - if err = p.Client_().Call(ctx, "BatchGetTracesAdvanceInfo", &_args, &_result); err != nil { + +var ExtractSpanInfoRequest_PlatformType_DEFAULT common.PlatformType + +func (p *ExtractSpanInfoRequest) GetPlatformType() (v common.PlatformType) { + if p == nil { return } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) { - var _args TraceServiceIngestTracesInnerArgs - _args.Req = req - var _result TraceServiceIngestTracesInnerResult - if err = p.Client_().Call(ctx, "IngestTracesInner", &_args, &_result); err != nil { - return + if !p.IsSetPlatformType() { + return ExtractSpanInfoRequest_PlatformType_DEFAULT } - return _result.GetSuccess(), nil + return *p.PlatformType } -func (p *TraceServiceClient) GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) { - var _args TraceServiceGetTracesMetaInfoArgs - _args.Req = req - var _result TraceServiceGetTracesMetaInfoResult - if err = p.Client_().Call(ctx, "GetTracesMetaInfo", &_args, &_result); err != nil { + +var ExtractSpanInfoRequest_FieldMappings_DEFAULT []*task.FieldMapping + +func (p *ExtractSpanInfoRequest) GetFieldMappings() (v []*task.FieldMapping) { + if p == nil { return } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) { - var _args TraceServiceCreateViewArgs - _args.Req = req - var _result TraceServiceCreateViewResult - if err = p.Client_().Call(ctx, "CreateView", &_args, &_result); err != nil { - return + if !p.IsSetFieldMappings() { + return ExtractSpanInfoRequest_FieldMappings_DEFAULT } - return _result.GetSuccess(), nil + return p.FieldMappings } -func (p *TraceServiceClient) UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) { - var _args TraceServiceUpdateViewArgs - _args.Req = req - var _result TraceServiceUpdateViewResult - if err = p.Client_().Call(ctx, "UpdateView", &_args, &_result); err != nil { + +var ExtractSpanInfoRequest_Base_DEFAULT *base.Base + +func (p *ExtractSpanInfoRequest) GetBase() (v *base.Base) { + if p == nil { return } - return _result.GetSuccess(), nil -} -func (p *TraceServiceClient) DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) { - var _args TraceServiceDeleteViewArgs - _args.Req = req - var _result TraceServiceDeleteViewResult - if err = p.Client_().Call(ctx, "DeleteView", &_args, &_result); err != nil { - return + if !p.IsSetBase() { + return ExtractSpanInfoRequest_Base_DEFAULT } - return _result.GetSuccess(), nil + return p.Base } -func (p *TraceServiceClient) ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) { - var _args TraceServiceListViewsArgs - _args.Req = req - var _result TraceServiceListViewsResult - if err = p.Client_().Call(ctx, "ListViews", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ExtractSpanInfoRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val } -func (p *TraceServiceClient) CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) { - var _args TraceServiceCreateManualAnnotationArgs - _args.Req = req - var _result TraceServiceCreateManualAnnotationResult - if err = p.Client_().Call(ctx, "CreateManualAnnotation", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ExtractSpanInfoRequest) SetTraceID(val string) { + p.TraceID = val } -func (p *TraceServiceClient) UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) { - var _args TraceServiceUpdateManualAnnotationArgs - _args.Req = req - var _result TraceServiceUpdateManualAnnotationResult - if err = p.Client_().Call(ctx, "UpdateManualAnnotation", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ExtractSpanInfoRequest) SetSpanIds(val []string) { + p.SpanIds = val } -func (p *TraceServiceClient) DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) { - var _args TraceServiceDeleteManualAnnotationArgs - _args.Req = req - var _result TraceServiceDeleteManualAnnotationResult - if err = p.Client_().Call(ctx, "DeleteManualAnnotation", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ExtractSpanInfoRequest) SetStartTime(val *int64) { + p.StartTime = val } -func (p *TraceServiceClient) ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) { - var _args TraceServiceListAnnotationsArgs - _args.Req = req - var _result TraceServiceListAnnotationsResult - if err = p.Client_().Call(ctx, "ListAnnotations", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ExtractSpanInfoRequest) SetEndTime(val *int64) { + p.EndTime = val } -func (p *TraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (r *ChangeEvaluatorScoreResponse, err error) { - var _args TraceServiceChangeEvaluatorScoreArgs - _args.Req = req - var _result TraceServiceChangeEvaluatorScoreResult - if err = p.Client_().Call(ctx, "ChangeEvaluatorScore", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ExtractSpanInfoRequest) SetPlatformType(val *common.PlatformType) { + p.PlatformType = val } -func (p *TraceServiceClient) ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (r *ListAnnotationEvaluatorsResponse, err error) { - var _args TraceServiceListAnnotationEvaluatorsArgs - _args.Req = req - var _result TraceServiceListAnnotationEvaluatorsResult - if err = p.Client_().Call(ctx, "ListAnnotationEvaluators", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ExtractSpanInfoRequest) SetFieldMappings(val []*task.FieldMapping) { + p.FieldMappings = val } -func (p *TraceServiceClient) ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (r *ExtractSpanInfoResponse, err error) { - var _args TraceServiceExtractSpanInfoArgs - _args.Req = req - var _result TraceServiceExtractSpanInfoResult - if err = p.Client_().Call(ctx, "ExtractSpanInfo", &_args, &_result); err != nil { - return - } - return _result.GetSuccess(), nil +func (p *ExtractSpanInfoRequest) SetBase(val *base.Base) { + p.Base = val } -type TraceServiceProcessor struct { - processorMap map[string]thrift.TProcessorFunction - handler TraceService +var fieldIDToName_ExtractSpanInfoRequest = map[int16]string{ + 1: "workspace_id", + 2: "trace_id", + 3: "span_ids", + 4: "start_time", + 5: "end_time", + 6: "platform_type", + 7: "field_mappings", + 255: "Base", } -func (p *TraceServiceProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) { - p.processorMap[key] = processor +func (p *ExtractSpanInfoRequest) IsSetStartTime() bool { + return p.StartTime != nil } -func (p *TraceServiceProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) { - processor, ok = p.processorMap[key] - return processor, ok +func (p *ExtractSpanInfoRequest) IsSetEndTime() bool { + return p.EndTime != nil } -func (p *TraceServiceProcessor) ProcessorMap() map[string]thrift.TProcessorFunction { - return p.processorMap +func (p *ExtractSpanInfoRequest) IsSetPlatformType() bool { + return p.PlatformType != nil } -func NewTraceServiceProcessor(handler TraceService) *TraceServiceProcessor { - self := &TraceServiceProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)} - self.AddToProcessorMap("ListSpans", &traceServiceProcessorListSpans{handler: handler}) - self.AddToProcessorMap("GetTrace", &traceServiceProcessorGetTrace{handler: handler}) - self.AddToProcessorMap("BatchGetTracesAdvanceInfo", &traceServiceProcessorBatchGetTracesAdvanceInfo{handler: handler}) - self.AddToProcessorMap("IngestTracesInner", &traceServiceProcessorIngestTracesInner{handler: handler}) - self.AddToProcessorMap("GetTracesMetaInfo", &traceServiceProcessorGetTracesMetaInfo{handler: handler}) - self.AddToProcessorMap("CreateView", &traceServiceProcessorCreateView{handler: handler}) - self.AddToProcessorMap("UpdateView", &traceServiceProcessorUpdateView{handler: handler}) - self.AddToProcessorMap("DeleteView", &traceServiceProcessorDeleteView{handler: handler}) - self.AddToProcessorMap("ListViews", &traceServiceProcessorListViews{handler: handler}) - self.AddToProcessorMap("CreateManualAnnotation", &traceServiceProcessorCreateManualAnnotation{handler: handler}) - self.AddToProcessorMap("UpdateManualAnnotation", &traceServiceProcessorUpdateManualAnnotation{handler: handler}) - self.AddToProcessorMap("DeleteManualAnnotation", &traceServiceProcessorDeleteManualAnnotation{handler: handler}) - self.AddToProcessorMap("ListAnnotations", &traceServiceProcessorListAnnotations{handler: handler}) - self.AddToProcessorMap("ChangeEvaluatorScore", &traceServiceProcessorChangeEvaluatorScore{handler: handler}) - self.AddToProcessorMap("ListAnnotationEvaluators", &traceServiceProcessorListAnnotationEvaluators{handler: handler}) - self.AddToProcessorMap("ExtractSpanInfo", &traceServiceProcessorExtractSpanInfo{handler: handler}) - return self +func (p *ExtractSpanInfoRequest) IsSetFieldMappings() bool { + return p.FieldMappings != nil } -func (p *TraceServiceProcessor) Process(ctx context.Context, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + +func (p *ExtractSpanInfoRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *ExtractSpanInfoRequest) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + var issetTraceID bool = false + var issetSpanIds bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetTraceID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.LIST { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetSpanIds = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.I64 { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.I64 { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.STRING { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 7: + if fieldTypeId == thrift.LIST { + if err = p.ReadField7(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetTraceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetSpanIds { + fieldId = 3 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoRequest[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ExtractSpanInfoRequest[fieldId])) +} + +func (p *ExtractSpanInfoRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.WorkspaceID = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.TraceID = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField3(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]string, 0, size) + for i := 0; i < size; i++ { + + var _elem string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _elem = v + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.SpanIds = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField4(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.StartTime = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField5(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.EndTime = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField6(iprot thrift.TProtocol) error { + + var _field *common.PlatformType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.PlatformType = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField7(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*task.FieldMapping, 0, size) + values := make([]task.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldMappings = _field + return nil +} +func (p *ExtractSpanInfoRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *ExtractSpanInfoRequest) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ExtractSpanInfoRequest"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + if err = p.writeField7(oprot); err != nil { + fieldId = 7 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ExtractSpanInfoRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("trace_id", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.TraceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_ids", thrift.LIST, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRING, len(p.SpanIds)); err != nil { + return err + } + for _, v := range p.SpanIds { + if err := oprot.WriteString(v); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetStartTime() { + if err = oprot.WriteFieldBegin("start_time", thrift.I64, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.StartTime); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetEndTime() { + if err = oprot.WriteFieldBegin("end_time", thrift.I64, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.EndTime); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetPlatformType() { + if err = oprot.WriteFieldBegin("platform_type", thrift.STRING, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.PlatformType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField7(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldMappings() { + if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 7); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { + return err + } + for _, v := range p.FieldMappings { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) +} +func (p *ExtractSpanInfoRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ExtractSpanInfoRequest) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ExtractSpanInfoRequest(%+v)", *p) + +} + +func (p *ExtractSpanInfoRequest) DeepEqual(ano *ExtractSpanInfoRequest) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.WorkspaceID) { + return false + } + if !p.Field2DeepEqual(ano.TraceID) { + return false + } + if !p.Field3DeepEqual(ano.SpanIds) { + return false + } + if !p.Field4DeepEqual(ano.StartTime) { + return false + } + if !p.Field5DeepEqual(ano.EndTime) { + return false + } + if !p.Field6DeepEqual(ano.PlatformType) { + return false + } + if !p.Field7DeepEqual(ano.FieldMappings) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} + +func (p *ExtractSpanInfoRequest) Field1DeepEqual(src int64) bool { + + if p.WorkspaceID != src { + return false + } + return true +} +func (p *ExtractSpanInfoRequest) Field2DeepEqual(src string) bool { + + if strings.Compare(p.TraceID, src) != 0 { + return false + } + return true +} +func (p *ExtractSpanInfoRequest) Field3DeepEqual(src []string) bool { + + if len(p.SpanIds) != len(src) { + return false + } + for i, v := range p.SpanIds { + _src := src[i] + if strings.Compare(v, _src) != 0 { + return false + } + } + return true +} +func (p *ExtractSpanInfoRequest) Field4DeepEqual(src *int64) bool { + + if p.StartTime == src { + return true + } else if p.StartTime == nil || src == nil { + return false + } + if *p.StartTime != *src { + return false + } + return true +} +func (p *ExtractSpanInfoRequest) Field5DeepEqual(src *int64) bool { + + if p.EndTime == src { + return true + } else if p.EndTime == nil || src == nil { + return false + } + if *p.EndTime != *src { + return false + } + return true +} +func (p *ExtractSpanInfoRequest) Field6DeepEqual(src *common.PlatformType) bool { + + if p.PlatformType == src { + return true + } else if p.PlatformType == nil || src == nil { + return false + } + if strings.Compare(*p.PlatformType, *src) != 0 { + return false + } + return true +} +func (p *ExtractSpanInfoRequest) Field7DeepEqual(src []*task.FieldMapping) bool { + + if len(p.FieldMappings) != len(src) { + return false + } + for i, v := range p.FieldMappings { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *ExtractSpanInfoRequest) Field255DeepEqual(src *base.Base) bool { + + if !p.Base.DeepEqual(src) { + return false + } + return true +} + +type FieldData struct { + Key *string `thrift:"key,1,optional" frugal:"1,optional,string" form:"key" json:"key,omitempty" query:"key"` + Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty" query:"name"` + Content *Content `thrift:"content,3,optional" frugal:"3,optional,Content" form:"content" json:"content,omitempty" query:"content"` +} + +func NewFieldData() *FieldData { + return &FieldData{} +} + +func (p *FieldData) InitDefault() { +} + +var FieldData_Key_DEFAULT string + +func (p *FieldData) GetKey() (v string) { + if p == nil { + return + } + if !p.IsSetKey() { + return FieldData_Key_DEFAULT + } + return *p.Key +} + +var FieldData_Name_DEFAULT string + +func (p *FieldData) GetName() (v string) { + if p == nil { + return + } + if !p.IsSetName() { + return FieldData_Name_DEFAULT + } + return *p.Name +} + +var FieldData_Content_DEFAULT *Content + +func (p *FieldData) GetContent() (v *Content) { + if p == nil { + return + } + if !p.IsSetContent() { + return FieldData_Content_DEFAULT + } + return p.Content +} +func (p *FieldData) SetKey(val *string) { + p.Key = val +} +func (p *FieldData) SetName(val *string) { + p.Name = val +} +func (p *FieldData) SetContent(val *Content) { + p.Content = val +} + +var fieldIDToName_FieldData = map[int16]string{ + 1: "key", + 2: "name", + 3: "content", +} + +func (p *FieldData) IsSetKey() bool { + return p.Key != nil +} + +func (p *FieldData) IsSetName() bool { + return p.Name != nil +} + +func (p *FieldData) IsSetContent() bool { + return p.Content != nil +} + +func (p *FieldData) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldData[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *FieldData) ReadField1(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Key = _field + return nil +} +func (p *FieldData) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Name = _field + return nil +} +func (p *FieldData) ReadField3(iprot thrift.TProtocol) error { + _field := NewContent() + if err := _field.Read(iprot); err != nil { + return err + } + p.Content = _field + return nil +} + +func (p *FieldData) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("FieldData"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *FieldData) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetKey() { + if err = oprot.WriteFieldBegin("key", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Key); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *FieldData) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetName() { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *FieldData) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetContent() { + if err = oprot.WriteFieldBegin("content", thrift.STRUCT, 3); err != nil { + goto WriteFieldBeginError + } + if err := p.Content.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *FieldData) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("FieldData(%+v)", *p) + +} + +func (p *FieldData) DeepEqual(ano *FieldData) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Key) { + return false + } + if !p.Field2DeepEqual(ano.Name) { + return false + } + if !p.Field3DeepEqual(ano.Content) { + return false + } + return true +} + +func (p *FieldData) Field1DeepEqual(src *string) bool { + + if p.Key == src { + return true + } else if p.Key == nil || src == nil { + return false + } + if strings.Compare(*p.Key, *src) != 0 { + return false + } + return true +} +func (p *FieldData) Field2DeepEqual(src *string) bool { + + if p.Name == src { + return true + } else if p.Name == nil || src == nil { + return false + } + if strings.Compare(*p.Name, *src) != 0 { + return false + } + return true +} +func (p *FieldData) Field3DeepEqual(src *Content) bool { + + if !p.Content.DeepEqual(src) { + return false + } + return true +} + +type Content struct { + ContentType *ContentType `thrift:"contentType,1,optional" frugal:"1,optional,string" json:"content_type" form:"contentType" query:"contentType"` + Text *string `thrift:"text,10,optional" frugal:"10,optional,string" json:"text" form:"text" query:"text"` + // 图片内容 + Image *Image `thrift:"image,11,optional" frugal:"11,optional,Image" json:"image" form:"image" query:"image"` + // 图文混排时,图文内容 + MultiPart []*Content `thrift:"multiPart,12,optional" frugal:"12,optional,list" json:"multi_part" form:"multiPart" query:"multiPart"` +} + +func NewContent() *Content { + return &Content{} +} + +func (p *Content) InitDefault() { +} + +var Content_ContentType_DEFAULT ContentType + +func (p *Content) GetContentType() (v ContentType) { + if p == nil { + return + } + if !p.IsSetContentType() { + return Content_ContentType_DEFAULT + } + return *p.ContentType +} + +var Content_Text_DEFAULT string + +func (p *Content) GetText() (v string) { + if p == nil { + return + } + if !p.IsSetText() { + return Content_Text_DEFAULT + } + return *p.Text +} + +var Content_Image_DEFAULT *Image + +func (p *Content) GetImage() (v *Image) { + if p == nil { + return + } + if !p.IsSetImage() { + return Content_Image_DEFAULT + } + return p.Image +} + +var Content_MultiPart_DEFAULT []*Content + +func (p *Content) GetMultiPart() (v []*Content) { + if p == nil { + return + } + if !p.IsSetMultiPart() { + return Content_MultiPart_DEFAULT + } + return p.MultiPart +} +func (p *Content) SetContentType(val *ContentType) { + p.ContentType = val +} +func (p *Content) SetText(val *string) { + p.Text = val +} +func (p *Content) SetImage(val *Image) { + p.Image = val +} +func (p *Content) SetMultiPart(val []*Content) { + p.MultiPart = val +} + +var fieldIDToName_Content = map[int16]string{ + 1: "contentType", + 10: "text", + 11: "image", + 12: "multiPart", +} + +func (p *Content) IsSetContentType() bool { + return p.ContentType != nil +} + +func (p *Content) IsSetText() bool { + return p.Text != nil +} + +func (p *Content) IsSetImage() bool { + return p.Image != nil +} + +func (p *Content) IsSetMultiPart() bool { + return p.MultiPart != nil +} + +func (p *Content) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 10: + if fieldTypeId == thrift.STRING { + if err = p.ReadField10(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 11: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField11(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 12: + if fieldTypeId == thrift.LIST { + if err = p.ReadField12(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Content[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *Content) ReadField1(iprot thrift.TProtocol) error { + + var _field *ContentType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.ContentType = _field + return nil +} +func (p *Content) ReadField10(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Text = _field + return nil +} +func (p *Content) ReadField11(iprot thrift.TProtocol) error { + _field := NewImage() + if err := _field.Read(iprot); err != nil { + return err + } + p.Image = _field + return nil +} +func (p *Content) ReadField12(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*Content, 0, size) + values := make([]Content, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.MultiPart = _field + return nil +} + +func (p *Content) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("Content"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField10(oprot); err != nil { + fieldId = 10 + goto WriteFieldError + } + if err = p.writeField11(oprot); err != nil { + fieldId = 11 + goto WriteFieldError + } + if err = p.writeField12(oprot); err != nil { + fieldId = 12 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *Content) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetContentType() { + if err = oprot.WriteFieldBegin("contentType", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.ContentType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *Content) writeField10(oprot thrift.TProtocol) (err error) { + if p.IsSetText() { + if err = oprot.WriteFieldBegin("text", thrift.STRING, 10); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Text); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) +} +func (p *Content) writeField11(oprot thrift.TProtocol) (err error) { + if p.IsSetImage() { + if err = oprot.WriteFieldBegin("image", thrift.STRUCT, 11); err != nil { + goto WriteFieldBeginError + } + if err := p.Image.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) +} +func (p *Content) writeField12(oprot thrift.TProtocol) (err error) { + if p.IsSetMultiPart() { + if err = oprot.WriteFieldBegin("multiPart", thrift.LIST, 12); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.MultiPart)); err != nil { + return err + } + for _, v := range p.MultiPart { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 end error: ", p), err) +} + +func (p *Content) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("Content(%+v)", *p) + +} + +func (p *Content) DeepEqual(ano *Content) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.ContentType) { + return false + } + if !p.Field10DeepEqual(ano.Text) { + return false + } + if !p.Field11DeepEqual(ano.Image) { + return false + } + if !p.Field12DeepEqual(ano.MultiPart) { + return false + } + return true +} + +func (p *Content) Field1DeepEqual(src *ContentType) bool { + + if p.ContentType == src { + return true + } else if p.ContentType == nil || src == nil { + return false + } + if strings.Compare(*p.ContentType, *src) != 0 { + return false + } + return true +} +func (p *Content) Field10DeepEqual(src *string) bool { + + if p.Text == src { + return true + } else if p.Text == nil || src == nil { + return false + } + if strings.Compare(*p.Text, *src) != 0 { + return false + } + return true +} +func (p *Content) Field11DeepEqual(src *Image) bool { + + if !p.Image.DeepEqual(src) { + return false + } + return true +} +func (p *Content) Field12DeepEqual(src []*Content) bool { + + if len(p.MultiPart) != len(src) { + return false + } + for i, v := range p.MultiPart { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +type Image struct { + Name *string `thrift:"name,1,optional" frugal:"1,optional,string" json:"name" form:"name" query:"name"` + URL *string `thrift:"url,2,optional" frugal:"2,optional,string" json:"url" form:"url" query:"url"` +} + +func NewImage() *Image { + return &Image{} +} + +func (p *Image) InitDefault() { +} + +var Image_Name_DEFAULT string + +func (p *Image) GetName() (v string) { + if p == nil { + return + } + if !p.IsSetName() { + return Image_Name_DEFAULT + } + return *p.Name +} + +var Image_URL_DEFAULT string + +func (p *Image) GetURL() (v string) { + if p == nil { + return + } + if !p.IsSetURL() { + return Image_URL_DEFAULT + } + return *p.URL +} +func (p *Image) SetName(val *string) { + p.Name = val +} +func (p *Image) SetURL(val *string) { + p.URL = val +} + +var fieldIDToName_Image = map[int16]string{ + 1: "name", + 2: "url", +} + +func (p *Image) IsSetName() bool { + return p.Name != nil +} + +func (p *Image) IsSetURL() bool { + return p.URL != nil +} + +func (p *Image) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Image[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *Image) ReadField1(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Name = _field + return nil +} +func (p *Image) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.URL = _field + return nil +} + +func (p *Image) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("Image"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *Image) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetName() { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *Image) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetURL() { + if err = oprot.WriteFieldBegin("url", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.URL); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *Image) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("Image(%+v)", *p) + +} + +func (p *Image) DeepEqual(ano *Image) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Name) { + return false + } + if !p.Field2DeepEqual(ano.URL) { + return false + } + return true +} + +func (p *Image) Field1DeepEqual(src *string) bool { + + if p.Name == src { + return true + } else if p.Name == nil || src == nil { + return false + } + if strings.Compare(*p.Name, *src) != 0 { + return false + } + return true +} +func (p *Image) Field2DeepEqual(src *string) bool { + + if p.URL == src { + return true + } else if p.URL == nil || src == nil { + return false + } + if strings.Compare(*p.URL, *src) != 0 { + return false + } + return true +} + +type SpanInfo struct { + SpanID string `thrift:"span_id,1,required" frugal:"1,required,string" form:"span_id,required" json:"span_id,required" query:"span_id,required"` + FieldList []*FieldData `thrift:"field_list,2,required" frugal:"2,required,list" form:"field_list,required" json:"field_list,required" query:"field_list,required"` +} + +func NewSpanInfo() *SpanInfo { + return &SpanInfo{} +} + +func (p *SpanInfo) InitDefault() { +} + +func (p *SpanInfo) GetSpanID() (v string) { + if p != nil { + return p.SpanID + } + return +} + +func (p *SpanInfo) GetFieldList() (v []*FieldData) { + if p != nil { + return p.FieldList + } + return +} +func (p *SpanInfo) SetSpanID(val string) { + p.SpanID = val +} +func (p *SpanInfo) SetFieldList(val []*FieldData) { + p.FieldList = val +} + +var fieldIDToName_SpanInfo = map[int16]string{ + 1: "span_id", + 2: "field_list", +} + +func (p *SpanInfo) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetSpanID bool = false + var issetFieldList bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetSpanID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.LIST { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetFieldList = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetSpanID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetFieldList { + fieldId = 2 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanInfo[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_SpanInfo[fieldId])) +} + +func (p *SpanInfo) ReadField1(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.SpanID = _field + return nil +} +func (p *SpanInfo) ReadField2(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*FieldData, 0, size) + values := make([]FieldData, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldList = _field + return nil +} + +func (p *SpanInfo) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("SpanInfo"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *SpanInfo) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_id", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.SpanID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *SpanInfo) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("field_list", thrift.LIST, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldList)); err != nil { + return err + } + for _, v := range p.FieldList { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *SpanInfo) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("SpanInfo(%+v)", *p) + +} + +func (p *SpanInfo) DeepEqual(ano *SpanInfo) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.SpanID) { + return false + } + if !p.Field2DeepEqual(ano.FieldList) { + return false + } + return true +} + +func (p *SpanInfo) Field1DeepEqual(src string) bool { + + if strings.Compare(p.SpanID, src) != 0 { + return false + } + return true +} +func (p *SpanInfo) Field2DeepEqual(src []*FieldData) bool { + + if len(p.FieldList) != len(src) { + return false + } + for i, v := range p.FieldList { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +type ExtractSpanInfoResponse struct { + SpanInfos []*SpanInfo `thrift:"span_infos,1,required" frugal:"1,required,list" form:"span_infos,required" json:"span_infos,required" query:"span_infos,required"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` +} + +func NewExtractSpanInfoResponse() *ExtractSpanInfoResponse { + return &ExtractSpanInfoResponse{} +} + +func (p *ExtractSpanInfoResponse) InitDefault() { +} + +func (p *ExtractSpanInfoResponse) GetSpanInfos() (v []*SpanInfo) { + if p != nil { + return p.SpanInfos + } + return +} + +var ExtractSpanInfoResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *ExtractSpanInfoResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return ExtractSpanInfoResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *ExtractSpanInfoResponse) SetSpanInfos(val []*SpanInfo) { + p.SpanInfos = val +} +func (p *ExtractSpanInfoResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_ExtractSpanInfoResponse = map[int16]string{ + 1: "span_infos", + 255: "BaseResp", +} + +func (p *ExtractSpanInfoResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *ExtractSpanInfoResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetSpanInfos bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetSpanInfos = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetSpanInfos { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ExtractSpanInfoResponse[fieldId])) +} + +func (p *ExtractSpanInfoResponse) ReadField1(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*SpanInfo, 0, size) + values := make([]SpanInfo, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.SpanInfos = _field + return nil +} +func (p *ExtractSpanInfoResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *ExtractSpanInfoResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ExtractSpanInfoResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *ExtractSpanInfoResponse) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("span_infos", thrift.LIST, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.SpanInfos)); err != nil { + return err + } + for _, v := range p.SpanInfos { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *ExtractSpanInfoResponse) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseResp() { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *ExtractSpanInfoResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("ExtractSpanInfoResponse(%+v)", *p) + +} + +func (p *ExtractSpanInfoResponse) DeepEqual(ano *ExtractSpanInfoResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.SpanInfos) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *ExtractSpanInfoResponse) Field1DeepEqual(src []*SpanInfo) bool { + + if len(p.SpanInfos) != len(src) { + return false + } + for i, v := range p.SpanInfos { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *ExtractSpanInfoResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type TraceService interface { + ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) + + GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) + + BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) + + IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) + + GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) + + CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) + + UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) + + DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) + + ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) + + CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) + + UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) + + DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) + + ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) + + ExportTracesToDataset(ctx context.Context, req *ExportTracesToDatasetRequest) (r *ExportTracesToDatasetResponse, err error) + + PreviewExportTracesToDataset(ctx context.Context, req *PreviewExportTracesToDatasetRequest) (r *PreviewExportTracesToDatasetResponse, err error) + + ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (r *ChangeEvaluatorScoreResponse, err error) + + ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (r *ListAnnotationEvaluatorsResponse, err error) + + ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (r *ExtractSpanInfoResponse, err error) +} + +type TraceServiceClient struct { + c thrift.TClient +} + +func NewTraceServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *TraceServiceClient { + return &TraceServiceClient{ + c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)), + } +} + +func NewTraceServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *TraceServiceClient { + return &TraceServiceClient{ + c: thrift.NewTStandardClient(iprot, oprot), + } +} + +func NewTraceServiceClient(c thrift.TClient) *TraceServiceClient { + return &TraceServiceClient{ + c: c, + } +} + +func (p *TraceServiceClient) Client_() thrift.TClient { + return p.c +} + +func (p *TraceServiceClient) ListSpans(ctx context.Context, req *ListSpansRequest) (r *ListSpansResponse, err error) { + var _args TraceServiceListSpansArgs + _args.Req = req + var _result TraceServiceListSpansResult + if err = p.Client_().Call(ctx, "ListSpans", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) GetTrace(ctx context.Context, req *GetTraceRequest) (r *GetTraceResponse, err error) { + var _args TraceServiceGetTraceArgs + _args.Req = req + var _result TraceServiceGetTraceResult + if err = p.Client_().Call(ctx, "GetTrace", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) BatchGetTracesAdvanceInfo(ctx context.Context, req *BatchGetTracesAdvanceInfoRequest) (r *BatchGetTracesAdvanceInfoResponse, err error) { + var _args TraceServiceBatchGetTracesAdvanceInfoArgs + _args.Req = req + var _result TraceServiceBatchGetTracesAdvanceInfoResult + if err = p.Client_().Call(ctx, "BatchGetTracesAdvanceInfo", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) IngestTracesInner(ctx context.Context, req *IngestTracesRequest) (r *IngestTracesResponse, err error) { + var _args TraceServiceIngestTracesInnerArgs + _args.Req = req + var _result TraceServiceIngestTracesInnerResult + if err = p.Client_().Call(ctx, "IngestTracesInner", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) GetTracesMetaInfo(ctx context.Context, req *GetTracesMetaInfoRequest) (r *GetTracesMetaInfoResponse, err error) { + var _args TraceServiceGetTracesMetaInfoArgs + _args.Req = req + var _result TraceServiceGetTracesMetaInfoResult + if err = p.Client_().Call(ctx, "GetTracesMetaInfo", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) CreateView(ctx context.Context, req *CreateViewRequest) (r *CreateViewResponse, err error) { + var _args TraceServiceCreateViewArgs + _args.Req = req + var _result TraceServiceCreateViewResult + if err = p.Client_().Call(ctx, "CreateView", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) UpdateView(ctx context.Context, req *UpdateViewRequest) (r *UpdateViewResponse, err error) { + var _args TraceServiceUpdateViewArgs + _args.Req = req + var _result TraceServiceUpdateViewResult + if err = p.Client_().Call(ctx, "UpdateView", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) DeleteView(ctx context.Context, req *DeleteViewRequest) (r *DeleteViewResponse, err error) { + var _args TraceServiceDeleteViewArgs + _args.Req = req + var _result TraceServiceDeleteViewResult + if err = p.Client_().Call(ctx, "DeleteView", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ListViews(ctx context.Context, req *ListViewsRequest) (r *ListViewsResponse, err error) { + var _args TraceServiceListViewsArgs + _args.Req = req + var _result TraceServiceListViewsResult + if err = p.Client_().Call(ctx, "ListViews", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) CreateManualAnnotation(ctx context.Context, req *CreateManualAnnotationRequest) (r *CreateManualAnnotationResponse, err error) { + var _args TraceServiceCreateManualAnnotationArgs + _args.Req = req + var _result TraceServiceCreateManualAnnotationResult + if err = p.Client_().Call(ctx, "CreateManualAnnotation", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) UpdateManualAnnotation(ctx context.Context, req *UpdateManualAnnotationRequest) (r *UpdateManualAnnotationResponse, err error) { + var _args TraceServiceUpdateManualAnnotationArgs + _args.Req = req + var _result TraceServiceUpdateManualAnnotationResult + if err = p.Client_().Call(ctx, "UpdateManualAnnotation", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) DeleteManualAnnotation(ctx context.Context, req *DeleteManualAnnotationRequest) (r *DeleteManualAnnotationResponse, err error) { + var _args TraceServiceDeleteManualAnnotationArgs + _args.Req = req + var _result TraceServiceDeleteManualAnnotationResult + if err = p.Client_().Call(ctx, "DeleteManualAnnotation", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ListAnnotations(ctx context.Context, req *ListAnnotationsRequest) (r *ListAnnotationsResponse, err error) { + var _args TraceServiceListAnnotationsArgs + _args.Req = req + var _result TraceServiceListAnnotationsResult + if err = p.Client_().Call(ctx, "ListAnnotations", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ExportTracesToDataset(ctx context.Context, req *ExportTracesToDatasetRequest) (r *ExportTracesToDatasetResponse, err error) { + var _args TraceServiceExportTracesToDatasetArgs + _args.Req = req + var _result TraceServiceExportTracesToDatasetResult + if err = p.Client_().Call(ctx, "ExportTracesToDataset", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) PreviewExportTracesToDataset(ctx context.Context, req *PreviewExportTracesToDatasetRequest) (r *PreviewExportTracesToDatasetResponse, err error) { + var _args TraceServicePreviewExportTracesToDatasetArgs + _args.Req = req + var _result TraceServicePreviewExportTracesToDatasetResult + if err = p.Client_().Call(ctx, "PreviewExportTracesToDataset", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *ChangeEvaluatorScoreRequest) (r *ChangeEvaluatorScoreResponse, err error) { + var _args TraceServiceChangeEvaluatorScoreArgs + _args.Req = req + var _result TraceServiceChangeEvaluatorScoreResult + if err = p.Client_().Call(ctx, "ChangeEvaluatorScore", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (r *ListAnnotationEvaluatorsResponse, err error) { + var _args TraceServiceListAnnotationEvaluatorsArgs + _args.Req = req + var _result TraceServiceListAnnotationEvaluatorsResult + if err = p.Client_().Call(ctx, "ListAnnotationEvaluators", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *TraceServiceClient) ExtractSpanInfo(ctx context.Context, req *ExtractSpanInfoRequest) (r *ExtractSpanInfoResponse, err error) { + var _args TraceServiceExtractSpanInfoArgs + _args.Req = req + var _result TraceServiceExtractSpanInfoResult + if err = p.Client_().Call(ctx, "ExtractSpanInfo", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +type TraceServiceProcessor struct { + processorMap map[string]thrift.TProcessorFunction + handler TraceService +} + +func (p *TraceServiceProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) { + p.processorMap[key] = processor +} + +func (p *TraceServiceProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) { + processor, ok = p.processorMap[key] + return processor, ok +} + +func (p *TraceServiceProcessor) ProcessorMap() map[string]thrift.TProcessorFunction { + return p.processorMap +} + +func NewTraceServiceProcessor(handler TraceService) *TraceServiceProcessor { + self := &TraceServiceProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)} + self.AddToProcessorMap("ListSpans", &traceServiceProcessorListSpans{handler: handler}) + self.AddToProcessorMap("GetTrace", &traceServiceProcessorGetTrace{handler: handler}) + self.AddToProcessorMap("BatchGetTracesAdvanceInfo", &traceServiceProcessorBatchGetTracesAdvanceInfo{handler: handler}) + self.AddToProcessorMap("IngestTracesInner", &traceServiceProcessorIngestTracesInner{handler: handler}) + self.AddToProcessorMap("GetTracesMetaInfo", &traceServiceProcessorGetTracesMetaInfo{handler: handler}) + self.AddToProcessorMap("CreateView", &traceServiceProcessorCreateView{handler: handler}) + self.AddToProcessorMap("UpdateView", &traceServiceProcessorUpdateView{handler: handler}) + self.AddToProcessorMap("DeleteView", &traceServiceProcessorDeleteView{handler: handler}) + self.AddToProcessorMap("ListViews", &traceServiceProcessorListViews{handler: handler}) + self.AddToProcessorMap("CreateManualAnnotation", &traceServiceProcessorCreateManualAnnotation{handler: handler}) + self.AddToProcessorMap("UpdateManualAnnotation", &traceServiceProcessorUpdateManualAnnotation{handler: handler}) + self.AddToProcessorMap("DeleteManualAnnotation", &traceServiceProcessorDeleteManualAnnotation{handler: handler}) + self.AddToProcessorMap("ListAnnotations", &traceServiceProcessorListAnnotations{handler: handler}) + self.AddToProcessorMap("ExportTracesToDataset", &traceServiceProcessorExportTracesToDataset{handler: handler}) + self.AddToProcessorMap("PreviewExportTracesToDataset", &traceServiceProcessorPreviewExportTracesToDataset{handler: handler}) + self.AddToProcessorMap("ChangeEvaluatorScore", &traceServiceProcessorChangeEvaluatorScore{handler: handler}) + self.AddToProcessorMap("ListAnnotationEvaluators", &traceServiceProcessorListAnnotationEvaluators{handler: handler}) + self.AddToProcessorMap("ExtractSpanInfo", &traceServiceProcessorExtractSpanInfo{handler: handler}) + return self +} +func (p *TraceServiceProcessor) Process(ctx context.Context, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { name, _, seqId, err := iprot.ReadMessageBegin() if err != nil { return false, err } - if processor, ok := p.GetProcessorFunction(name); ok { - return processor.Process(ctx, seqId, iprot, oprot) + if processor, ok := p.GetProcessorFunction(name); ok { + return processor.Process(ctx, seqId, iprot, oprot) + } + iprot.Skip(thrift.STRUCT) + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name) + oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, x +} + +type traceServiceProcessorListSpans struct { + handler TraceService +} + +func (p *traceServiceProcessorListSpans) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListSpansArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListSpansResult{} + var retval *ListSpansResponse + if retval, err2 = p.handler.ListSpans(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListSpans: "+err2.Error()) + oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ListSpans", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorGetTrace struct { + handler TraceService +} + +func (p *traceServiceProcessorGetTrace) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceGetTraceArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceGetTraceResult{} + var retval *GetTraceResponse + if retval, err2 = p.handler.GetTrace(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTrace: "+err2.Error()) + oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("GetTrace", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorBatchGetTracesAdvanceInfo struct { + handler TraceService +} + +func (p *traceServiceProcessorBatchGetTracesAdvanceInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceBatchGetTracesAdvanceInfoArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceBatchGetTracesAdvanceInfoResult{} + var retval *BatchGetTracesAdvanceInfoResponse + if retval, err2 = p.handler.BatchGetTracesAdvanceInfo(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing BatchGetTracesAdvanceInfo: "+err2.Error()) + oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorIngestTracesInner struct { + handler TraceService +} + +func (p *traceServiceProcessorIngestTracesInner) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceIngestTracesInnerArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceIngestTracesInnerResult{} + var retval *IngestTracesResponse + if retval, err2 = p.handler.IngestTracesInner(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing IngestTracesInner: "+err2.Error()) + oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("IngestTracesInner", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorGetTracesMetaInfo struct { + handler TraceService +} + +func (p *traceServiceProcessorGetTracesMetaInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceGetTracesMetaInfoArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceGetTracesMetaInfoResult{} + var retval *GetTracesMetaInfoResponse + if retval, err2 = p.handler.GetTracesMetaInfo(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTracesMetaInfo: "+err2.Error()) + oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorCreateView struct { + handler TraceService +} + +func (p *traceServiceProcessorCreateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceCreateViewArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceCreateViewResult{} + var retval *CreateViewResponse + if retval, err2 = p.handler.CreateView(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateView: "+err2.Error()) + oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("CreateView", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorUpdateView struct { + handler TraceService +} + +func (p *traceServiceProcessorUpdateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceUpdateViewArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceUpdateViewResult{} + var retval *UpdateViewResponse + if retval, err2 = p.handler.UpdateView(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateView: "+err2.Error()) + oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("UpdateView", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorDeleteView struct { + handler TraceService +} + +func (p *traceServiceProcessorDeleteView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceDeleteViewArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceDeleteViewResult{} + var retval *DeleteViewResponse + if retval, err2 = p.handler.DeleteView(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteView: "+err2.Error()) + oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("DeleteView", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorListViews struct { + handler TraceService +} + +func (p *traceServiceProcessorListViews) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListViewsArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListViewsResult{} + var retval *ListViewsResponse + if retval, err2 = p.handler.ListViews(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListViews: "+err2.Error()) + oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ListViews", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorCreateManualAnnotation struct { + handler TraceService +} + +func (p *traceServiceProcessorCreateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceCreateManualAnnotationArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceCreateManualAnnotationResult{} + var retval *CreateManualAnnotationResponse + if retval, err2 = p.handler.CreateManualAnnotation(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateManualAnnotation: "+err2.Error()) + oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("CreateManualAnnotation", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorUpdateManualAnnotation struct { + handler TraceService +} + +func (p *traceServiceProcessorUpdateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceUpdateManualAnnotationArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceUpdateManualAnnotationResult{} + var retval *UpdateManualAnnotationResponse + if retval, err2 = p.handler.UpdateManualAnnotation(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateManualAnnotation: "+err2.Error()) + oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorDeleteManualAnnotation struct { + handler TraceService +} + +func (p *traceServiceProcessorDeleteManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceDeleteManualAnnotationArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceDeleteManualAnnotationResult{} + var retval *DeleteManualAnnotationResponse + if retval, err2 = p.handler.DeleteManualAnnotation(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteManualAnnotation: "+err2.Error()) + oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorListAnnotations struct { + handler TraceService +} + +func (p *traceServiceProcessorListAnnotations) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListAnnotationsArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := TraceServiceListAnnotationsResult{} + var retval *ListAnnotationsResponse + if retval, err2 = p.handler.ListAnnotations(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotations: "+err2.Error()) + oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval } - iprot.Skip(thrift.STRUCT) + if err2 = oprot.WriteMessageBegin("ListAnnotations", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type traceServiceProcessorExportTracesToDataset struct { + handler TraceService +} + +func (p *traceServiceProcessorExportTracesToDataset) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceExportTracesToDatasetArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ExportTracesToDataset", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name) - oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, x + var err2 error + result := TraceServiceExportTracesToDatasetResult{} + var retval *ExportTracesToDatasetResponse + if retval, err2 = p.handler.ExportTracesToDataset(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ExportTracesToDataset: "+err2.Error()) + oprot.WriteMessageBegin("ExportTracesToDataset", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ExportTracesToDataset", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err } -type traceServiceProcessorListSpans struct { +type traceServiceProcessorPreviewExportTracesToDataset struct { handler TraceService } -func (p *traceServiceProcessorListSpans) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListSpansArgs{} +func (p *traceServiceProcessorPreviewExportTracesToDataset) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServicePreviewExportTracesToDatasetArgs{} if err = args.Read(iprot); err != nil { iprot.ReadMessageEnd() x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) + oprot.WriteMessageBegin("PreviewExportTracesToDataset", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) @@ -15252,11 +19496,11 @@ func (p *traceServiceProcessorListSpans) Process(ctx context.Context, seqId int3 iprot.ReadMessageEnd() var err2 error - result := TraceServiceListSpansResult{} - var retval *ListSpansResponse - if retval, err2 = p.handler.ListSpans(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListSpans: "+err2.Error()) - oprot.WriteMessageBegin("ListSpans", thrift.EXCEPTION, seqId) + result := TraceServicePreviewExportTracesToDatasetResult{} + var retval *PreviewExportTracesToDatasetResponse + if retval, err2 = p.handler.PreviewExportTracesToDataset(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing PreviewExportTracesToDataset: "+err2.Error()) + oprot.WriteMessageBegin("PreviewExportTracesToDataset", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) @@ -15264,7 +19508,7 @@ func (p *traceServiceProcessorListSpans) Process(ctx context.Context, seqId int3 } else { result.Success = retval } - if err2 = oprot.WriteMessageBegin("ListSpans", thrift.REPLY, seqId); err2 != nil { + if err2 = oprot.WriteMessageBegin("PreviewExportTracesToDataset", thrift.REPLY, seqId); err2 != nil { err = err2 } if err2 = result.Write(oprot); err == nil && err2 != nil { @@ -15282,16 +19526,16 @@ func (p *traceServiceProcessorListSpans) Process(ctx context.Context, seqId int3 return true, err } -type traceServiceProcessorGetTrace struct { +type traceServiceProcessorChangeEvaluatorScore struct { handler TraceService } -func (p *traceServiceProcessorGetTrace) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceGetTraceArgs{} +func (p *traceServiceProcessorChangeEvaluatorScore) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceChangeEvaluatorScoreArgs{} if err = args.Read(iprot); err != nil { iprot.ReadMessageEnd() x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) + oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) @@ -15300,11 +19544,11 @@ func (p *traceServiceProcessorGetTrace) Process(ctx context.Context, seqId int32 iprot.ReadMessageEnd() var err2 error - result := TraceServiceGetTraceResult{} - var retval *GetTraceResponse - if retval, err2 = p.handler.GetTrace(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTrace: "+err2.Error()) - oprot.WriteMessageBegin("GetTrace", thrift.EXCEPTION, seqId) + result := TraceServiceChangeEvaluatorScoreResult{} + var retval *ChangeEvaluatorScoreResponse + if retval, err2 = p.handler.ChangeEvaluatorScore(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ChangeEvaluatorScore: "+err2.Error()) + oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) @@ -15312,7 +19556,7 @@ func (p *traceServiceProcessorGetTrace) Process(ctx context.Context, seqId int32 } else { result.Success = retval } - if err2 = oprot.WriteMessageBegin("GetTrace", thrift.REPLY, seqId); err2 != nil { + if err2 = oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.REPLY, seqId); err2 != nil { err = err2 } if err2 = result.Write(oprot); err == nil && err2 != nil { @@ -15330,16 +19574,16 @@ func (p *traceServiceProcessorGetTrace) Process(ctx context.Context, seqId int32 return true, err } -type traceServiceProcessorBatchGetTracesAdvanceInfo struct { +type traceServiceProcessorListAnnotationEvaluators struct { handler TraceService } -func (p *traceServiceProcessorBatchGetTracesAdvanceInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceBatchGetTracesAdvanceInfoArgs{} +func (p *traceServiceProcessorListAnnotationEvaluators) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceListAnnotationEvaluatorsArgs{} if err = args.Read(iprot); err != nil { iprot.ReadMessageEnd() x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) + oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) @@ -15348,11 +19592,11 @@ func (p *traceServiceProcessorBatchGetTracesAdvanceInfo) Process(ctx context.Con iprot.ReadMessageEnd() var err2 error - result := TraceServiceBatchGetTracesAdvanceInfoResult{} - var retval *BatchGetTracesAdvanceInfoResponse - if retval, err2 = p.handler.BatchGetTracesAdvanceInfo(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing BatchGetTracesAdvanceInfo: "+err2.Error()) - oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.EXCEPTION, seqId) + result := TraceServiceListAnnotationEvaluatorsResult{} + var retval *ListAnnotationEvaluatorsResponse + if retval, err2 = p.handler.ListAnnotationEvaluators(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotationEvaluators: "+err2.Error()) + oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) @@ -15360,7 +19604,7 @@ func (p *traceServiceProcessorBatchGetTracesAdvanceInfo) Process(ctx context.Con } else { result.Success = retval } - if err2 = oprot.WriteMessageBegin("BatchGetTracesAdvanceInfo", thrift.REPLY, seqId); err2 != nil { + if err2 = oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.REPLY, seqId); err2 != nil { err = err2 } if err2 = result.Write(oprot); err == nil && err2 != nil { @@ -15378,16 +19622,16 @@ func (p *traceServiceProcessorBatchGetTracesAdvanceInfo) Process(ctx context.Con return true, err } -type traceServiceProcessorIngestTracesInner struct { +type traceServiceProcessorExtractSpanInfo struct { handler TraceService } -func (p *traceServiceProcessorIngestTracesInner) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceIngestTracesInnerArgs{} +func (p *traceServiceProcessorExtractSpanInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := TraceServiceExtractSpanInfoArgs{} if err = args.Read(iprot); err != nil { iprot.ReadMessageEnd() x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) + oprot.WriteMessageBegin("ExtractSpanInfo", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) @@ -15396,11 +19640,11 @@ func (p *traceServiceProcessorIngestTracesInner) Process(ctx context.Context, se iprot.ReadMessageEnd() var err2 error - result := TraceServiceIngestTracesInnerResult{} - var retval *IngestTracesResponse - if retval, err2 = p.handler.IngestTracesInner(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing IngestTracesInner: "+err2.Error()) - oprot.WriteMessageBegin("IngestTracesInner", thrift.EXCEPTION, seqId) + result := TraceServiceExtractSpanInfoResult{} + var retval *ExtractSpanInfoResponse + if retval, err2 = p.handler.ExtractSpanInfo(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ExtractSpanInfo: "+err2.Error()) + oprot.WriteMessageBegin("ExtractSpanInfo", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) @@ -15408,7 +19652,7 @@ func (p *traceServiceProcessorIngestTracesInner) Process(ctx context.Context, se } else { result.Success = retval } - if err2 = oprot.WriteMessageBegin("IngestTracesInner", thrift.REPLY, seqId); err2 != nil { + if err2 = oprot.WriteMessageBegin("ExtractSpanInfo", thrift.REPLY, seqId); err2 != nil { err = err2 } if err2 = result.Write(oprot); err == nil && err2 != nil { @@ -15426,617 +19670,729 @@ func (p *traceServiceProcessorIngestTracesInner) Process(ctx context.Context, se return true, err } -type traceServiceProcessorGetTracesMetaInfo struct { - handler TraceService +type TraceServiceListSpansArgs struct { + Req *ListSpansRequest `thrift:"req,1" frugal:"1,default,ListSpansRequest"` +} + +func NewTraceServiceListSpansArgs() *TraceServiceListSpansArgs { + return &TraceServiceListSpansArgs{} +} + +func (p *TraceServiceListSpansArgs) InitDefault() { +} + +var TraceServiceListSpansArgs_Req_DEFAULT *ListSpansRequest + +func (p *TraceServiceListSpansArgs) GetReq() (v *ListSpansRequest) { + if p == nil { + return + } + if !p.IsSetReq() { + return TraceServiceListSpansArgs_Req_DEFAULT + } + return p.Req +} +func (p *TraceServiceListSpansArgs) SetReq(val *ListSpansRequest) { + p.Req = val +} + +var fieldIDToName_TraceServiceListSpansArgs = map[int16]string{ + 1: "req", +} + +func (p *TraceServiceListSpansArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *TraceServiceListSpansArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceListSpansArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListSpansRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil } -func (p *traceServiceProcessorGetTracesMetaInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceGetTracesMetaInfoArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceListSpansArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListSpans_args"); err != nil { + goto WriteStructBeginError } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceGetTracesMetaInfoResult{} - var retval *GetTracesMetaInfoResponse - if retval, err2 = p.handler.GetTracesMetaInfo(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetTracesMetaInfo: "+err2.Error()) - oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } } - if err2 = oprot.WriteMessageBegin("GetTracesMetaInfo", thrift.REPLY, seqId); err2 != nil { - err = err2 + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TraceServiceListSpansArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if err := p.Req.Write(oprot); err != nil { + return err } - if err != nil { - return + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } - return true, err -} - -type traceServiceProcessorCreateView struct { - handler TraceService + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *traceServiceProcessorCreateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceCreateViewArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceListSpansArgs) String() string { + if p == nil { + return "" } + return fmt.Sprintf("TraceServiceListSpansArgs(%+v)", *p) - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceCreateViewResult{} - var retval *CreateViewResponse - if retval, err2 = p.handler.CreateView(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateView: "+err2.Error()) - oprot.WriteMessageBegin("CreateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("CreateView", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 +} + +func (p *TraceServiceListSpansArgs) DeepEqual(ano *TraceServiceListSpansArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + if !p.Field1DeepEqual(ano.Req) { + return false } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + return true +} + +func (p *TraceServiceListSpansArgs) Field1DeepEqual(src *ListSpansRequest) bool { + + if !p.Req.DeepEqual(src) { + return false } - if err != nil { + return true +} + +type TraceServiceListSpansResult struct { + Success *ListSpansResponse `thrift:"success,0,optional" frugal:"0,optional,ListSpansResponse"` +} + +func NewTraceServiceListSpansResult() *TraceServiceListSpansResult { + return &TraceServiceListSpansResult{} +} + +func (p *TraceServiceListSpansResult) InitDefault() { +} + +var TraceServiceListSpansResult_Success_DEFAULT *ListSpansResponse + +func (p *TraceServiceListSpansResult) GetSuccess() (v *ListSpansResponse) { + if p == nil { return } - return true, err + if !p.IsSetSuccess() { + return TraceServiceListSpansResult_Success_DEFAULT + } + return p.Success +} +func (p *TraceServiceListSpansResult) SetSuccess(x interface{}) { + p.Success = x.(*ListSpansResponse) } -type traceServiceProcessorUpdateView struct { - handler TraceService +var fieldIDToName_TraceServiceListSpansResult = map[int16]string{ + 0: "success", } -func (p *traceServiceProcessorUpdateView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceUpdateViewArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceListSpansResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *TraceServiceListSpansResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError } - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceUpdateViewResult{} - var retval *UpdateViewResponse - if retval, err2 = p.handler.UpdateView(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateView: "+err2.Error()) - oprot.WriteMessageBegin("UpdateView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } } - if err2 = oprot.WriteMessageBegin("UpdateView", thrift.REPLY, seqId); err2 != nil { - err = err2 + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TraceServiceListSpansResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListSpansResponse() + if err := _field.Read(iprot); err != nil { + return err } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 + p.Success = _field + return nil +} + +func (p *TraceServiceListSpansResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListSpans_result"); err != nil { + goto WriteStructBeginError } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError } - if err != nil { - return + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError } - return true, err + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -type traceServiceProcessorDeleteView struct { - handler TraceService +func (p *TraceServiceListSpansResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *traceServiceProcessorDeleteView) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceDeleteViewArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceListSpansResult) String() string { + if p == nil { + return "" } + return fmt.Sprintf("TraceServiceListSpansResult(%+v)", *p) - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceDeleteViewResult{} - var retval *DeleteViewResponse - if retval, err2 = p.handler.DeleteView(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteView: "+err2.Error()) - oprot.WriteMessageBegin("DeleteView", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("DeleteView", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 +} + +func (p *TraceServiceListSpansResult) DeepEqual(ano *TraceServiceListSpansResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if !p.Field0DeepEqual(ano.Success) { + return false } - if err != nil { - return + return true +} + +func (p *TraceServiceListSpansResult) Field0DeepEqual(src *ListSpansResponse) bool { + + if !p.Success.DeepEqual(src) { + return false } - return true, err + return true } -type traceServiceProcessorListViews struct { - handler TraceService +type TraceServiceGetTraceArgs struct { + Req *GetTraceRequest `thrift:"req,1" frugal:"1,default,GetTraceRequest"` } -func (p *traceServiceProcessorListViews) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListViewsArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } +func NewTraceServiceGetTraceArgs() *TraceServiceGetTraceArgs { + return &TraceServiceGetTraceArgs{} +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListViewsResult{} - var retval *ListViewsResponse - if retval, err2 = p.handler.ListViews(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListViews: "+err2.Error()) - oprot.WriteMessageBegin("ListViews", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ListViews", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { +func (p *TraceServiceGetTraceArgs) InitDefault() { +} + +var TraceServiceGetTraceArgs_Req_DEFAULT *GetTraceRequest + +func (p *TraceServiceGetTraceArgs) GetReq() (v *GetTraceRequest) { + if p == nil { return } - return true, err + if !p.IsSetReq() { + return TraceServiceGetTraceArgs_Req_DEFAULT + } + return p.Req +} +func (p *TraceServiceGetTraceArgs) SetReq(val *GetTraceRequest) { + p.Req = val } -type traceServiceProcessorCreateManualAnnotation struct { - handler TraceService +var fieldIDToName_TraceServiceGetTraceArgs = map[int16]string{ + 1: "req", } -func (p *traceServiceProcessorCreateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceCreateManualAnnotationArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } +func (p *TraceServiceGetTraceArgs) IsSetReq() bool { + return p.Req != nil +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceCreateManualAnnotationResult{} - var retval *CreateManualAnnotationResponse - if retval, err2 = p.handler.CreateManualAnnotation(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing CreateManualAnnotation: "+err2.Error()) - oprot.WriteMessageBegin("CreateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("CreateManualAnnotation", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 +func (p *TraceServiceGetTraceArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } } - if err != nil { - return + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError } - return true, err -} -type traceServiceProcessorUpdateManualAnnotation struct { - handler TraceService + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *traceServiceProcessorUpdateManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceUpdateManualAnnotationArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceGetTraceArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewGetTraceRequest() + if err := _field.Read(iprot); err != nil { + return err } + p.Req = _field + return nil +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceUpdateManualAnnotationResult{} - var retval *UpdateManualAnnotationResponse - if retval, err2 = p.handler.UpdateManualAnnotation(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing UpdateManualAnnotation: "+err2.Error()) - oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("UpdateManualAnnotation", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 +func (p *TraceServiceGetTraceArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTrace_args"); err != nil { + goto WriteStructBeginError } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError } - if err != nil { - return + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError } - return true, err -} - -type traceServiceProcessorDeleteManualAnnotation struct { - handler TraceService + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *traceServiceProcessorDeleteManualAnnotation) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceDeleteManualAnnotationArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceGetTraceArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError } - - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceDeleteManualAnnotationResult{} - var retval *DeleteManualAnnotationResponse - if retval, err2 = p.handler.DeleteManualAnnotation(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DeleteManualAnnotation: "+err2.Error()) - oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval + if err := p.Req.Write(oprot); err != nil { + return err } - if err2 = oprot.WriteMessageBegin("DeleteManualAnnotation", thrift.REPLY, seqId); err2 != nil { - err = err2 + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *TraceServiceGetTraceArgs) String() string { + if p == nil { + return "" } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + return fmt.Sprintf("TraceServiceGetTraceArgs(%+v)", *p) + +} + +func (p *TraceServiceGetTraceArgs) DeepEqual(ano *TraceServiceGetTraceArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if !p.Field1DeepEqual(ano.Req) { + return false } - if err != nil { - return + return true +} + +func (p *TraceServiceGetTraceArgs) Field1DeepEqual(src *GetTraceRequest) bool { + + if !p.Req.DeepEqual(src) { + return false } - return true, err + return true } -type traceServiceProcessorListAnnotations struct { - handler TraceService +type TraceServiceGetTraceResult struct { + Success *GetTraceResponse `thrift:"success,0,optional" frugal:"0,optional,GetTraceResponse"` } -func (p *traceServiceProcessorListAnnotations) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListAnnotationsArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } +func NewTraceServiceGetTraceResult() *TraceServiceGetTraceResult { + return &TraceServiceGetTraceResult{} +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListAnnotationsResult{} - var retval *ListAnnotationsResponse - if retval, err2 = p.handler.ListAnnotations(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotations: "+err2.Error()) - oprot.WriteMessageBegin("ListAnnotations", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ListAnnotations", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 - } - if err != nil { +func (p *TraceServiceGetTraceResult) InitDefault() { +} + +var TraceServiceGetTraceResult_Success_DEFAULT *GetTraceResponse + +func (p *TraceServiceGetTraceResult) GetSuccess() (v *GetTraceResponse) { + if p == nil { return } - return true, err + if !p.IsSetSuccess() { + return TraceServiceGetTraceResult_Success_DEFAULT + } + return p.Success +} +func (p *TraceServiceGetTraceResult) SetSuccess(x interface{}) { + p.Success = x.(*GetTraceResponse) } -type traceServiceProcessorChangeEvaluatorScore struct { - handler TraceService +var fieldIDToName_TraceServiceGetTraceResult = map[int16]string{ + 0: "success", } -func (p *traceServiceProcessorChangeEvaluatorScore) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceChangeEvaluatorScoreArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err - } +func (p *TraceServiceGetTraceResult) IsSetSuccess() bool { + return p.Success != nil +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceChangeEvaluatorScoreResult{} - var retval *ChangeEvaluatorScoreResponse - if retval, err2 = p.handler.ChangeEvaluatorScore(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ChangeEvaluatorScore: "+err2.Error()) - oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ChangeEvaluatorScore", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 +func (p *TraceServiceGetTraceResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } } - if err != nil { - return + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError } - return true, err -} -type traceServiceProcessorListAnnotationEvaluators struct { - handler TraceService + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *traceServiceProcessorListAnnotationEvaluators) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceListAnnotationEvaluatorsArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceGetTraceResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewGetTraceResponse() + if err := _field.Read(iprot); err != nil { + return err } + p.Success = _field + return nil +} - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceListAnnotationEvaluatorsResult{} - var retval *ListAnnotationEvaluatorsResponse - if retval, err2 = p.handler.ListAnnotationEvaluators(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListAnnotationEvaluators: "+err2.Error()) - oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ListAnnotationEvaluators", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 +func (p *TraceServiceGetTraceResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("GetTrace_result"); err != nil { + goto WriteStructBeginError } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError } - if err != nil { - return + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError } - return true, err + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -type traceServiceProcessorExtractSpanInfo struct { - handler TraceService +func (p *TraceServiceGetTraceResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *traceServiceProcessorExtractSpanInfo) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := TraceServiceExtractSpanInfoArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("ExtractSpanInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *TraceServiceGetTraceResult) String() string { + if p == nil { + return "" } + return fmt.Sprintf("TraceServiceGetTraceResult(%+v)", *p) - iprot.ReadMessageEnd() - var err2 error - result := TraceServiceExtractSpanInfoResult{} - var retval *ExtractSpanInfoResponse - if retval, err2 = p.handler.ExtractSpanInfo(ctx, args.Req); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ExtractSpanInfo: "+err2.Error()) - oprot.WriteMessageBegin("ExtractSpanInfo", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("ExtractSpanInfo", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 +} + +func (p *TraceServiceGetTraceResult) DeepEqual(ano *TraceServiceGetTraceResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if !p.Field0DeepEqual(ano.Success) { + return false } - if err != nil { - return + return true +} + +func (p *TraceServiceGetTraceResult) Field0DeepEqual(src *GetTraceResponse) bool { + + if !p.Success.DeepEqual(src) { + return false } - return true, err + return true } -type TraceServiceListSpansArgs struct { - Req *ListSpansRequest `thrift:"req,1" frugal:"1,default,ListSpansRequest"` +type TraceServiceBatchGetTracesAdvanceInfoArgs struct { + Req *BatchGetTracesAdvanceInfoRequest `thrift:"req,1" frugal:"1,default,BatchGetTracesAdvanceInfoRequest"` } -func NewTraceServiceListSpansArgs() *TraceServiceListSpansArgs { - return &TraceServiceListSpansArgs{} +func NewTraceServiceBatchGetTracesAdvanceInfoArgs() *TraceServiceBatchGetTracesAdvanceInfoArgs { + return &TraceServiceBatchGetTracesAdvanceInfoArgs{} } -func (p *TraceServiceListSpansArgs) InitDefault() { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) InitDefault() { } -var TraceServiceListSpansArgs_Req_DEFAULT *ListSpansRequest +var TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT *BatchGetTracesAdvanceInfoRequest -func (p *TraceServiceListSpansArgs) GetReq() (v *ListSpansRequest) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) GetReq() (v *BatchGetTracesAdvanceInfoRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceListSpansArgs_Req_DEFAULT + return TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceListSpansArgs) SetReq(val *ListSpansRequest) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) SetReq(val *BatchGetTracesAdvanceInfoRequest) { p.Req = val } -var fieldIDToName_TraceServiceListSpansArgs = map[int16]string{ +var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceListSpansArgs) IsSetReq() bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceListSpansArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16081,7 +20437,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16091,8 +20447,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListSpansArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListSpansRequest() +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewBatchGetTracesAdvanceInfoRequest() if err := _field.Read(iprot); err != nil { return err } @@ -16100,9 +20456,9 @@ func (p *TraceServiceListSpansArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListSpansArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListSpans_args"); err != nil { + if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16128,7 +20484,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListSpansArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -16145,15 +20501,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceListSpansArgs) String() string { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListSpansArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoArgs(%+v)", *p) } -func (p *TraceServiceListSpansArgs) DeepEqual(ano *TraceServiceListSpansArgs) bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16165,7 +20521,7 @@ func (p *TraceServiceListSpansArgs) DeepEqual(ano *TraceServiceListSpansArgs) bo return true } -func (p *TraceServiceListSpansArgs) Field1DeepEqual(src *ListSpansRequest) bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Field1DeepEqual(src *BatchGetTracesAdvanceInfoRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -16173,41 +20529,41 @@ func (p *TraceServiceListSpansArgs) Field1DeepEqual(src *ListSpansRequest) bool return true } -type TraceServiceListSpansResult struct { - Success *ListSpansResponse `thrift:"success,0,optional" frugal:"0,optional,ListSpansResponse"` +type TraceServiceBatchGetTracesAdvanceInfoResult struct { + Success *BatchGetTracesAdvanceInfoResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetTracesAdvanceInfoResponse"` } -func NewTraceServiceListSpansResult() *TraceServiceListSpansResult { - return &TraceServiceListSpansResult{} +func NewTraceServiceBatchGetTracesAdvanceInfoResult() *TraceServiceBatchGetTracesAdvanceInfoResult { + return &TraceServiceBatchGetTracesAdvanceInfoResult{} } -func (p *TraceServiceListSpansResult) InitDefault() { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) InitDefault() { } -var TraceServiceListSpansResult_Success_DEFAULT *ListSpansResponse +var TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT *BatchGetTracesAdvanceInfoResponse -func (p *TraceServiceListSpansResult) GetSuccess() (v *ListSpansResponse) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) GetSuccess() (v *BatchGetTracesAdvanceInfoResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceListSpansResult_Success_DEFAULT + return TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceListSpansResult) SetSuccess(x interface{}) { - p.Success = x.(*ListSpansResponse) +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) SetSuccess(x interface{}) { + p.Success = x.(*BatchGetTracesAdvanceInfoResponse) } -var fieldIDToName_TraceServiceListSpansResult = map[int16]string{ +var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult = map[int16]string{ 0: "success", } -func (p *TraceServiceListSpansResult) IsSetSuccess() bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceListSpansResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16252,7 +20608,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16262,8 +20618,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListSpansResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListSpansResponse() +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewBatchGetTracesAdvanceInfoResponse() if err := _field.Read(iprot); err != nil { return err } @@ -16271,9 +20627,9 @@ func (p *TraceServiceListSpansResult) ReadField0(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListSpansResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListSpans_result"); err != nil { + if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16299,7 +20655,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListSpansResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -16318,15 +20674,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceListSpansResult) String() string { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListSpansResult(%+v)", *p) + return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoResult(%+v)", *p) } -func (p *TraceServiceListSpansResult) DeepEqual(ano *TraceServiceListSpansResult) bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16338,7 +20694,7 @@ func (p *TraceServiceListSpansResult) DeepEqual(ano *TraceServiceListSpansResult return true } -func (p *TraceServiceListSpansResult) Field0DeepEqual(src *ListSpansResponse) bool { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Field0DeepEqual(src *BatchGetTracesAdvanceInfoResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -16346,41 +20702,41 @@ func (p *TraceServiceListSpansResult) Field0DeepEqual(src *ListSpansResponse) bo return true } -type TraceServiceGetTraceArgs struct { - Req *GetTraceRequest `thrift:"req,1" frugal:"1,default,GetTraceRequest"` +type TraceServiceIngestTracesInnerArgs struct { + Req *IngestTracesRequest `thrift:"req,1" frugal:"1,default,IngestTracesRequest"` } -func NewTraceServiceGetTraceArgs() *TraceServiceGetTraceArgs { - return &TraceServiceGetTraceArgs{} +func NewTraceServiceIngestTracesInnerArgs() *TraceServiceIngestTracesInnerArgs { + return &TraceServiceIngestTracesInnerArgs{} } -func (p *TraceServiceGetTraceArgs) InitDefault() { +func (p *TraceServiceIngestTracesInnerArgs) InitDefault() { } -var TraceServiceGetTraceArgs_Req_DEFAULT *GetTraceRequest +var TraceServiceIngestTracesInnerArgs_Req_DEFAULT *IngestTracesRequest -func (p *TraceServiceGetTraceArgs) GetReq() (v *GetTraceRequest) { +func (p *TraceServiceIngestTracesInnerArgs) GetReq() (v *IngestTracesRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceGetTraceArgs_Req_DEFAULT + return TraceServiceIngestTracesInnerArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceGetTraceArgs) SetReq(val *GetTraceRequest) { +func (p *TraceServiceIngestTracesInnerArgs) SetReq(val *IngestTracesRequest) { p.Req = val } -var fieldIDToName_TraceServiceGetTraceArgs = map[int16]string{ +var fieldIDToName_TraceServiceIngestTracesInnerArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceGetTraceArgs) IsSetReq() bool { +func (p *TraceServiceIngestTracesInnerArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceGetTraceArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16425,7 +20781,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16435,8 +20791,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceGetTraceArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewGetTraceRequest() +func (p *TraceServiceIngestTracesInnerArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewIngestTracesRequest() if err := _field.Read(iprot); err != nil { return err } @@ -16444,9 +20800,9 @@ func (p *TraceServiceGetTraceArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceGetTraceArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetTrace_args"); err != nil { + if err = oprot.WriteStructBegin("IngestTracesInner_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16472,7 +20828,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceGetTraceArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -16489,15 +20845,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceGetTraceArgs) String() string { +func (p *TraceServiceIngestTracesInnerArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceGetTraceArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceIngestTracesInnerArgs(%+v)", *p) } -func (p *TraceServiceGetTraceArgs) DeepEqual(ano *TraceServiceGetTraceArgs) bool { +func (p *TraceServiceIngestTracesInnerArgs) DeepEqual(ano *TraceServiceIngestTracesInnerArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16509,7 +20865,7 @@ func (p *TraceServiceGetTraceArgs) DeepEqual(ano *TraceServiceGetTraceArgs) bool return true } -func (p *TraceServiceGetTraceArgs) Field1DeepEqual(src *GetTraceRequest) bool { +func (p *TraceServiceIngestTracesInnerArgs) Field1DeepEqual(src *IngestTracesRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -16517,41 +20873,41 @@ func (p *TraceServiceGetTraceArgs) Field1DeepEqual(src *GetTraceRequest) bool { return true } -type TraceServiceGetTraceResult struct { - Success *GetTraceResponse `thrift:"success,0,optional" frugal:"0,optional,GetTraceResponse"` +type TraceServiceIngestTracesInnerResult struct { + Success *IngestTracesResponse `thrift:"success,0,optional" frugal:"0,optional,IngestTracesResponse"` } -func NewTraceServiceGetTraceResult() *TraceServiceGetTraceResult { - return &TraceServiceGetTraceResult{} +func NewTraceServiceIngestTracesInnerResult() *TraceServiceIngestTracesInnerResult { + return &TraceServiceIngestTracesInnerResult{} } -func (p *TraceServiceGetTraceResult) InitDefault() { +func (p *TraceServiceIngestTracesInnerResult) InitDefault() { } -var TraceServiceGetTraceResult_Success_DEFAULT *GetTraceResponse +var TraceServiceIngestTracesInnerResult_Success_DEFAULT *IngestTracesResponse -func (p *TraceServiceGetTraceResult) GetSuccess() (v *GetTraceResponse) { +func (p *TraceServiceIngestTracesInnerResult) GetSuccess() (v *IngestTracesResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceGetTraceResult_Success_DEFAULT + return TraceServiceIngestTracesInnerResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceGetTraceResult) SetSuccess(x interface{}) { - p.Success = x.(*GetTraceResponse) +func (p *TraceServiceIngestTracesInnerResult) SetSuccess(x interface{}) { + p.Success = x.(*IngestTracesResponse) } -var fieldIDToName_TraceServiceGetTraceResult = map[int16]string{ +var fieldIDToName_TraceServiceIngestTracesInnerResult = map[int16]string{ 0: "success", } -func (p *TraceServiceGetTraceResult) IsSetSuccess() bool { +func (p *TraceServiceIngestTracesInnerResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceGetTraceResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16596,7 +20952,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16606,8 +20962,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceGetTraceResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewGetTraceResponse() +func (p *TraceServiceIngestTracesInnerResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewIngestTracesResponse() if err := _field.Read(iprot); err != nil { return err } @@ -16615,9 +20971,9 @@ func (p *TraceServiceGetTraceResult) ReadField0(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceGetTraceResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetTrace_result"); err != nil { + if err = oprot.WriteStructBegin("IngestTracesInner_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16643,7 +20999,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceGetTraceResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceIngestTracesInnerResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -16662,15 +21018,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceGetTraceResult) String() string { +func (p *TraceServiceIngestTracesInnerResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceGetTraceResult(%+v)", *p) + return fmt.Sprintf("TraceServiceIngestTracesInnerResult(%+v)", *p) } -func (p *TraceServiceGetTraceResult) DeepEqual(ano *TraceServiceGetTraceResult) bool { +func (p *TraceServiceIngestTracesInnerResult) DeepEqual(ano *TraceServiceIngestTracesInnerResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16682,7 +21038,7 @@ func (p *TraceServiceGetTraceResult) DeepEqual(ano *TraceServiceGetTraceResult) return true } -func (p *TraceServiceGetTraceResult) Field0DeepEqual(src *GetTraceResponse) bool { +func (p *TraceServiceIngestTracesInnerResult) Field0DeepEqual(src *IngestTracesResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -16690,41 +21046,41 @@ func (p *TraceServiceGetTraceResult) Field0DeepEqual(src *GetTraceResponse) bool return true } -type TraceServiceBatchGetTracesAdvanceInfoArgs struct { - Req *BatchGetTracesAdvanceInfoRequest `thrift:"req,1" frugal:"1,default,BatchGetTracesAdvanceInfoRequest"` +type TraceServiceGetTracesMetaInfoArgs struct { + Req *GetTracesMetaInfoRequest `thrift:"req,1" frugal:"1,default,GetTracesMetaInfoRequest"` } -func NewTraceServiceBatchGetTracesAdvanceInfoArgs() *TraceServiceBatchGetTracesAdvanceInfoArgs { - return &TraceServiceBatchGetTracesAdvanceInfoArgs{} +func NewTraceServiceGetTracesMetaInfoArgs() *TraceServiceGetTracesMetaInfoArgs { + return &TraceServiceGetTracesMetaInfoArgs{} } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) InitDefault() { +func (p *TraceServiceGetTracesMetaInfoArgs) InitDefault() { } -var TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT *BatchGetTracesAdvanceInfoRequest +var TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT *GetTracesMetaInfoRequest -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) GetReq() (v *BatchGetTracesAdvanceInfoRequest) { +func (p *TraceServiceGetTracesMetaInfoArgs) GetReq() (v *GetTracesMetaInfoRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceBatchGetTracesAdvanceInfoArgs_Req_DEFAULT + return TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) SetReq(val *BatchGetTracesAdvanceInfoRequest) { +func (p *TraceServiceGetTracesMetaInfoArgs) SetReq(val *GetTracesMetaInfoRequest) { p.Req = val } -var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs = map[int16]string{ +var fieldIDToName_TraceServiceGetTracesMetaInfoArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) IsSetReq() bool { +func (p *TraceServiceGetTracesMetaInfoArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16769,7 +21125,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16779,8 +21135,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewBatchGetTracesAdvanceInfoRequest() +func (p *TraceServiceGetTracesMetaInfoArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewGetTracesMetaInfoRequest() if err := _field.Read(iprot); err != nil { return err } @@ -16788,9 +21144,9 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) ReadField1(iprot thrift.TPro return nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_args"); err != nil { + if err = oprot.WriteStructBegin("GetTracesMetaInfo_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16816,7 +21172,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -16833,15 +21189,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) String() string { +func (p *TraceServiceGetTracesMetaInfoArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceGetTracesMetaInfoArgs(%+v)", *p) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoArgs) bool { +func (p *TraceServiceGetTracesMetaInfoArgs) DeepEqual(ano *TraceServiceGetTracesMetaInfoArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16853,7 +21209,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepEqual(ano *TraceServiceB return true } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Field1DeepEqual(src *BatchGetTracesAdvanceInfoRequest) bool { +func (p *TraceServiceGetTracesMetaInfoArgs) Field1DeepEqual(src *GetTracesMetaInfoRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -16861,41 +21217,41 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) Field1DeepEqual(src *BatchGe return true } -type TraceServiceBatchGetTracesAdvanceInfoResult struct { - Success *BatchGetTracesAdvanceInfoResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetTracesAdvanceInfoResponse"` +type TraceServiceGetTracesMetaInfoResult struct { + Success *GetTracesMetaInfoResponse `thrift:"success,0,optional" frugal:"0,optional,GetTracesMetaInfoResponse"` } -func NewTraceServiceBatchGetTracesAdvanceInfoResult() *TraceServiceBatchGetTracesAdvanceInfoResult { - return &TraceServiceBatchGetTracesAdvanceInfoResult{} +func NewTraceServiceGetTracesMetaInfoResult() *TraceServiceGetTracesMetaInfoResult { + return &TraceServiceGetTracesMetaInfoResult{} } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) InitDefault() { +func (p *TraceServiceGetTracesMetaInfoResult) InitDefault() { } -var TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT *BatchGetTracesAdvanceInfoResponse +var TraceServiceGetTracesMetaInfoResult_Success_DEFAULT *GetTracesMetaInfoResponse -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) GetSuccess() (v *BatchGetTracesAdvanceInfoResponse) { +func (p *TraceServiceGetTracesMetaInfoResult) GetSuccess() (v *GetTracesMetaInfoResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceBatchGetTracesAdvanceInfoResult_Success_DEFAULT + return TraceServiceGetTracesMetaInfoResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) SetSuccess(x interface{}) { - p.Success = x.(*BatchGetTracesAdvanceInfoResponse) +func (p *TraceServiceGetTracesMetaInfoResult) SetSuccess(x interface{}) { + p.Success = x.(*GetTracesMetaInfoResponse) } -var fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult = map[int16]string{ +var fieldIDToName_TraceServiceGetTracesMetaInfoResult = map[int16]string{ 0: "success", } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) IsSetSuccess() bool { +func (p *TraceServiceGetTracesMetaInfoResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16940,7 +21296,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16950,8 +21306,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewBatchGetTracesAdvanceInfoResponse() +func (p *TraceServiceGetTracesMetaInfoResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewGetTracesMetaInfoResponse() if err := _field.Read(iprot); err != nil { return err } @@ -16959,9 +21315,9 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) ReadField0(iprot thrift.TP return nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetTracesAdvanceInfo_result"); err != nil { + if err = oprot.WriteStructBegin("GetTracesMetaInfo_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16987,7 +21343,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceGetTracesMetaInfoResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -17006,15 +21362,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) String() string { +func (p *TraceServiceGetTracesMetaInfoResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceBatchGetTracesAdvanceInfoResult(%+v)", *p) + return fmt.Sprintf("TraceServiceGetTracesMetaInfoResult(%+v)", *p) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepEqual(ano *TraceServiceBatchGetTracesAdvanceInfoResult) bool { +func (p *TraceServiceGetTracesMetaInfoResult) DeepEqual(ano *TraceServiceGetTracesMetaInfoResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -17026,7 +21382,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepEqual(ano *TraceServic return true } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Field0DeepEqual(src *BatchGetTracesAdvanceInfoResponse) bool { +func (p *TraceServiceGetTracesMetaInfoResult) Field0DeepEqual(src *GetTracesMetaInfoResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -17034,41 +21390,41 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) Field0DeepEqual(src *Batch return true } -type TraceServiceIngestTracesInnerArgs struct { - Req *IngestTracesRequest `thrift:"req,1" frugal:"1,default,IngestTracesRequest"` +type TraceServiceCreateViewArgs struct { + Req *CreateViewRequest `thrift:"req,1" frugal:"1,default,CreateViewRequest"` } -func NewTraceServiceIngestTracesInnerArgs() *TraceServiceIngestTracesInnerArgs { - return &TraceServiceIngestTracesInnerArgs{} +func NewTraceServiceCreateViewArgs() *TraceServiceCreateViewArgs { + return &TraceServiceCreateViewArgs{} } -func (p *TraceServiceIngestTracesInnerArgs) InitDefault() { +func (p *TraceServiceCreateViewArgs) InitDefault() { } -var TraceServiceIngestTracesInnerArgs_Req_DEFAULT *IngestTracesRequest +var TraceServiceCreateViewArgs_Req_DEFAULT *CreateViewRequest -func (p *TraceServiceIngestTracesInnerArgs) GetReq() (v *IngestTracesRequest) { +func (p *TraceServiceCreateViewArgs) GetReq() (v *CreateViewRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceIngestTracesInnerArgs_Req_DEFAULT + return TraceServiceCreateViewArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceIngestTracesInnerArgs) SetReq(val *IngestTracesRequest) { +func (p *TraceServiceCreateViewArgs) SetReq(val *CreateViewRequest) { p.Req = val } -var fieldIDToName_TraceServiceIngestTracesInnerArgs = map[int16]string{ +var fieldIDToName_TraceServiceCreateViewArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceIngestTracesInnerArgs) IsSetReq() bool { +func (p *TraceServiceCreateViewArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceIngestTracesInnerArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -17113,7 +21469,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -17123,8 +21479,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewIngestTracesRequest() +func (p *TraceServiceCreateViewArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCreateViewRequest() if err := _field.Read(iprot); err != nil { return err } @@ -17132,9 +21488,9 @@ func (p *TraceServiceIngestTracesInnerArgs) ReadField1(iprot thrift.TProtocol) e return nil } -func (p *TraceServiceIngestTracesInnerArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("IngestTracesInner_args"); err != nil { + if err = oprot.WriteStructBegin("CreateView_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -17160,7 +21516,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -17177,15 +21533,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerArgs) String() string { +func (p *TraceServiceCreateViewArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceIngestTracesInnerArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateViewArgs(%+v)", *p) } -func (p *TraceServiceIngestTracesInnerArgs) DeepEqual(ano *TraceServiceIngestTracesInnerArgs) bool { +func (p *TraceServiceCreateViewArgs) DeepEqual(ano *TraceServiceCreateViewArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -17197,7 +21553,7 @@ func (p *TraceServiceIngestTracesInnerArgs) DeepEqual(ano *TraceServiceIngestTra return true } -func (p *TraceServiceIngestTracesInnerArgs) Field1DeepEqual(src *IngestTracesRequest) bool { +func (p *TraceServiceCreateViewArgs) Field1DeepEqual(src *CreateViewRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -17205,41 +21561,41 @@ func (p *TraceServiceIngestTracesInnerArgs) Field1DeepEqual(src *IngestTracesReq return true } -type TraceServiceIngestTracesInnerResult struct { - Success *IngestTracesResponse `thrift:"success,0,optional" frugal:"0,optional,IngestTracesResponse"` +type TraceServiceCreateViewResult struct { + Success *CreateViewResponse `thrift:"success,0,optional" frugal:"0,optional,CreateViewResponse"` } -func NewTraceServiceIngestTracesInnerResult() *TraceServiceIngestTracesInnerResult { - return &TraceServiceIngestTracesInnerResult{} +func NewTraceServiceCreateViewResult() *TraceServiceCreateViewResult { + return &TraceServiceCreateViewResult{} } -func (p *TraceServiceIngestTracesInnerResult) InitDefault() { +func (p *TraceServiceCreateViewResult) InitDefault() { } -var TraceServiceIngestTracesInnerResult_Success_DEFAULT *IngestTracesResponse +var TraceServiceCreateViewResult_Success_DEFAULT *CreateViewResponse -func (p *TraceServiceIngestTracesInnerResult) GetSuccess() (v *IngestTracesResponse) { +func (p *TraceServiceCreateViewResult) GetSuccess() (v *CreateViewResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceIngestTracesInnerResult_Success_DEFAULT + return TraceServiceCreateViewResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceIngestTracesInnerResult) SetSuccess(x interface{}) { - p.Success = x.(*IngestTracesResponse) +func (p *TraceServiceCreateViewResult) SetSuccess(x interface{}) { + p.Success = x.(*CreateViewResponse) } -var fieldIDToName_TraceServiceIngestTracesInnerResult = map[int16]string{ +var fieldIDToName_TraceServiceCreateViewResult = map[int16]string{ 0: "success", } -func (p *TraceServiceIngestTracesInnerResult) IsSetSuccess() bool { +func (p *TraceServiceCreateViewResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceIngestTracesInnerResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -17284,7 +21640,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -17294,8 +21650,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewIngestTracesResponse() +func (p *TraceServiceCreateViewResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCreateViewResponse() if err := _field.Read(iprot); err != nil { return err } @@ -17303,9 +21659,9 @@ func (p *TraceServiceIngestTracesInnerResult) ReadField0(iprot thrift.TProtocol) return nil } -func (p *TraceServiceIngestTracesInnerResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("IngestTracesInner_result"); err != nil { + if err = oprot.WriteStructBegin("CreateView_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -17331,7 +21687,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateViewResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -17350,15 +21706,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceIngestTracesInnerResult) String() string { +func (p *TraceServiceCreateViewResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceIngestTracesInnerResult(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateViewResult(%+v)", *p) } -func (p *TraceServiceIngestTracesInnerResult) DeepEqual(ano *TraceServiceIngestTracesInnerResult) bool { +func (p *TraceServiceCreateViewResult) DeepEqual(ano *TraceServiceCreateViewResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -17370,7 +21726,7 @@ func (p *TraceServiceIngestTracesInnerResult) DeepEqual(ano *TraceServiceIngestT return true } -func (p *TraceServiceIngestTracesInnerResult) Field0DeepEqual(src *IngestTracesResponse) bool { +func (p *TraceServiceCreateViewResult) Field0DeepEqual(src *CreateViewResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -17378,41 +21734,41 @@ func (p *TraceServiceIngestTracesInnerResult) Field0DeepEqual(src *IngestTracesR return true } -type TraceServiceGetTracesMetaInfoArgs struct { - Req *GetTracesMetaInfoRequest `thrift:"req,1" frugal:"1,default,GetTracesMetaInfoRequest"` +type TraceServiceUpdateViewArgs struct { + Req *UpdateViewRequest `thrift:"req,1" frugal:"1,default,UpdateViewRequest"` } -func NewTraceServiceGetTracesMetaInfoArgs() *TraceServiceGetTracesMetaInfoArgs { - return &TraceServiceGetTracesMetaInfoArgs{} +func NewTraceServiceUpdateViewArgs() *TraceServiceUpdateViewArgs { + return &TraceServiceUpdateViewArgs{} } -func (p *TraceServiceGetTracesMetaInfoArgs) InitDefault() { +func (p *TraceServiceUpdateViewArgs) InitDefault() { } -var TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT *GetTracesMetaInfoRequest +var TraceServiceUpdateViewArgs_Req_DEFAULT *UpdateViewRequest -func (p *TraceServiceGetTracesMetaInfoArgs) GetReq() (v *GetTracesMetaInfoRequest) { +func (p *TraceServiceUpdateViewArgs) GetReq() (v *UpdateViewRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceGetTracesMetaInfoArgs_Req_DEFAULT + return TraceServiceUpdateViewArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceGetTracesMetaInfoArgs) SetReq(val *GetTracesMetaInfoRequest) { +func (p *TraceServiceUpdateViewArgs) SetReq(val *UpdateViewRequest) { p.Req = val } -var fieldIDToName_TraceServiceGetTracesMetaInfoArgs = map[int16]string{ +var fieldIDToName_TraceServiceUpdateViewArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceGetTracesMetaInfoArgs) IsSetReq() bool { +func (p *TraceServiceUpdateViewArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceGetTracesMetaInfoArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -17457,7 +21813,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -17467,8 +21823,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewGetTracesMetaInfoRequest() +func (p *TraceServiceUpdateViewArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewUpdateViewRequest() if err := _field.Read(iprot); err != nil { return err } @@ -17476,9 +21832,9 @@ func (p *TraceServiceGetTracesMetaInfoArgs) ReadField1(iprot thrift.TProtocol) e return nil } -func (p *TraceServiceGetTracesMetaInfoArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetTracesMetaInfo_args"); err != nil { + if err = oprot.WriteStructBegin("UpdateView_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -17504,7 +21860,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -17521,15 +21877,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoArgs) String() string { +func (p *TraceServiceUpdateViewArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceGetTracesMetaInfoArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateViewArgs(%+v)", *p) } -func (p *TraceServiceGetTracesMetaInfoArgs) DeepEqual(ano *TraceServiceGetTracesMetaInfoArgs) bool { +func (p *TraceServiceUpdateViewArgs) DeepEqual(ano *TraceServiceUpdateViewArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -17541,7 +21897,7 @@ func (p *TraceServiceGetTracesMetaInfoArgs) DeepEqual(ano *TraceServiceGetTraces return true } -func (p *TraceServiceGetTracesMetaInfoArgs) Field1DeepEqual(src *GetTracesMetaInfoRequest) bool { +func (p *TraceServiceUpdateViewArgs) Field1DeepEqual(src *UpdateViewRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -17549,41 +21905,41 @@ func (p *TraceServiceGetTracesMetaInfoArgs) Field1DeepEqual(src *GetTracesMetaIn return true } -type TraceServiceGetTracesMetaInfoResult struct { - Success *GetTracesMetaInfoResponse `thrift:"success,0,optional" frugal:"0,optional,GetTracesMetaInfoResponse"` +type TraceServiceUpdateViewResult struct { + Success *UpdateViewResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateViewResponse"` } -func NewTraceServiceGetTracesMetaInfoResult() *TraceServiceGetTracesMetaInfoResult { - return &TraceServiceGetTracesMetaInfoResult{} +func NewTraceServiceUpdateViewResult() *TraceServiceUpdateViewResult { + return &TraceServiceUpdateViewResult{} } -func (p *TraceServiceGetTracesMetaInfoResult) InitDefault() { +func (p *TraceServiceUpdateViewResult) InitDefault() { } -var TraceServiceGetTracesMetaInfoResult_Success_DEFAULT *GetTracesMetaInfoResponse +var TraceServiceUpdateViewResult_Success_DEFAULT *UpdateViewResponse -func (p *TraceServiceGetTracesMetaInfoResult) GetSuccess() (v *GetTracesMetaInfoResponse) { +func (p *TraceServiceUpdateViewResult) GetSuccess() (v *UpdateViewResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceGetTracesMetaInfoResult_Success_DEFAULT + return TraceServiceUpdateViewResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceGetTracesMetaInfoResult) SetSuccess(x interface{}) { - p.Success = x.(*GetTracesMetaInfoResponse) +func (p *TraceServiceUpdateViewResult) SetSuccess(x interface{}) { + p.Success = x.(*UpdateViewResponse) } -var fieldIDToName_TraceServiceGetTracesMetaInfoResult = map[int16]string{ +var fieldIDToName_TraceServiceUpdateViewResult = map[int16]string{ 0: "success", } -func (p *TraceServiceGetTracesMetaInfoResult) IsSetSuccess() bool { +func (p *TraceServiceUpdateViewResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceGetTracesMetaInfoResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -17628,7 +21984,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -17638,8 +21994,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewGetTracesMetaInfoResponse() +func (p *TraceServiceUpdateViewResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewUpdateViewResponse() if err := _field.Read(iprot); err != nil { return err } @@ -17647,9 +22003,9 @@ func (p *TraceServiceGetTracesMetaInfoResult) ReadField0(iprot thrift.TProtocol) return nil } -func (p *TraceServiceGetTracesMetaInfoResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetTracesMetaInfo_result"); err != nil { + if err = oprot.WriteStructBegin("UpdateView_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -17675,7 +22031,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateViewResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -17694,15 +22050,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceGetTracesMetaInfoResult) String() string { +func (p *TraceServiceUpdateViewResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceGetTracesMetaInfoResult(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateViewResult(%+v)", *p) } -func (p *TraceServiceGetTracesMetaInfoResult) DeepEqual(ano *TraceServiceGetTracesMetaInfoResult) bool { +func (p *TraceServiceUpdateViewResult) DeepEqual(ano *TraceServiceUpdateViewResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -17714,7 +22070,7 @@ func (p *TraceServiceGetTracesMetaInfoResult) DeepEqual(ano *TraceServiceGetTrac return true } -func (p *TraceServiceGetTracesMetaInfoResult) Field0DeepEqual(src *GetTracesMetaInfoResponse) bool { +func (p *TraceServiceUpdateViewResult) Field0DeepEqual(src *UpdateViewResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -17722,41 +22078,41 @@ func (p *TraceServiceGetTracesMetaInfoResult) Field0DeepEqual(src *GetTracesMeta return true } -type TraceServiceCreateViewArgs struct { - Req *CreateViewRequest `thrift:"req,1" frugal:"1,default,CreateViewRequest"` +type TraceServiceDeleteViewArgs struct { + Req *DeleteViewRequest `thrift:"req,1" frugal:"1,default,DeleteViewRequest"` } -func NewTraceServiceCreateViewArgs() *TraceServiceCreateViewArgs { - return &TraceServiceCreateViewArgs{} +func NewTraceServiceDeleteViewArgs() *TraceServiceDeleteViewArgs { + return &TraceServiceDeleteViewArgs{} } -func (p *TraceServiceCreateViewArgs) InitDefault() { +func (p *TraceServiceDeleteViewArgs) InitDefault() { } -var TraceServiceCreateViewArgs_Req_DEFAULT *CreateViewRequest +var TraceServiceDeleteViewArgs_Req_DEFAULT *DeleteViewRequest -func (p *TraceServiceCreateViewArgs) GetReq() (v *CreateViewRequest) { +func (p *TraceServiceDeleteViewArgs) GetReq() (v *DeleteViewRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceCreateViewArgs_Req_DEFAULT + return TraceServiceDeleteViewArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceCreateViewArgs) SetReq(val *CreateViewRequest) { +func (p *TraceServiceDeleteViewArgs) SetReq(val *DeleteViewRequest) { p.Req = val } -var fieldIDToName_TraceServiceCreateViewArgs = map[int16]string{ +var fieldIDToName_TraceServiceDeleteViewArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceCreateViewArgs) IsSetReq() bool { +func (p *TraceServiceDeleteViewArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceCreateViewArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -17801,7 +22157,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -17811,8 +22167,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateViewArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewCreateViewRequest() +func (p *TraceServiceDeleteViewArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewDeleteViewRequest() if err := _field.Read(iprot); err != nil { return err } @@ -17820,9 +22176,9 @@ func (p *TraceServiceCreateViewArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceCreateViewArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateView_args"); err != nil { + if err = oprot.WriteStructBegin("DeleteView_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -17848,7 +22204,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -17865,15 +22221,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceCreateViewArgs) String() string { +func (p *TraceServiceDeleteViewArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateViewArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceDeleteViewArgs(%+v)", *p) } -func (p *TraceServiceCreateViewArgs) DeepEqual(ano *TraceServiceCreateViewArgs) bool { +func (p *TraceServiceDeleteViewArgs) DeepEqual(ano *TraceServiceDeleteViewArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -17885,7 +22241,7 @@ func (p *TraceServiceCreateViewArgs) DeepEqual(ano *TraceServiceCreateViewArgs) return true } -func (p *TraceServiceCreateViewArgs) Field1DeepEqual(src *CreateViewRequest) bool { +func (p *TraceServiceDeleteViewArgs) Field1DeepEqual(src *DeleteViewRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -17893,41 +22249,41 @@ func (p *TraceServiceCreateViewArgs) Field1DeepEqual(src *CreateViewRequest) boo return true } -type TraceServiceCreateViewResult struct { - Success *CreateViewResponse `thrift:"success,0,optional" frugal:"0,optional,CreateViewResponse"` +type TraceServiceDeleteViewResult struct { + Success *DeleteViewResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteViewResponse"` } -func NewTraceServiceCreateViewResult() *TraceServiceCreateViewResult { - return &TraceServiceCreateViewResult{} +func NewTraceServiceDeleteViewResult() *TraceServiceDeleteViewResult { + return &TraceServiceDeleteViewResult{} } -func (p *TraceServiceCreateViewResult) InitDefault() { +func (p *TraceServiceDeleteViewResult) InitDefault() { } -var TraceServiceCreateViewResult_Success_DEFAULT *CreateViewResponse +var TraceServiceDeleteViewResult_Success_DEFAULT *DeleteViewResponse -func (p *TraceServiceCreateViewResult) GetSuccess() (v *CreateViewResponse) { +func (p *TraceServiceDeleteViewResult) GetSuccess() (v *DeleteViewResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceCreateViewResult_Success_DEFAULT + return TraceServiceDeleteViewResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceCreateViewResult) SetSuccess(x interface{}) { - p.Success = x.(*CreateViewResponse) +func (p *TraceServiceDeleteViewResult) SetSuccess(x interface{}) { + p.Success = x.(*DeleteViewResponse) } -var fieldIDToName_TraceServiceCreateViewResult = map[int16]string{ +var fieldIDToName_TraceServiceDeleteViewResult = map[int16]string{ 0: "success", } -func (p *TraceServiceCreateViewResult) IsSetSuccess() bool { +func (p *TraceServiceDeleteViewResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceCreateViewResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -17972,7 +22328,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -17982,8 +22338,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateViewResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewCreateViewResponse() +func (p *TraceServiceDeleteViewResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewDeleteViewResponse() if err := _field.Read(iprot); err != nil { return err } @@ -17991,9 +22347,9 @@ func (p *TraceServiceCreateViewResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceCreateViewResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateView_result"); err != nil { + if err = oprot.WriteStructBegin("DeleteView_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -18019,7 +22375,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateViewResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteViewResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -18038,15 +22394,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceCreateViewResult) String() string { +func (p *TraceServiceDeleteViewResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateViewResult(%+v)", *p) + return fmt.Sprintf("TraceServiceDeleteViewResult(%+v)", *p) } -func (p *TraceServiceCreateViewResult) DeepEqual(ano *TraceServiceCreateViewResult) bool { +func (p *TraceServiceDeleteViewResult) DeepEqual(ano *TraceServiceDeleteViewResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -18058,7 +22414,7 @@ func (p *TraceServiceCreateViewResult) DeepEqual(ano *TraceServiceCreateViewResu return true } -func (p *TraceServiceCreateViewResult) Field0DeepEqual(src *CreateViewResponse) bool { +func (p *TraceServiceDeleteViewResult) Field0DeepEqual(src *DeleteViewResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -18066,41 +22422,41 @@ func (p *TraceServiceCreateViewResult) Field0DeepEqual(src *CreateViewResponse) return true } -type TraceServiceUpdateViewArgs struct { - Req *UpdateViewRequest `thrift:"req,1" frugal:"1,default,UpdateViewRequest"` +type TraceServiceListViewsArgs struct { + Req *ListViewsRequest `thrift:"req,1" frugal:"1,default,ListViewsRequest"` } -func NewTraceServiceUpdateViewArgs() *TraceServiceUpdateViewArgs { - return &TraceServiceUpdateViewArgs{} +func NewTraceServiceListViewsArgs() *TraceServiceListViewsArgs { + return &TraceServiceListViewsArgs{} } -func (p *TraceServiceUpdateViewArgs) InitDefault() { +func (p *TraceServiceListViewsArgs) InitDefault() { } -var TraceServiceUpdateViewArgs_Req_DEFAULT *UpdateViewRequest +var TraceServiceListViewsArgs_Req_DEFAULT *ListViewsRequest -func (p *TraceServiceUpdateViewArgs) GetReq() (v *UpdateViewRequest) { +func (p *TraceServiceListViewsArgs) GetReq() (v *ListViewsRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceUpdateViewArgs_Req_DEFAULT + return TraceServiceListViewsArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceUpdateViewArgs) SetReq(val *UpdateViewRequest) { +func (p *TraceServiceListViewsArgs) SetReq(val *ListViewsRequest) { p.Req = val } -var fieldIDToName_TraceServiceUpdateViewArgs = map[int16]string{ +var fieldIDToName_TraceServiceListViewsArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceUpdateViewArgs) IsSetReq() bool { +func (p *TraceServiceListViewsArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceUpdateViewArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -18145,7 +22501,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -18155,8 +22511,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateViewArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewUpdateViewRequest() +func (p *TraceServiceListViewsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListViewsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -18164,9 +22520,9 @@ func (p *TraceServiceUpdateViewArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceUpdateViewArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateView_args"); err != nil { + if err = oprot.WriteStructBegin("ListViews_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -18192,7 +22548,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateViewArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -18209,15 +22565,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceUpdateViewArgs) String() string { +func (p *TraceServiceListViewsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateViewArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceListViewsArgs(%+v)", *p) } -func (p *TraceServiceUpdateViewArgs) DeepEqual(ano *TraceServiceUpdateViewArgs) bool { +func (p *TraceServiceListViewsArgs) DeepEqual(ano *TraceServiceListViewsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -18229,7 +22585,7 @@ func (p *TraceServiceUpdateViewArgs) DeepEqual(ano *TraceServiceUpdateViewArgs) return true } -func (p *TraceServiceUpdateViewArgs) Field1DeepEqual(src *UpdateViewRequest) bool { +func (p *TraceServiceListViewsArgs) Field1DeepEqual(src *ListViewsRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -18237,41 +22593,41 @@ func (p *TraceServiceUpdateViewArgs) Field1DeepEqual(src *UpdateViewRequest) boo return true } -type TraceServiceUpdateViewResult struct { - Success *UpdateViewResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateViewResponse"` +type TraceServiceListViewsResult struct { + Success *ListViewsResponse `thrift:"success,0,optional" frugal:"0,optional,ListViewsResponse"` } -func NewTraceServiceUpdateViewResult() *TraceServiceUpdateViewResult { - return &TraceServiceUpdateViewResult{} +func NewTraceServiceListViewsResult() *TraceServiceListViewsResult { + return &TraceServiceListViewsResult{} } -func (p *TraceServiceUpdateViewResult) InitDefault() { +func (p *TraceServiceListViewsResult) InitDefault() { } -var TraceServiceUpdateViewResult_Success_DEFAULT *UpdateViewResponse +var TraceServiceListViewsResult_Success_DEFAULT *ListViewsResponse -func (p *TraceServiceUpdateViewResult) GetSuccess() (v *UpdateViewResponse) { +func (p *TraceServiceListViewsResult) GetSuccess() (v *ListViewsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceUpdateViewResult_Success_DEFAULT + return TraceServiceListViewsResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceUpdateViewResult) SetSuccess(x interface{}) { - p.Success = x.(*UpdateViewResponse) +func (p *TraceServiceListViewsResult) SetSuccess(x interface{}) { + p.Success = x.(*ListViewsResponse) } -var fieldIDToName_TraceServiceUpdateViewResult = map[int16]string{ +var fieldIDToName_TraceServiceListViewsResult = map[int16]string{ 0: "success", } -func (p *TraceServiceUpdateViewResult) IsSetSuccess() bool { +func (p *TraceServiceListViewsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceUpdateViewResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -18316,7 +22672,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -18326,8 +22682,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateViewResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewUpdateViewResponse() +func (p *TraceServiceListViewsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListViewsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -18335,9 +22691,9 @@ func (p *TraceServiceUpdateViewResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceUpdateViewResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateView_result"); err != nil { + if err = oprot.WriteStructBegin("ListViews_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -18363,7 +22719,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateViewResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListViewsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -18382,15 +22738,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceUpdateViewResult) String() string { +func (p *TraceServiceListViewsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateViewResult(%+v)", *p) + return fmt.Sprintf("TraceServiceListViewsResult(%+v)", *p) } -func (p *TraceServiceUpdateViewResult) DeepEqual(ano *TraceServiceUpdateViewResult) bool { +func (p *TraceServiceListViewsResult) DeepEqual(ano *TraceServiceListViewsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -18402,7 +22758,7 @@ func (p *TraceServiceUpdateViewResult) DeepEqual(ano *TraceServiceUpdateViewResu return true } -func (p *TraceServiceUpdateViewResult) Field0DeepEqual(src *UpdateViewResponse) bool { +func (p *TraceServiceListViewsResult) Field0DeepEqual(src *ListViewsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -18410,41 +22766,41 @@ func (p *TraceServiceUpdateViewResult) Field0DeepEqual(src *UpdateViewResponse) return true } -type TraceServiceDeleteViewArgs struct { - Req *DeleteViewRequest `thrift:"req,1" frugal:"1,default,DeleteViewRequest"` +type TraceServiceCreateManualAnnotationArgs struct { + Req *CreateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,CreateManualAnnotationRequest"` } -func NewTraceServiceDeleteViewArgs() *TraceServiceDeleteViewArgs { - return &TraceServiceDeleteViewArgs{} +func NewTraceServiceCreateManualAnnotationArgs() *TraceServiceCreateManualAnnotationArgs { + return &TraceServiceCreateManualAnnotationArgs{} } -func (p *TraceServiceDeleteViewArgs) InitDefault() { +func (p *TraceServiceCreateManualAnnotationArgs) InitDefault() { } -var TraceServiceDeleteViewArgs_Req_DEFAULT *DeleteViewRequest +var TraceServiceCreateManualAnnotationArgs_Req_DEFAULT *CreateManualAnnotationRequest -func (p *TraceServiceDeleteViewArgs) GetReq() (v *DeleteViewRequest) { +func (p *TraceServiceCreateManualAnnotationArgs) GetReq() (v *CreateManualAnnotationRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceDeleteViewArgs_Req_DEFAULT + return TraceServiceCreateManualAnnotationArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceDeleteViewArgs) SetReq(val *DeleteViewRequest) { +func (p *TraceServiceCreateManualAnnotationArgs) SetReq(val *CreateManualAnnotationRequest) { p.Req = val } -var fieldIDToName_TraceServiceDeleteViewArgs = map[int16]string{ +var fieldIDToName_TraceServiceCreateManualAnnotationArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceDeleteViewArgs) IsSetReq() bool { +func (p *TraceServiceCreateManualAnnotationArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceDeleteViewArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -18489,7 +22845,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -18499,8 +22855,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteViewArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewDeleteViewRequest() +func (p *TraceServiceCreateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCreateManualAnnotationRequest() if err := _field.Read(iprot); err != nil { return err } @@ -18508,9 +22864,9 @@ func (p *TraceServiceDeleteViewArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceDeleteViewArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteView_args"); err != nil { + if err = oprot.WriteStructBegin("CreateManualAnnotation_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -18536,7 +22892,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteViewArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -18553,15 +22909,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceDeleteViewArgs) String() string { +func (p *TraceServiceCreateManualAnnotationArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteViewArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateManualAnnotationArgs(%+v)", *p) } -func (p *TraceServiceDeleteViewArgs) DeepEqual(ano *TraceServiceDeleteViewArgs) bool { +func (p *TraceServiceCreateManualAnnotationArgs) DeepEqual(ano *TraceServiceCreateManualAnnotationArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -18573,7 +22929,7 @@ func (p *TraceServiceDeleteViewArgs) DeepEqual(ano *TraceServiceDeleteViewArgs) return true } -func (p *TraceServiceDeleteViewArgs) Field1DeepEqual(src *DeleteViewRequest) bool { +func (p *TraceServiceCreateManualAnnotationArgs) Field1DeepEqual(src *CreateManualAnnotationRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -18581,41 +22937,41 @@ func (p *TraceServiceDeleteViewArgs) Field1DeepEqual(src *DeleteViewRequest) boo return true } -type TraceServiceDeleteViewResult struct { - Success *DeleteViewResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteViewResponse"` +type TraceServiceCreateManualAnnotationResult struct { + Success *CreateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,CreateManualAnnotationResponse"` } -func NewTraceServiceDeleteViewResult() *TraceServiceDeleteViewResult { - return &TraceServiceDeleteViewResult{} +func NewTraceServiceCreateManualAnnotationResult() *TraceServiceCreateManualAnnotationResult { + return &TraceServiceCreateManualAnnotationResult{} } -func (p *TraceServiceDeleteViewResult) InitDefault() { +func (p *TraceServiceCreateManualAnnotationResult) InitDefault() { } -var TraceServiceDeleteViewResult_Success_DEFAULT *DeleteViewResponse +var TraceServiceCreateManualAnnotationResult_Success_DEFAULT *CreateManualAnnotationResponse -func (p *TraceServiceDeleteViewResult) GetSuccess() (v *DeleteViewResponse) { +func (p *TraceServiceCreateManualAnnotationResult) GetSuccess() (v *CreateManualAnnotationResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceDeleteViewResult_Success_DEFAULT + return TraceServiceCreateManualAnnotationResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceDeleteViewResult) SetSuccess(x interface{}) { - p.Success = x.(*DeleteViewResponse) +func (p *TraceServiceCreateManualAnnotationResult) SetSuccess(x interface{}) { + p.Success = x.(*CreateManualAnnotationResponse) } -var fieldIDToName_TraceServiceDeleteViewResult = map[int16]string{ +var fieldIDToName_TraceServiceCreateManualAnnotationResult = map[int16]string{ 0: "success", } -func (p *TraceServiceDeleteViewResult) IsSetSuccess() bool { +func (p *TraceServiceCreateManualAnnotationResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceDeleteViewResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -18660,7 +23016,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -18670,8 +23026,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteViewResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewDeleteViewResponse() +func (p *TraceServiceCreateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCreateManualAnnotationResponse() if err := _field.Read(iprot); err != nil { return err } @@ -18679,9 +23035,9 @@ func (p *TraceServiceDeleteViewResult) ReadField0(iprot thrift.TProtocol) error return nil } -func (p *TraceServiceDeleteViewResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteView_result"); err != nil { + if err = oprot.WriteStructBegin("CreateManualAnnotation_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -18707,7 +23063,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteViewResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceCreateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -18726,15 +23082,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceDeleteViewResult) String() string { +func (p *TraceServiceCreateManualAnnotationResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteViewResult(%+v)", *p) + return fmt.Sprintf("TraceServiceCreateManualAnnotationResult(%+v)", *p) } -func (p *TraceServiceDeleteViewResult) DeepEqual(ano *TraceServiceDeleteViewResult) bool { +func (p *TraceServiceCreateManualAnnotationResult) DeepEqual(ano *TraceServiceCreateManualAnnotationResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -18746,7 +23102,7 @@ func (p *TraceServiceDeleteViewResult) DeepEqual(ano *TraceServiceDeleteViewResu return true } -func (p *TraceServiceDeleteViewResult) Field0DeepEqual(src *DeleteViewResponse) bool { +func (p *TraceServiceCreateManualAnnotationResult) Field0DeepEqual(src *CreateManualAnnotationResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -18754,41 +23110,41 @@ func (p *TraceServiceDeleteViewResult) Field0DeepEqual(src *DeleteViewResponse) return true } -type TraceServiceListViewsArgs struct { - Req *ListViewsRequest `thrift:"req,1" frugal:"1,default,ListViewsRequest"` +type TraceServiceUpdateManualAnnotationArgs struct { + Req *UpdateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,UpdateManualAnnotationRequest"` } -func NewTraceServiceListViewsArgs() *TraceServiceListViewsArgs { - return &TraceServiceListViewsArgs{} +func NewTraceServiceUpdateManualAnnotationArgs() *TraceServiceUpdateManualAnnotationArgs { + return &TraceServiceUpdateManualAnnotationArgs{} } -func (p *TraceServiceListViewsArgs) InitDefault() { +func (p *TraceServiceUpdateManualAnnotationArgs) InitDefault() { } -var TraceServiceListViewsArgs_Req_DEFAULT *ListViewsRequest +var TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT *UpdateManualAnnotationRequest -func (p *TraceServiceListViewsArgs) GetReq() (v *ListViewsRequest) { +func (p *TraceServiceUpdateManualAnnotationArgs) GetReq() (v *UpdateManualAnnotationRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceListViewsArgs_Req_DEFAULT + return TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceListViewsArgs) SetReq(val *ListViewsRequest) { +func (p *TraceServiceUpdateManualAnnotationArgs) SetReq(val *UpdateManualAnnotationRequest) { p.Req = val } -var fieldIDToName_TraceServiceListViewsArgs = map[int16]string{ +var fieldIDToName_TraceServiceUpdateManualAnnotationArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceListViewsArgs) IsSetReq() bool { +func (p *TraceServiceUpdateManualAnnotationArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceListViewsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -18833,7 +23189,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -18843,8 +23199,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListViewsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListViewsRequest() +func (p *TraceServiceUpdateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewUpdateManualAnnotationRequest() if err := _field.Read(iprot); err != nil { return err } @@ -18852,9 +23208,9 @@ func (p *TraceServiceListViewsArgs) ReadField1(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListViewsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListViews_args"); err != nil { + if err = oprot.WriteStructBegin("UpdateManualAnnotation_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -18880,7 +23236,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListViewsArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -18897,15 +23253,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceListViewsArgs) String() string { +func (p *TraceServiceUpdateManualAnnotationArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListViewsArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateManualAnnotationArgs(%+v)", *p) } -func (p *TraceServiceListViewsArgs) DeepEqual(ano *TraceServiceListViewsArgs) bool { +func (p *TraceServiceUpdateManualAnnotationArgs) DeepEqual(ano *TraceServiceUpdateManualAnnotationArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -18917,7 +23273,7 @@ func (p *TraceServiceListViewsArgs) DeepEqual(ano *TraceServiceListViewsArgs) bo return true } -func (p *TraceServiceListViewsArgs) Field1DeepEqual(src *ListViewsRequest) bool { +func (p *TraceServiceUpdateManualAnnotationArgs) Field1DeepEqual(src *UpdateManualAnnotationRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -18925,41 +23281,41 @@ func (p *TraceServiceListViewsArgs) Field1DeepEqual(src *ListViewsRequest) bool return true } -type TraceServiceListViewsResult struct { - Success *ListViewsResponse `thrift:"success,0,optional" frugal:"0,optional,ListViewsResponse"` +type TraceServiceUpdateManualAnnotationResult struct { + Success *UpdateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateManualAnnotationResponse"` } -func NewTraceServiceListViewsResult() *TraceServiceListViewsResult { - return &TraceServiceListViewsResult{} +func NewTraceServiceUpdateManualAnnotationResult() *TraceServiceUpdateManualAnnotationResult { + return &TraceServiceUpdateManualAnnotationResult{} } -func (p *TraceServiceListViewsResult) InitDefault() { +func (p *TraceServiceUpdateManualAnnotationResult) InitDefault() { } -var TraceServiceListViewsResult_Success_DEFAULT *ListViewsResponse +var TraceServiceUpdateManualAnnotationResult_Success_DEFAULT *UpdateManualAnnotationResponse -func (p *TraceServiceListViewsResult) GetSuccess() (v *ListViewsResponse) { +func (p *TraceServiceUpdateManualAnnotationResult) GetSuccess() (v *UpdateManualAnnotationResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceListViewsResult_Success_DEFAULT + return TraceServiceUpdateManualAnnotationResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceListViewsResult) SetSuccess(x interface{}) { - p.Success = x.(*ListViewsResponse) +func (p *TraceServiceUpdateManualAnnotationResult) SetSuccess(x interface{}) { + p.Success = x.(*UpdateManualAnnotationResponse) } -var fieldIDToName_TraceServiceListViewsResult = map[int16]string{ +var fieldIDToName_TraceServiceUpdateManualAnnotationResult = map[int16]string{ 0: "success", } -func (p *TraceServiceListViewsResult) IsSetSuccess() bool { +func (p *TraceServiceUpdateManualAnnotationResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceListViewsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -19004,7 +23360,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -19014,8 +23370,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListViewsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListViewsResponse() +func (p *TraceServiceUpdateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewUpdateManualAnnotationResponse() if err := _field.Read(iprot); err != nil { return err } @@ -19023,9 +23379,9 @@ func (p *TraceServiceListViewsResult) ReadField0(iprot thrift.TProtocol) error { return nil } -func (p *TraceServiceListViewsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListViews_result"); err != nil { + if err = oprot.WriteStructBegin("UpdateManualAnnotation_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -19051,7 +23407,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListViewsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceUpdateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -19070,15 +23426,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceListViewsResult) String() string { +func (p *TraceServiceUpdateManualAnnotationResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListViewsResult(%+v)", *p) + return fmt.Sprintf("TraceServiceUpdateManualAnnotationResult(%+v)", *p) } -func (p *TraceServiceListViewsResult) DeepEqual(ano *TraceServiceListViewsResult) bool { +func (p *TraceServiceUpdateManualAnnotationResult) DeepEqual(ano *TraceServiceUpdateManualAnnotationResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -19090,7 +23446,7 @@ func (p *TraceServiceListViewsResult) DeepEqual(ano *TraceServiceListViewsResult return true } -func (p *TraceServiceListViewsResult) Field0DeepEqual(src *ListViewsResponse) bool { +func (p *TraceServiceUpdateManualAnnotationResult) Field0DeepEqual(src *UpdateManualAnnotationResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -19098,41 +23454,41 @@ func (p *TraceServiceListViewsResult) Field0DeepEqual(src *ListViewsResponse) bo return true } -type TraceServiceCreateManualAnnotationArgs struct { - Req *CreateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,CreateManualAnnotationRequest"` +type TraceServiceDeleteManualAnnotationArgs struct { + Req *DeleteManualAnnotationRequest `thrift:"req,1" frugal:"1,default,DeleteManualAnnotationRequest"` } -func NewTraceServiceCreateManualAnnotationArgs() *TraceServiceCreateManualAnnotationArgs { - return &TraceServiceCreateManualAnnotationArgs{} +func NewTraceServiceDeleteManualAnnotationArgs() *TraceServiceDeleteManualAnnotationArgs { + return &TraceServiceDeleteManualAnnotationArgs{} } -func (p *TraceServiceCreateManualAnnotationArgs) InitDefault() { +func (p *TraceServiceDeleteManualAnnotationArgs) InitDefault() { } -var TraceServiceCreateManualAnnotationArgs_Req_DEFAULT *CreateManualAnnotationRequest +var TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT *DeleteManualAnnotationRequest -func (p *TraceServiceCreateManualAnnotationArgs) GetReq() (v *CreateManualAnnotationRequest) { +func (p *TraceServiceDeleteManualAnnotationArgs) GetReq() (v *DeleteManualAnnotationRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceCreateManualAnnotationArgs_Req_DEFAULT + return TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceCreateManualAnnotationArgs) SetReq(val *CreateManualAnnotationRequest) { +func (p *TraceServiceDeleteManualAnnotationArgs) SetReq(val *DeleteManualAnnotationRequest) { p.Req = val } -var fieldIDToName_TraceServiceCreateManualAnnotationArgs = map[int16]string{ +var fieldIDToName_TraceServiceDeleteManualAnnotationArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceCreateManualAnnotationArgs) IsSetReq() bool { +func (p *TraceServiceDeleteManualAnnotationArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceCreateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -19177,7 +23533,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -19187,8 +23543,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewCreateManualAnnotationRequest() +func (p *TraceServiceDeleteManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewDeleteManualAnnotationRequest() if err := _field.Read(iprot); err != nil { return err } @@ -19196,9 +23552,9 @@ func (p *TraceServiceCreateManualAnnotationArgs) ReadField1(iprot thrift.TProtoc return nil } -func (p *TraceServiceCreateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateManualAnnotation_args"); err != nil { + if err = oprot.WriteStructBegin("DeleteManualAnnotation_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -19224,7 +23580,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -19241,15 +23597,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationArgs) String() string { +func (p *TraceServiceDeleteManualAnnotationArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateManualAnnotationArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceDeleteManualAnnotationArgs(%+v)", *p) } -func (p *TraceServiceCreateManualAnnotationArgs) DeepEqual(ano *TraceServiceCreateManualAnnotationArgs) bool { +func (p *TraceServiceDeleteManualAnnotationArgs) DeepEqual(ano *TraceServiceDeleteManualAnnotationArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -19261,7 +23617,7 @@ func (p *TraceServiceCreateManualAnnotationArgs) DeepEqual(ano *TraceServiceCrea return true } -func (p *TraceServiceCreateManualAnnotationArgs) Field1DeepEqual(src *CreateManualAnnotationRequest) bool { +func (p *TraceServiceDeleteManualAnnotationArgs) Field1DeepEqual(src *DeleteManualAnnotationRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -19269,41 +23625,41 @@ func (p *TraceServiceCreateManualAnnotationArgs) Field1DeepEqual(src *CreateManu return true } -type TraceServiceCreateManualAnnotationResult struct { - Success *CreateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,CreateManualAnnotationResponse"` +type TraceServiceDeleteManualAnnotationResult struct { + Success *DeleteManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteManualAnnotationResponse"` } -func NewTraceServiceCreateManualAnnotationResult() *TraceServiceCreateManualAnnotationResult { - return &TraceServiceCreateManualAnnotationResult{} +func NewTraceServiceDeleteManualAnnotationResult() *TraceServiceDeleteManualAnnotationResult { + return &TraceServiceDeleteManualAnnotationResult{} } -func (p *TraceServiceCreateManualAnnotationResult) InitDefault() { +func (p *TraceServiceDeleteManualAnnotationResult) InitDefault() { } -var TraceServiceCreateManualAnnotationResult_Success_DEFAULT *CreateManualAnnotationResponse +var TraceServiceDeleteManualAnnotationResult_Success_DEFAULT *DeleteManualAnnotationResponse -func (p *TraceServiceCreateManualAnnotationResult) GetSuccess() (v *CreateManualAnnotationResponse) { +func (p *TraceServiceDeleteManualAnnotationResult) GetSuccess() (v *DeleteManualAnnotationResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceCreateManualAnnotationResult_Success_DEFAULT + return TraceServiceDeleteManualAnnotationResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceCreateManualAnnotationResult) SetSuccess(x interface{}) { - p.Success = x.(*CreateManualAnnotationResponse) +func (p *TraceServiceDeleteManualAnnotationResult) SetSuccess(x interface{}) { + p.Success = x.(*DeleteManualAnnotationResponse) } -var fieldIDToName_TraceServiceCreateManualAnnotationResult = map[int16]string{ +var fieldIDToName_TraceServiceDeleteManualAnnotationResult = map[int16]string{ 0: "success", } -func (p *TraceServiceCreateManualAnnotationResult) IsSetSuccess() bool { +func (p *TraceServiceDeleteManualAnnotationResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceCreateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -19348,7 +23704,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -19358,8 +23714,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewCreateManualAnnotationResponse() +func (p *TraceServiceDeleteManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewDeleteManualAnnotationResponse() if err := _field.Read(iprot); err != nil { return err } @@ -19367,9 +23723,9 @@ func (p *TraceServiceCreateManualAnnotationResult) ReadField0(iprot thrift.TProt return nil } -func (p *TraceServiceCreateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateManualAnnotation_result"); err != nil { + if err = oprot.WriteStructBegin("DeleteManualAnnotation_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -19395,7 +23751,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceDeleteManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -19414,15 +23770,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceCreateManualAnnotationResult) String() string { +func (p *TraceServiceDeleteManualAnnotationResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceCreateManualAnnotationResult(%+v)", *p) + return fmt.Sprintf("TraceServiceDeleteManualAnnotationResult(%+v)", *p) } -func (p *TraceServiceCreateManualAnnotationResult) DeepEqual(ano *TraceServiceCreateManualAnnotationResult) bool { +func (p *TraceServiceDeleteManualAnnotationResult) DeepEqual(ano *TraceServiceDeleteManualAnnotationResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -19434,7 +23790,7 @@ func (p *TraceServiceCreateManualAnnotationResult) DeepEqual(ano *TraceServiceCr return true } -func (p *TraceServiceCreateManualAnnotationResult) Field0DeepEqual(src *CreateManualAnnotationResponse) bool { +func (p *TraceServiceDeleteManualAnnotationResult) Field0DeepEqual(src *DeleteManualAnnotationResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -19442,41 +23798,41 @@ func (p *TraceServiceCreateManualAnnotationResult) Field0DeepEqual(src *CreateMa return true } -type TraceServiceUpdateManualAnnotationArgs struct { - Req *UpdateManualAnnotationRequest `thrift:"req,1" frugal:"1,default,UpdateManualAnnotationRequest"` +type TraceServiceListAnnotationsArgs struct { + Req *ListAnnotationsRequest `thrift:"req,1" frugal:"1,default,ListAnnotationsRequest"` } -func NewTraceServiceUpdateManualAnnotationArgs() *TraceServiceUpdateManualAnnotationArgs { - return &TraceServiceUpdateManualAnnotationArgs{} +func NewTraceServiceListAnnotationsArgs() *TraceServiceListAnnotationsArgs { + return &TraceServiceListAnnotationsArgs{} } -func (p *TraceServiceUpdateManualAnnotationArgs) InitDefault() { +func (p *TraceServiceListAnnotationsArgs) InitDefault() { } -var TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT *UpdateManualAnnotationRequest +var TraceServiceListAnnotationsArgs_Req_DEFAULT *ListAnnotationsRequest -func (p *TraceServiceUpdateManualAnnotationArgs) GetReq() (v *UpdateManualAnnotationRequest) { +func (p *TraceServiceListAnnotationsArgs) GetReq() (v *ListAnnotationsRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceUpdateManualAnnotationArgs_Req_DEFAULT + return TraceServiceListAnnotationsArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceUpdateManualAnnotationArgs) SetReq(val *UpdateManualAnnotationRequest) { +func (p *TraceServiceListAnnotationsArgs) SetReq(val *ListAnnotationsRequest) { p.Req = val } -var fieldIDToName_TraceServiceUpdateManualAnnotationArgs = map[int16]string{ +var fieldIDToName_TraceServiceListAnnotationsArgs = map[int16]string{ 1: "req", } -func (p *TraceServiceUpdateManualAnnotationArgs) IsSetReq() bool { +func (p *TraceServiceListAnnotationsArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceUpdateManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -19521,7 +23877,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -19531,8 +23887,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewUpdateManualAnnotationRequest() +func (p *TraceServiceListAnnotationsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListAnnotationsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -19540,9 +23896,9 @@ func (p *TraceServiceUpdateManualAnnotationArgs) ReadField1(iprot thrift.TProtoc return nil } -func (p *TraceServiceUpdateManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateManualAnnotation_args"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotations_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -19568,7 +23924,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -19585,15 +23941,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) String() string { +func (p *TraceServiceListAnnotationsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateManualAnnotationArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceListAnnotationsArgs(%+v)", *p) } -func (p *TraceServiceUpdateManualAnnotationArgs) DeepEqual(ano *TraceServiceUpdateManualAnnotationArgs) bool { +func (p *TraceServiceListAnnotationsArgs) DeepEqual(ano *TraceServiceListAnnotationsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -19605,7 +23961,7 @@ func (p *TraceServiceUpdateManualAnnotationArgs) DeepEqual(ano *TraceServiceUpda return true } -func (p *TraceServiceUpdateManualAnnotationArgs) Field1DeepEqual(src *UpdateManualAnnotationRequest) bool { +func (p *TraceServiceListAnnotationsArgs) Field1DeepEqual(src *ListAnnotationsRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -19613,41 +23969,41 @@ func (p *TraceServiceUpdateManualAnnotationArgs) Field1DeepEqual(src *UpdateManu return true } -type TraceServiceUpdateManualAnnotationResult struct { - Success *UpdateManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,UpdateManualAnnotationResponse"` +type TraceServiceListAnnotationsResult struct { + Success *ListAnnotationsResponse `thrift:"success,0,optional" frugal:"0,optional,ListAnnotationsResponse"` } -func NewTraceServiceUpdateManualAnnotationResult() *TraceServiceUpdateManualAnnotationResult { - return &TraceServiceUpdateManualAnnotationResult{} +func NewTraceServiceListAnnotationsResult() *TraceServiceListAnnotationsResult { + return &TraceServiceListAnnotationsResult{} } -func (p *TraceServiceUpdateManualAnnotationResult) InitDefault() { +func (p *TraceServiceListAnnotationsResult) InitDefault() { } -var TraceServiceUpdateManualAnnotationResult_Success_DEFAULT *UpdateManualAnnotationResponse +var TraceServiceListAnnotationsResult_Success_DEFAULT *ListAnnotationsResponse -func (p *TraceServiceUpdateManualAnnotationResult) GetSuccess() (v *UpdateManualAnnotationResponse) { +func (p *TraceServiceListAnnotationsResult) GetSuccess() (v *ListAnnotationsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceUpdateManualAnnotationResult_Success_DEFAULT + return TraceServiceListAnnotationsResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceUpdateManualAnnotationResult) SetSuccess(x interface{}) { - p.Success = x.(*UpdateManualAnnotationResponse) +func (p *TraceServiceListAnnotationsResult) SetSuccess(x interface{}) { + p.Success = x.(*ListAnnotationsResponse) } -var fieldIDToName_TraceServiceUpdateManualAnnotationResult = map[int16]string{ +var fieldIDToName_TraceServiceListAnnotationsResult = map[int16]string{ 0: "success", } -func (p *TraceServiceUpdateManualAnnotationResult) IsSetSuccess() bool { +func (p *TraceServiceListAnnotationsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceUpdateManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -19692,7 +24048,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -19702,8 +24058,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewUpdateManualAnnotationResponse() +func (p *TraceServiceListAnnotationsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListAnnotationsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -19711,9 +24067,9 @@ func (p *TraceServiceUpdateManualAnnotationResult) ReadField0(iprot thrift.TProt return nil } -func (p *TraceServiceUpdateManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("UpdateManualAnnotation_result"); err != nil { + if err = oprot.WriteStructBegin("ListAnnotations_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -19739,7 +24095,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceListAnnotationsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -19758,15 +24114,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceUpdateManualAnnotationResult) String() string { +func (p *TraceServiceListAnnotationsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceUpdateManualAnnotationResult(%+v)", *p) + return fmt.Sprintf("TraceServiceListAnnotationsResult(%+v)", *p) } -func (p *TraceServiceUpdateManualAnnotationResult) DeepEqual(ano *TraceServiceUpdateManualAnnotationResult) bool { +func (p *TraceServiceListAnnotationsResult) DeepEqual(ano *TraceServiceListAnnotationsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -19778,7 +24134,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) DeepEqual(ano *TraceServiceUp return true } -func (p *TraceServiceUpdateManualAnnotationResult) Field0DeepEqual(src *UpdateManualAnnotationResponse) bool { +func (p *TraceServiceListAnnotationsResult) Field0DeepEqual(src *ListAnnotationsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -19786,41 +24142,41 @@ func (p *TraceServiceUpdateManualAnnotationResult) Field0DeepEqual(src *UpdateMa return true } -type TraceServiceDeleteManualAnnotationArgs struct { - Req *DeleteManualAnnotationRequest `thrift:"req,1" frugal:"1,default,DeleteManualAnnotationRequest"` +type TraceServiceExportTracesToDatasetArgs struct { + Req *ExportTracesToDatasetRequest `thrift:"Req,1" frugal:"1,default,ExportTracesToDatasetRequest"` } -func NewTraceServiceDeleteManualAnnotationArgs() *TraceServiceDeleteManualAnnotationArgs { - return &TraceServiceDeleteManualAnnotationArgs{} +func NewTraceServiceExportTracesToDatasetArgs() *TraceServiceExportTracesToDatasetArgs { + return &TraceServiceExportTracesToDatasetArgs{} } -func (p *TraceServiceDeleteManualAnnotationArgs) InitDefault() { +func (p *TraceServiceExportTracesToDatasetArgs) InitDefault() { } -var TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT *DeleteManualAnnotationRequest +var TraceServiceExportTracesToDatasetArgs_Req_DEFAULT *ExportTracesToDatasetRequest -func (p *TraceServiceDeleteManualAnnotationArgs) GetReq() (v *DeleteManualAnnotationRequest) { +func (p *TraceServiceExportTracesToDatasetArgs) GetReq() (v *ExportTracesToDatasetRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceDeleteManualAnnotationArgs_Req_DEFAULT + return TraceServiceExportTracesToDatasetArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceDeleteManualAnnotationArgs) SetReq(val *DeleteManualAnnotationRequest) { +func (p *TraceServiceExportTracesToDatasetArgs) SetReq(val *ExportTracesToDatasetRequest) { p.Req = val } -var fieldIDToName_TraceServiceDeleteManualAnnotationArgs = map[int16]string{ - 1: "req", +var fieldIDToName_TraceServiceExportTracesToDatasetArgs = map[int16]string{ + 1: "Req", } -func (p *TraceServiceDeleteManualAnnotationArgs) IsSetReq() bool { +func (p *TraceServiceExportTracesToDatasetArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceDeleteManualAnnotationArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceExportTracesToDatasetArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -19865,7 +24221,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExportTracesToDatasetArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -19875,8 +24231,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewDeleteManualAnnotationRequest() +func (p *TraceServiceExportTracesToDatasetArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewExportTracesToDatasetRequest() if err := _field.Read(iprot); err != nil { return err } @@ -19884,9 +24240,9 @@ func (p *TraceServiceDeleteManualAnnotationArgs) ReadField1(iprot thrift.TProtoc return nil } -func (p *TraceServiceDeleteManualAnnotationArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExportTracesToDatasetArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteManualAnnotation_args"); err != nil { + if err = oprot.WriteStructBegin("ExportTracesToDataset_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -19912,8 +24268,8 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { +func (p *TraceServiceExportTracesToDatasetArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("Req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } if err := p.Req.Write(oprot); err != nil { @@ -19929,15 +24285,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) String() string { +func (p *TraceServiceExportTracesToDatasetArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteManualAnnotationArgs(%+v)", *p) + return fmt.Sprintf("TraceServiceExportTracesToDatasetArgs(%+v)", *p) } -func (p *TraceServiceDeleteManualAnnotationArgs) DeepEqual(ano *TraceServiceDeleteManualAnnotationArgs) bool { +func (p *TraceServiceExportTracesToDatasetArgs) DeepEqual(ano *TraceServiceExportTracesToDatasetArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -19949,7 +24305,7 @@ func (p *TraceServiceDeleteManualAnnotationArgs) DeepEqual(ano *TraceServiceDele return true } -func (p *TraceServiceDeleteManualAnnotationArgs) Field1DeepEqual(src *DeleteManualAnnotationRequest) bool { +func (p *TraceServiceExportTracesToDatasetArgs) Field1DeepEqual(src *ExportTracesToDatasetRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -19957,41 +24313,41 @@ func (p *TraceServiceDeleteManualAnnotationArgs) Field1DeepEqual(src *DeleteManu return true } -type TraceServiceDeleteManualAnnotationResult struct { - Success *DeleteManualAnnotationResponse `thrift:"success,0,optional" frugal:"0,optional,DeleteManualAnnotationResponse"` +type TraceServiceExportTracesToDatasetResult struct { + Success *ExportTracesToDatasetResponse `thrift:"success,0,optional" frugal:"0,optional,ExportTracesToDatasetResponse"` } -func NewTraceServiceDeleteManualAnnotationResult() *TraceServiceDeleteManualAnnotationResult { - return &TraceServiceDeleteManualAnnotationResult{} +func NewTraceServiceExportTracesToDatasetResult() *TraceServiceExportTracesToDatasetResult { + return &TraceServiceExportTracesToDatasetResult{} } -func (p *TraceServiceDeleteManualAnnotationResult) InitDefault() { +func (p *TraceServiceExportTracesToDatasetResult) InitDefault() { } -var TraceServiceDeleteManualAnnotationResult_Success_DEFAULT *DeleteManualAnnotationResponse +var TraceServiceExportTracesToDatasetResult_Success_DEFAULT *ExportTracesToDatasetResponse -func (p *TraceServiceDeleteManualAnnotationResult) GetSuccess() (v *DeleteManualAnnotationResponse) { +func (p *TraceServiceExportTracesToDatasetResult) GetSuccess() (v *ExportTracesToDatasetResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceDeleteManualAnnotationResult_Success_DEFAULT + return TraceServiceExportTracesToDatasetResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceDeleteManualAnnotationResult) SetSuccess(x interface{}) { - p.Success = x.(*DeleteManualAnnotationResponse) +func (p *TraceServiceExportTracesToDatasetResult) SetSuccess(x interface{}) { + p.Success = x.(*ExportTracesToDatasetResponse) } -var fieldIDToName_TraceServiceDeleteManualAnnotationResult = map[int16]string{ +var fieldIDToName_TraceServiceExportTracesToDatasetResult = map[int16]string{ 0: "success", } -func (p *TraceServiceDeleteManualAnnotationResult) IsSetSuccess() bool { +func (p *TraceServiceExportTracesToDatasetResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceDeleteManualAnnotationResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServiceExportTracesToDatasetResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -20036,7 +24392,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExportTracesToDatasetResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -20046,8 +24402,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewDeleteManualAnnotationResponse() +func (p *TraceServiceExportTracesToDatasetResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewExportTracesToDatasetResponse() if err := _field.Read(iprot); err != nil { return err } @@ -20055,9 +24411,9 @@ func (p *TraceServiceDeleteManualAnnotationResult) ReadField0(iprot thrift.TProt return nil } -func (p *TraceServiceDeleteManualAnnotationResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExportTracesToDatasetResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DeleteManualAnnotation_result"); err != nil { + if err = oprot.WriteStructBegin("ExportTracesToDataset_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -20083,7 +24439,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServiceExportTracesToDatasetResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -20102,15 +24458,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceDeleteManualAnnotationResult) String() string { +func (p *TraceServiceExportTracesToDatasetResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceDeleteManualAnnotationResult(%+v)", *p) + return fmt.Sprintf("TraceServiceExportTracesToDatasetResult(%+v)", *p) } -func (p *TraceServiceDeleteManualAnnotationResult) DeepEqual(ano *TraceServiceDeleteManualAnnotationResult) bool { +func (p *TraceServiceExportTracesToDatasetResult) DeepEqual(ano *TraceServiceExportTracesToDatasetResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -20122,7 +24478,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) DeepEqual(ano *TraceServiceDe return true } -func (p *TraceServiceDeleteManualAnnotationResult) Field0DeepEqual(src *DeleteManualAnnotationResponse) bool { +func (p *TraceServiceExportTracesToDatasetResult) Field0DeepEqual(src *ExportTracesToDatasetResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -20130,41 +24486,41 @@ func (p *TraceServiceDeleteManualAnnotationResult) Field0DeepEqual(src *DeleteMa return true } -type TraceServiceListAnnotationsArgs struct { - Req *ListAnnotationsRequest `thrift:"req,1" frugal:"1,default,ListAnnotationsRequest"` +type TraceServicePreviewExportTracesToDatasetArgs struct { + Req *PreviewExportTracesToDatasetRequest `thrift:"Req,1" frugal:"1,default,PreviewExportTracesToDatasetRequest"` } -func NewTraceServiceListAnnotationsArgs() *TraceServiceListAnnotationsArgs { - return &TraceServiceListAnnotationsArgs{} +func NewTraceServicePreviewExportTracesToDatasetArgs() *TraceServicePreviewExportTracesToDatasetArgs { + return &TraceServicePreviewExportTracesToDatasetArgs{} } -func (p *TraceServiceListAnnotationsArgs) InitDefault() { +func (p *TraceServicePreviewExportTracesToDatasetArgs) InitDefault() { } -var TraceServiceListAnnotationsArgs_Req_DEFAULT *ListAnnotationsRequest +var TraceServicePreviewExportTracesToDatasetArgs_Req_DEFAULT *PreviewExportTracesToDatasetRequest -func (p *TraceServiceListAnnotationsArgs) GetReq() (v *ListAnnotationsRequest) { +func (p *TraceServicePreviewExportTracesToDatasetArgs) GetReq() (v *PreviewExportTracesToDatasetRequest) { if p == nil { return } if !p.IsSetReq() { - return TraceServiceListAnnotationsArgs_Req_DEFAULT + return TraceServicePreviewExportTracesToDatasetArgs_Req_DEFAULT } return p.Req } -func (p *TraceServiceListAnnotationsArgs) SetReq(val *ListAnnotationsRequest) { +func (p *TraceServicePreviewExportTracesToDatasetArgs) SetReq(val *PreviewExportTracesToDatasetRequest) { p.Req = val } -var fieldIDToName_TraceServiceListAnnotationsArgs = map[int16]string{ - 1: "req", +var fieldIDToName_TraceServicePreviewExportTracesToDatasetArgs = map[int16]string{ + 1: "Req", } -func (p *TraceServiceListAnnotationsArgs) IsSetReq() bool { +func (p *TraceServicePreviewExportTracesToDatasetArgs) IsSetReq() bool { return p.Req != nil } -func (p *TraceServiceListAnnotationsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServicePreviewExportTracesToDatasetArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -20209,7 +24565,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServicePreviewExportTracesToDatasetArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -20219,8 +24575,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListAnnotationsRequest() +func (p *TraceServicePreviewExportTracesToDatasetArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewPreviewExportTracesToDatasetRequest() if err := _field.Read(iprot); err != nil { return err } @@ -20228,9 +24584,9 @@ func (p *TraceServiceListAnnotationsArgs) ReadField1(iprot thrift.TProtocol) err return nil } -func (p *TraceServiceListAnnotationsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServicePreviewExportTracesToDatasetArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListAnnotations_args"); err != nil { + if err = oprot.WriteStructBegin("PreviewExportTracesToDataset_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -20256,8 +24612,8 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsArgs) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { +func (p *TraceServicePreviewExportTracesToDatasetArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("Req", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } if err := p.Req.Write(oprot); err != nil { @@ -20273,15 +24629,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TraceServiceListAnnotationsArgs) String() string { +func (p *TraceServicePreviewExportTracesToDatasetArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListAnnotationsArgs(%+v)", *p) + return fmt.Sprintf("TraceServicePreviewExportTracesToDatasetArgs(%+v)", *p) } -func (p *TraceServiceListAnnotationsArgs) DeepEqual(ano *TraceServiceListAnnotationsArgs) bool { +func (p *TraceServicePreviewExportTracesToDatasetArgs) DeepEqual(ano *TraceServicePreviewExportTracesToDatasetArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -20293,7 +24649,7 @@ func (p *TraceServiceListAnnotationsArgs) DeepEqual(ano *TraceServiceListAnnotat return true } -func (p *TraceServiceListAnnotationsArgs) Field1DeepEqual(src *ListAnnotationsRequest) bool { +func (p *TraceServicePreviewExportTracesToDatasetArgs) Field1DeepEqual(src *PreviewExportTracesToDatasetRequest) bool { if !p.Req.DeepEqual(src) { return false @@ -20301,41 +24657,41 @@ func (p *TraceServiceListAnnotationsArgs) Field1DeepEqual(src *ListAnnotationsRe return true } -type TraceServiceListAnnotationsResult struct { - Success *ListAnnotationsResponse `thrift:"success,0,optional" frugal:"0,optional,ListAnnotationsResponse"` +type TraceServicePreviewExportTracesToDatasetResult struct { + Success *PreviewExportTracesToDatasetResponse `thrift:"success,0,optional" frugal:"0,optional,PreviewExportTracesToDatasetResponse"` } -func NewTraceServiceListAnnotationsResult() *TraceServiceListAnnotationsResult { - return &TraceServiceListAnnotationsResult{} +func NewTraceServicePreviewExportTracesToDatasetResult() *TraceServicePreviewExportTracesToDatasetResult { + return &TraceServicePreviewExportTracesToDatasetResult{} } -func (p *TraceServiceListAnnotationsResult) InitDefault() { +func (p *TraceServicePreviewExportTracesToDatasetResult) InitDefault() { } -var TraceServiceListAnnotationsResult_Success_DEFAULT *ListAnnotationsResponse +var TraceServicePreviewExportTracesToDatasetResult_Success_DEFAULT *PreviewExportTracesToDatasetResponse -func (p *TraceServiceListAnnotationsResult) GetSuccess() (v *ListAnnotationsResponse) { +func (p *TraceServicePreviewExportTracesToDatasetResult) GetSuccess() (v *PreviewExportTracesToDatasetResponse) { if p == nil { return } if !p.IsSetSuccess() { - return TraceServiceListAnnotationsResult_Success_DEFAULT + return TraceServicePreviewExportTracesToDatasetResult_Success_DEFAULT } return p.Success } -func (p *TraceServiceListAnnotationsResult) SetSuccess(x interface{}) { - p.Success = x.(*ListAnnotationsResponse) +func (p *TraceServicePreviewExportTracesToDatasetResult) SetSuccess(x interface{}) { + p.Success = x.(*PreviewExportTracesToDatasetResponse) } -var fieldIDToName_TraceServiceListAnnotationsResult = map[int16]string{ +var fieldIDToName_TraceServicePreviewExportTracesToDatasetResult = map[int16]string{ 0: "success", } -func (p *TraceServiceListAnnotationsResult) IsSetSuccess() bool { +func (p *TraceServicePreviewExportTracesToDatasetResult) IsSetSuccess() bool { return p.Success != nil } -func (p *TraceServiceListAnnotationsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *TraceServicePreviewExportTracesToDatasetResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -20380,7 +24736,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServicePreviewExportTracesToDatasetResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -20390,8 +24746,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListAnnotationsResponse() +func (p *TraceServicePreviewExportTracesToDatasetResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewPreviewExportTracesToDatasetResponse() if err := _field.Read(iprot); err != nil { return err } @@ -20399,9 +24755,9 @@ func (p *TraceServiceListAnnotationsResult) ReadField0(iprot thrift.TProtocol) e return nil } -func (p *TraceServiceListAnnotationsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *TraceServicePreviewExportTracesToDatasetResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListAnnotations_result"); err != nil { + if err = oprot.WriteStructBegin("PreviewExportTracesToDataset_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -20427,7 +24783,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TraceServiceListAnnotationsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *TraceServicePreviewExportTracesToDatasetResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -20446,15 +24802,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *TraceServiceListAnnotationsResult) String() string { +func (p *TraceServicePreviewExportTracesToDatasetResult) String() string { if p == nil { return "" } - return fmt.Sprintf("TraceServiceListAnnotationsResult(%+v)", *p) + return fmt.Sprintf("TraceServicePreviewExportTracesToDatasetResult(%+v)", *p) } -func (p *TraceServiceListAnnotationsResult) DeepEqual(ano *TraceServiceListAnnotationsResult) bool { +func (p *TraceServicePreviewExportTracesToDatasetResult) DeepEqual(ano *TraceServicePreviewExportTracesToDatasetResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -20466,7 +24822,7 @@ func (p *TraceServiceListAnnotationsResult) DeepEqual(ano *TraceServiceListAnnot return true } -func (p *TraceServiceListAnnotationsResult) Field0DeepEqual(src *ListAnnotationsResponse) bool { +func (p *TraceServicePreviewExportTracesToDatasetResult) Field0DeepEqual(src *PreviewExportTracesToDatasetResponse) bool { if !p.Success.DeepEqual(src) { return false diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go index 72eb0d543..2a8229a83 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go @@ -298,6 +298,90 @@ func (p *ListAnnotationsResponse) IsValid() error { } return nil } +func (p *ExportTracesToDatasetRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if len(p.SpanIds) < int(1) { + return fmt.Errorf("field SpanIds MinLen rule failed, current value: %v", p.SpanIds) + } + if len(p.SpanIds) > int(500) { + return fmt.Errorf("field SpanIds MaxLen rule failed, current value: %v", p.SpanIds) + } + if p.Config != nil { + if err := p.Config.IsValid(); err != nil { + return fmt.Errorf("field Config not valid, %w", err) + } + } + if len(p.FieldMappings) < int(1) { + return fmt.Errorf("field FieldMappings MinLen rule failed, current value: %v", p.FieldMappings) + } + if len(p.FieldMappings) > int(100) { + return fmt.Errorf("field FieldMappings MaxLen rule failed, current value: %v", p.FieldMappings) + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *SpanID) IsValid() error { + return nil +} +func (p *DatasetConfig) IsValid() error { + if p.DatasetSchema == nil { + return fmt.Errorf("field DatasetSchema not_nil rule failed") + } + if err := p.DatasetSchema.IsValid(); err != nil { + return fmt.Errorf("field DatasetSchema not valid, %w", err) + } + return nil +} +func (p *ExportTracesToDatasetResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} +func (p *PreviewExportTracesToDatasetRequest) IsValid() error { + if p.WorkspaceID <= int64(0) { + return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) + } + if len(p.SpanIds) < int(1) { + return fmt.Errorf("field SpanIds MinLen rule failed, current value: %v", p.SpanIds) + } + if len(p.SpanIds) > int(500) { + return fmt.Errorf("field SpanIds MaxLen rule failed, current value: %v", p.SpanIds) + } + if p.Config != nil { + if err := p.Config.IsValid(); err != nil { + return fmt.Errorf("field Config not valid, %w", err) + } + } + if len(p.FieldMappings) < int(1) { + return fmt.Errorf("field FieldMappings MinLen rule failed, current value: %v", p.FieldMappings) + } + if len(p.FieldMappings) > int(100) { + return fmt.Errorf("field FieldMappings MaxLen rule failed, current value: %v", p.FieldMappings) + } + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *PreviewExportTracesToDatasetResponse) IsValid() error { + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} func (p *ChangeEvaluatorScoreRequest) IsValid() error { if p.WorkspaceID <= int64(0) { return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) diff --git a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go index 952dab120..2c34a1f4b 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go @@ -12,8 +12,10 @@ import ( kutils "github.com/cloudwego/kitex/pkg/utils" "github.com/coze-dev/coze-loop/backend/kitex_gen/base" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/annotation" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" @@ -22,8 +24,10 @@ import ( var ( _ = base.KitexUnusedProtection + _ = dataset.KitexUnusedProtection _ = annotation.KitexUnusedProtection _ = common.KitexUnusedProtection + _ = dataset0.KitexUnusedProtection _ = filter.KitexUnusedProtection _ = span.KitexUnusedProtection _ = task.KitexUnusedProtection @@ -8151,7 +8155,7 @@ func (p *ListAnnotationsResponse) DeepCopy(s interface{}) error { return nil } -func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { +func (p *ExportTracesToDatasetRequest) FastRead(buf []byte) (int, error) { var err error var offset int @@ -8159,10 +8163,12 @@ func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { var fieldTypeId thrift.TType var fieldId int16 var issetWorkspaceID bool = false - var issetEvaluatorRecordID bool = false - var issetSpanID bool = false + var issetSpanIds bool = false + var issetCategory bool = false + var issetConfig bool = false var issetStartTime bool = false - var issetCorrection bool = false + var issetEndTime bool = false + var issetExportType bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -8189,13 +8195,13 @@ func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { } } case 2: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.LIST { l, err = p.FastReadField2(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetEvaluatorRecordID = true + issetSpanIds = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -8204,13 +8210,13 @@ func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { } } case 3: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I32 { l, err = p.FastReadField3(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetSpanID = true + issetCategory = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -8219,13 +8225,13 @@ func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { } } case 4: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField4(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetStartTime = true + issetConfig = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -8234,13 +8240,71 @@ func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { } } case 5: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.I64 { l, err = p.FastReadField5(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetCorrection = true + issetStartTime = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEndTime = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 7: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField7(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 8: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField8(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetExportType = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 9: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField9(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -8276,37 +8340,47 @@ func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { goto RequiredFieldNotSetError } - if !issetEvaluatorRecordID { + if !issetSpanIds { fieldId = 2 goto RequiredFieldNotSetError } - if !issetSpanID { + if !issetCategory { fieldId = 3 goto RequiredFieldNotSetError } - if !issetStartTime { + if !issetConfig { fieldId = 4 goto RequiredFieldNotSetError } - if !issetCorrection { + if !issetStartTime { fieldId = 5 goto RequiredFieldNotSetError } + + if !issetEndTime { + fieldId = 6 + goto RequiredFieldNotSetError + } + + if !issetExportType { + fieldId = 8 + goto RequiredFieldNotSetError + } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreRequest[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExportTracesToDatasetRequest[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreRequest[fieldId])) + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ExportTracesToDatasetRequest[fieldId])) } -func (p *ChangeEvaluatorScoreRequest) FastReadField1(buf []byte) (int, error) { +func (p *ExportTracesToDatasetRequest) FastReadField1(buf []byte) (int, error) { offset := 0 var _field int64 @@ -8320,35 +8394,73 @@ func (p *ChangeEvaluatorScoreRequest) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *ChangeEvaluatorScoreRequest) FastReadField2(buf []byte) (int, error) { +func (p *ExportTracesToDatasetRequest) FastReadField2(buf []byte) (int, error) { offset := 0 - var _field int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*SpanID, 0, size) + values := make([]SpanID, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.SpanIds = _field + return offset, nil +} + +func (p *ExportTracesToDatasetRequest) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field dataset.DatasetCategory + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = v + + _field = dataset.DatasetCategory(v) } - p.EvaluatorRecordID = _field + p.Category = _field return offset, nil } -func (p *ChangeEvaluatorScoreRequest) FastReadField3(buf []byte) (int, error) { +func (p *ExportTracesToDatasetRequest) FastReadField4(buf []byte) (int, error) { + offset := 0 + _field := NewDatasetConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Config = _field + return offset, nil +} + +func (p *ExportTracesToDatasetRequest) FastReadField5(buf []byte) (int, error) { offset := 0 - var _field string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err } else { offset += l _field = v } - p.SpanID = _field + p.StartTime = _field return offset, nil } -func (p *ChangeEvaluatorScoreRequest) FastReadField4(buf []byte) (int, error) { +func (p *ExportTracesToDatasetRequest) FastReadField6(buf []byte) (int, error) { offset := 0 var _field int64 @@ -8358,23 +8470,64 @@ func (p *ChangeEvaluatorScoreRequest) FastReadField4(buf []byte) (int, error) { offset += l _field = v } - p.StartTime = _field + p.EndTime = _field return offset, nil } -func (p *ChangeEvaluatorScoreRequest) FastReadField5(buf []byte) (int, error) { +func (p *ExportTracesToDatasetRequest) FastReadField7(buf []byte) (int, error) { offset := 0 - _field := annotation.NewCorrection() - if l, err := _field.FastRead(buf[offset:]); err != nil { + + var _field *common.PlatformType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l + _field = &v } - p.Correction = _field + p.PlatformType = _field return offset, nil } -func (p *ChangeEvaluatorScoreRequest) FastReadField255(buf []byte) (int, error) { +func (p *ExportTracesToDatasetRequest) FastReadField8(buf []byte) (int, error) { + offset := 0 + + var _field dataset0.ExportType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.ExportType = _field + return offset, nil +} + +func (p *ExportTracesToDatasetRequest) FastReadField9(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*dataset0.FieldMapping, 0, size) + values := make([]dataset0.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldMappings = _field + return offset, nil +} + +func (p *ExportTracesToDatasetRequest) FastReadField255(buf []byte) (int, error) { offset := 0 _field := base.NewBase() if l, err := _field.FastRead(buf[offset:]); err != nil { @@ -8386,25 +8539,29 @@ func (p *ChangeEvaluatorScoreRequest) FastReadField255(buf []byte) (int, error) return offset, nil } -func (p *ChangeEvaluatorScoreRequest) FastWrite(buf []byte) int { +func (p *ExportTracesToDatasetRequest) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *ChangeEvaluatorScoreRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) - offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) - offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField7(buf[offset:], w) + offset += p.fastWriteField8(buf[offset:], w) + offset += p.fastWriteField9(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset } -func (p *ChangeEvaluatorScoreRequest) BLength() int { +func (p *ExportTracesToDatasetRequest) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -8412,48 +8569,98 @@ func (p *ChangeEvaluatorScoreRequest) BLength() int { l += p.field3Length() l += p.field4Length() l += p.field5Length() + l += p.field6Length() + l += p.field7Length() + l += p.field8Length() + l += p.field9Length() l += p.field255Length() } l += thrift.Binary.FieldStopLength() return l } -func (p *ChangeEvaluatorScoreRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) return offset } -func (p *ChangeEvaluatorScoreRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) - offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorRecordID) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.SpanIds { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) return offset } -func (p *ChangeEvaluatorScoreRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.SpanID) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 3) + offset += thrift.Binary.WriteI32(buf[offset:], int32(p.Category)) return offset } -func (p *ChangeEvaluatorScoreRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 4) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 4) + offset += p.Config.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *ExportTracesToDatasetRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 5) offset += thrift.Binary.WriteI64(buf[offset:], p.StartTime) return offset } -func (p *ChangeEvaluatorScoreRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetRequest) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 5) - offset += p.Correction.FastWriteNocopy(buf[offset:], w) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 6) + offset += thrift.Binary.WriteI64(buf[offset:], p.EndTime) return offset } -func (p *ChangeEvaluatorScoreRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetRequest) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetPlatformType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 7) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.PlatformType) + } + return offset +} + +func (p *ExportTracesToDatasetRequest) fastWriteField8(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 8) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.ExportType) + return offset +} + +func (p *ExportTracesToDatasetRequest) fastWriteField9(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFieldMappings() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 9) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldMappings { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *ExportTracesToDatasetRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetBase() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) @@ -8462,42 +8669,82 @@ func (p *ChangeEvaluatorScoreRequest) fastWriteField255(buf []byte, w thrift.Noc return offset } -func (p *ChangeEvaluatorScoreRequest) field1Length() int { +func (p *ExportTracesToDatasetRequest) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += thrift.Binary.I64Length() return l } -func (p *ChangeEvaluatorScoreRequest) field2Length() int { +func (p *ExportTracesToDatasetRequest) field2Length() int { l := 0 l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() + l += thrift.Binary.ListBeginLength() + for _, v := range p.SpanIds { + _ = v + l += v.BLength() + } return l } -func (p *ChangeEvaluatorScoreRequest) field3Length() int { +func (p *ExportTracesToDatasetRequest) field3Length() int { l := 0 l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(p.SpanID) + l += thrift.Binary.I32Length() return l } -func (p *ChangeEvaluatorScoreRequest) field4Length() int { +func (p *ExportTracesToDatasetRequest) field4Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Config.BLength() + return l +} + +func (p *ExportTracesToDatasetRequest) field5Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += thrift.Binary.I64Length() return l } -func (p *ChangeEvaluatorScoreRequest) field5Length() int { +func (p *ExportTracesToDatasetRequest) field6Length() int { l := 0 l += thrift.Binary.FieldBeginLength() - l += p.Correction.BLength() + l += thrift.Binary.I64Length() return l } -func (p *ChangeEvaluatorScoreRequest) field255Length() int { +func (p *ExportTracesToDatasetRequest) field7Length() int { + l := 0 + if p.IsSetPlatformType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.PlatformType) + } + return l +} + +func (p *ExportTracesToDatasetRequest) field8Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.ExportType) + return l +} + +func (p *ExportTracesToDatasetRequest) field9Length() int { + l := 0 + if p.IsSetFieldMappings() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldMappings { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *ExportTracesToDatasetRequest) field255Length() int { l := 0 if p.IsSetBase() { l += thrift.Binary.FieldBeginLength() @@ -8506,30 +8753,65 @@ func (p *ChangeEvaluatorScoreRequest) field255Length() int { return l } -func (p *ChangeEvaluatorScoreRequest) DeepCopy(s interface{}) error { - src, ok := s.(*ChangeEvaluatorScoreRequest) +func (p *ExportTracesToDatasetRequest) DeepCopy(s interface{}) error { + src, ok := s.(*ExportTracesToDatasetRequest) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } p.WorkspaceID = src.WorkspaceID - p.EvaluatorRecordID = src.EvaluatorRecordID + if src.SpanIds != nil { + p.SpanIds = make([]*SpanID, 0, len(src.SpanIds)) + for _, elem := range src.SpanIds { + var _elem *SpanID + if elem != nil { + _elem = &SpanID{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } - if src.SpanID != "" { - p.SpanID = kutils.StringDeepCopy(src.SpanID) + p.SpanIds = append(p.SpanIds, _elem) + } } - p.StartTime = src.StartTime + p.Category = src.Category - var _correction *annotation.Correction - if src.Correction != nil { - _correction = &annotation.Correction{} - if err := _correction.DeepCopy(src.Correction); err != nil { + var _config *DatasetConfig + if src.Config != nil { + _config = &DatasetConfig{} + if err := _config.DeepCopy(src.Config); err != nil { return err } } - p.Correction = _correction + p.Config = _config + + p.StartTime = src.StartTime + + p.EndTime = src.EndTime + + if src.PlatformType != nil { + tmp := *src.PlatformType + p.PlatformType = &tmp + } + + p.ExportType = src.ExportType + + if src.FieldMappings != nil { + p.FieldMappings = make([]*dataset0.FieldMapping, 0, len(src.FieldMappings)) + for _, elem := range src.FieldMappings { + var _elem *dataset0.FieldMapping + if elem != nil { + _elem = &dataset0.FieldMapping{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldMappings = append(p.FieldMappings, _elem) + } + } var _base *base.Base if src.Base != nil { @@ -8543,14 +8825,15 @@ func (p *ChangeEvaluatorScoreRequest) DeepCopy(s interface{}) error { return nil } -func (p *ChangeEvaluatorScoreResponse) FastRead(buf []byte) (int, error) { +func (p *SpanID) FastRead(buf []byte) (int, error) { var err error var offset int var l int var fieldTypeId thrift.TType var fieldId int16 - var issetAnnotation bool = false + var issetTraceID bool = false + var issetSpanID bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -8562,13 +8845,13 @@ func (p *ChangeEvaluatorScoreResponse) FastRead(buf []byte) (int, error) { } switch fieldId { case 1: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.STRING { l, err = p.FastReadField1(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetAnnotation = true + issetTraceID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -8576,13 +8859,14 @@ func (p *ChangeEvaluatorScoreResponse) FastRead(buf []byte) (int, error) { goto SkipFieldError } } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) offset += l if err != nil { goto ReadFieldError } + issetSpanID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -8599,138 +8883,131 @@ func (p *ChangeEvaluatorScoreResponse) FastRead(buf []byte) (int, error) { } } - if !issetAnnotation { + if !issetTraceID { fieldId = 1 goto RequiredFieldNotSetError } + + if !issetSpanID { + fieldId = 2 + goto RequiredFieldNotSetError + } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreResponse[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanID[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreResponse[fieldId])) + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_SpanID[fieldId])) } -func (p *ChangeEvaluatorScoreResponse) FastReadField1(buf []byte) (int, error) { +func (p *SpanID) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := annotation.NewAnnotation() - if l, err := _field.FastRead(buf[offset:]); err != nil { + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l + _field = v } - p.Annotation = _field + p.TraceID = _field return offset, nil } -func (p *ChangeEvaluatorScoreResponse) FastReadField255(buf []byte) (int, error) { +func (p *SpanID) FastReadField2(buf []byte) (int, error) { offset := 0 - _field := base.NewBaseResp() - if l, err := _field.FastRead(buf[offset:]); err != nil { + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l + _field = v } - p.BaseResp = _field + p.SpanID = _field return offset, nil } -func (p *ChangeEvaluatorScoreResponse) FastWrite(buf []byte) int { +func (p *SpanID) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *ChangeEvaluatorScoreResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *SpanID) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset } -func (p *ChangeEvaluatorScoreResponse) BLength() int { +func (p *SpanID) BLength() int { l := 0 if p != nil { l += p.field1Length() - l += p.field255Length() + l += p.field2Length() } l += thrift.Binary.FieldStopLength() return l } -func (p *ChangeEvaluatorScoreResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *SpanID) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) - offset += p.Annotation.FastWriteNocopy(buf[offset:], w) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TraceID) return offset } -func (p *ChangeEvaluatorScoreResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { +func (p *SpanID) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetBaseResp() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) - } + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.SpanID) return offset } -func (p *ChangeEvaluatorScoreResponse) field1Length() int { +func (p *SpanID) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() - l += p.Annotation.BLength() + l += thrift.Binary.StringLengthNocopy(p.TraceID) return l } -func (p *ChangeEvaluatorScoreResponse) field255Length() int { +func (p *SpanID) field2Length() int { l := 0 - if p.IsSetBaseResp() { - l += thrift.Binary.FieldBeginLength() - l += p.BaseResp.BLength() - } + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.SpanID) return l } -func (p *ChangeEvaluatorScoreResponse) DeepCopy(s interface{}) error { - src, ok := s.(*ChangeEvaluatorScoreResponse) +func (p *SpanID) DeepCopy(s interface{}) error { + src, ok := s.(*SpanID) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _annotation *annotation.Annotation - if src.Annotation != nil { - _annotation = &annotation.Annotation{} - if err := _annotation.DeepCopy(src.Annotation); err != nil { - return err - } + if src.TraceID != "" { + p.TraceID = kutils.StringDeepCopy(src.TraceID) } - p.Annotation = _annotation - var _baseResp *base.BaseResp - if src.BaseResp != nil { - _baseResp = &base.BaseResp{} - if err := _baseResp.DeepCopy(src.BaseResp); err != nil { - return err - } + if src.SpanID != "" { + p.SpanID = kutils.StringDeepCopy(src.SpanID) } - p.BaseResp = _baseResp return nil } -func (p *AnnotationEvaluator) FastRead(buf []byte) (int, error) { +func (p *DatasetConfig) FastRead(buf []byte) (int, error) { var err error var offset int var l int var fieldTypeId thrift.TType var fieldId int16 - var issetEvaluatorVersionID bool = false - var issetEvaluatorName bool = false - var issetEvaluatorVersion bool = false + var issetIsNewDataset bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -8742,13 +9019,13 @@ func (p *AnnotationEvaluator) FastRead(buf []byte) (int, error) { } switch fieldId { case 1: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.BOOL { l, err = p.FastReadField1(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetEvaluatorVersionID = true + issetIsNewDataset = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -8757,13 +9034,12 @@ func (p *AnnotationEvaluator) FastRead(buf []byte) (int, error) { } } case 2: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I64 { l, err = p.FastReadField2(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetEvaluatorName = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -8778,7 +9054,20 @@ func (p *AnnotationEvaluator) FastRead(buf []byte) (int, error) { if err != nil { goto ReadFieldError } - issetEvaluatorVersion = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -8795,168 +9084,211 @@ func (p *AnnotationEvaluator) FastRead(buf []byte) (int, error) { } } - if !issetEvaluatorVersionID { + if !issetIsNewDataset { fieldId = 1 goto RequiredFieldNotSetError } - - if !issetEvaluatorName { - fieldId = 2 - goto RequiredFieldNotSetError - } - - if !issetEvaluatorVersion { - fieldId = 3 - goto RequiredFieldNotSetError - } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AnnotationEvaluator[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DatasetConfig[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_AnnotationEvaluator[fieldId])) + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_DatasetConfig[fieldId])) } -func (p *AnnotationEvaluator) FastReadField1(buf []byte) (int, error) { +func (p *DatasetConfig) FastReadField1(buf []byte) (int, error) { offset := 0 - var _field int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + var _field bool + if v, l, err := thrift.Binary.ReadBool(buf[offset:]); err != nil { return offset, err } else { offset += l _field = v } - p.EvaluatorVersionID = _field + p.IsNewDataset = _field return offset, nil } -func (p *AnnotationEvaluator) FastReadField2(buf []byte) (int, error) { +func (p *DatasetConfig) FastReadField2(buf []byte) (int, error) { offset := 0 - var _field string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = v + _field = &v } - p.EvaluatorName = _field + p.DatasetID = _field return offset, nil } -func (p *AnnotationEvaluator) FastReadField3(buf []byte) (int, error) { +func (p *DatasetConfig) FastReadField3(buf []byte) (int, error) { offset := 0 - var _field string + var _field *string if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = v + _field = &v } - p.EvaluatorVersion = _field + p.DatasetName = _field return offset, nil } -func (p *AnnotationEvaluator) FastWrite(buf []byte) int { +func (p *DatasetConfig) FastReadField4(buf []byte) (int, error) { + offset := 0 + _field := dataset0.NewDatasetSchema() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.DatasetSchema = _field + return offset, nil +} + +func (p *DatasetConfig) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *AnnotationEvaluator) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *DatasetConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset } -func (p *AnnotationEvaluator) BLength() int { +func (p *DatasetConfig) BLength() int { l := 0 if p != nil { l += p.field1Length() l += p.field2Length() l += p.field3Length() + l += p.field4Length() } l += thrift.Binary.FieldStopLength() return l } -func (p *AnnotationEvaluator) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *DatasetConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorVersionID) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.BOOL, 1) + offset += thrift.Binary.WriteBool(buf[offset:], p.IsNewDataset) return offset } -func (p *AnnotationEvaluator) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { +func (p *DatasetConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.EvaluatorName) + if p.IsSetDatasetID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], *p.DatasetID) + } return offset } -func (p *AnnotationEvaluator) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { +func (p *DatasetConfig) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.EvaluatorVersion) + if p.IsSetDatasetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.DatasetName) + } return offset } -func (p *AnnotationEvaluator) field1Length() int { +func (p *DatasetConfig) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDatasetSchema() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 4) + offset += p.DatasetSchema.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *DatasetConfig) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() + l += thrift.Binary.BoolLength() return l } -func (p *AnnotationEvaluator) field2Length() int { +func (p *DatasetConfig) field2Length() int { l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(p.EvaluatorName) + if p.IsSetDatasetID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } return l } -func (p *AnnotationEvaluator) field3Length() int { +func (p *DatasetConfig) field3Length() int { l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(p.EvaluatorVersion) + if p.IsSetDatasetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.DatasetName) + } return l } -func (p *AnnotationEvaluator) DeepCopy(s interface{}) error { - src, ok := s.(*AnnotationEvaluator) +func (p *DatasetConfig) field4Length() int { + l := 0 + if p.IsSetDatasetSchema() { + l += thrift.Binary.FieldBeginLength() + l += p.DatasetSchema.BLength() + } + return l +} + +func (p *DatasetConfig) DeepCopy(s interface{}) error { + src, ok := s.(*DatasetConfig) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - p.EvaluatorVersionID = src.EvaluatorVersionID + p.IsNewDataset = src.IsNewDataset - if src.EvaluatorName != "" { - p.EvaluatorName = kutils.StringDeepCopy(src.EvaluatorName) + if src.DatasetID != nil { + tmp := *src.DatasetID + p.DatasetID = &tmp } - if src.EvaluatorVersion != "" { - p.EvaluatorVersion = kutils.StringDeepCopy(src.EvaluatorVersion) + if src.DatasetName != nil { + var tmp string + if *src.DatasetName != "" { + tmp = kutils.StringDeepCopy(*src.DatasetName) + } + p.DatasetName = &tmp } + var _datasetSchema *dataset0.DatasetSchema + if src.DatasetSchema != nil { + _datasetSchema = &dataset0.DatasetSchema{} + if err := _datasetSchema.DeepCopy(src.DatasetSchema); err != nil { + return err + } + } + p.DatasetSchema = _datasetSchema + return nil } -func (p *ListAnnotationEvaluatorsRequest) FastRead(buf []byte) (int, error) { +func (p *ExportTracesToDatasetResponse) FastRead(buf []byte) (int, error) { var err error var offset int var l int var fieldTypeId thrift.TType var fieldId int16 - var issetWorkspaceID bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -8968,13 +9300,12 @@ func (p *ListAnnotationEvaluatorsRequest) FastRead(buf []byte) (int, error) { } switch fieldId { case 1: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.I32 { l, err = p.FastReadField1(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetWorkspaceID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -8983,7 +9314,7 @@ func (p *ListAnnotationEvaluatorsRequest) FastRead(buf []byte) (int, error) { } } case 2: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.LIST { l, err = p.FastReadField2(buf[offset:]) offset += l if err != nil { @@ -8996,6 +9327,34 @@ func (p *ListAnnotationEvaluatorsRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 3: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 255: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField255(buf[offset:]) @@ -9010,6 +9369,34 @@ func (p *ListAnnotationEvaluatorsRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 256: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField256(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 257: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField257(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -9019,36 +9406,69 @@ func (p *ListAnnotationEvaluatorsRequest) FastRead(buf []byte) (int, error) { } } - if !issetWorkspaceID { - fieldId = 1 - goto RequiredFieldNotSetError - } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExportTracesToDatasetResponse[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId])) } -func (p *ListAnnotationEvaluatorsRequest) FastReadField1(buf []byte) (int, error) { +func (p *ExportTracesToDatasetResponse) FastReadField1(buf []byte) (int, error) { offset := 0 - var _field int64 + var _field *int32 + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SuccessCount = _field + return offset, nil +} + +func (p *ExportTracesToDatasetResponse) FastReadField2(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*dataset.ItemErrorGroup, 0, size) + values := make([]dataset.ItemErrorGroup, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.Errors = _field + return offset, nil +} + +func (p *ExportTracesToDatasetResponse) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *int64 if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = v + _field = &v } - p.WorkspaceID = _field + p.DatasetID = _field return offset, nil } -func (p *ListAnnotationEvaluatorsRequest) FastReadField2(buf []byte) (int, error) { +func (p *ExportTracesToDatasetResponse) FastReadField4(buf []byte) (int, error) { offset := 0 var _field *string @@ -9058,322 +9478,260 @@ func (p *ListAnnotationEvaluatorsRequest) FastReadField2(buf []byte) (int, error offset += l _field = &v } - p.Name = _field + p.DatasetName = _field return offset, nil } -func (p *ListAnnotationEvaluatorsRequest) FastReadField255(buf []byte) (int, error) { +func (p *ExportTracesToDatasetResponse) FastReadField255(buf []byte) (int, error) { offset := 0 - _field := base.NewBase() + _field := base.NewBaseResp() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { offset += l } - p.Base = _field + p.BaseResp = _field return offset, nil } -func (p *ListAnnotationEvaluatorsRequest) FastWrite(buf []byte) int { +func (p *ExportTracesToDatasetResponse) FastReadField256(buf []byte) (int, error) { + offset := 0 + + var _field *int32 + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Code = _field + return offset, nil +} + +func (p *ExportTracesToDatasetResponse) FastReadField257(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Msg = _field + return offset, nil +} + +func (p *ExportTracesToDatasetResponse) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *ListAnnotationEvaluatorsRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField256(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) + offset += p.fastWriteField257(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset } -func (p *ListAnnotationEvaluatorsRequest) BLength() int { +func (p *ExportTracesToDatasetResponse) BLength() int { l := 0 if p != nil { l += p.field1Length() l += p.field2Length() + l += p.field3Length() + l += p.field4Length() l += p.field255Length() + l += p.field256Length() + l += p.field257Length() } l += thrift.Binary.FieldStopLength() return l } -func (p *ListAnnotationEvaluatorsRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + if p.IsSetSuccessCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 1) + offset += thrift.Binary.WriteI32(buf[offset:], *p.SuccessCount) + } return offset } -func (p *ListAnnotationEvaluatorsRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetResponse) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetName() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + if p.IsSetErrors() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.Errors { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) } return offset } -func (p *ListAnnotationEvaluatorsRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { +func (p *ExportTracesToDatasetResponse) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetBase() { + if p.IsSetDatasetID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 3) + offset += thrift.Binary.WriteI64(buf[offset:], *p.DatasetID) + } + return offset +} + +func (p *ExportTracesToDatasetResponse) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDatasetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.DatasetName) + } + return offset +} + +func (p *ExportTracesToDatasetResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.Base.FastWriteNocopy(buf[offset:], w) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) } return offset } -func (p *ListAnnotationEvaluatorsRequest) field1Length() int { +func (p *ExportTracesToDatasetResponse) fastWriteField256(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetCode() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 256) + offset += thrift.Binary.WriteI32(buf[offset:], *p.Code) + } + return offset +} + +func (p *ExportTracesToDatasetResponse) fastWriteField257(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetMsg() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 257) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Msg) + } + return offset +} + +func (p *ExportTracesToDatasetResponse) field1Length() int { l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() + if p.IsSetSuccessCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } return l } -func (p *ListAnnotationEvaluatorsRequest) field2Length() int { +func (p *ExportTracesToDatasetResponse) field2Length() int { l := 0 - if p.IsSetName() { + if p.IsSetErrors() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Name) + l += thrift.Binary.ListBeginLength() + for _, v := range p.Errors { + _ = v + l += v.BLength() + } } return l } -func (p *ListAnnotationEvaluatorsRequest) field255Length() int { +func (p *ExportTracesToDatasetResponse) field3Length() int { l := 0 - if p.IsSetBase() { + if p.IsSetDatasetID() { l += thrift.Binary.FieldBeginLength() - l += p.Base.BLength() + l += thrift.Binary.I64Length() } return l } -func (p *ListAnnotationEvaluatorsRequest) DeepCopy(s interface{}) error { - src, ok := s.(*ListAnnotationEvaluatorsRequest) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - p.WorkspaceID = src.WorkspaceID - - if src.Name != nil { - var tmp string - if *src.Name != "" { - tmp = kutils.StringDeepCopy(*src.Name) - } - p.Name = &tmp - } - - var _base *base.Base - if src.Base != nil { - _base = &base.Base{} - if err := _base.DeepCopy(src.Base); err != nil { - return err - } - } - p.Base = _base - - return nil -} - -func (p *ListAnnotationEvaluatorsResponse) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - var issetEvaluators bool = false - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.LIST { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetEvaluators = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - if !issetEvaluators { - fieldId = 1 - goto RequiredFieldNotSetError - } - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId])) -} - -func (p *ListAnnotationEvaluatorsResponse) FastReadField1(buf []byte) (int, error) { - offset := 0 - - _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) - offset += l - if err != nil { - return offset, err - } - _field := make([]*AnnotationEvaluator, 0, size) - values := make([]AnnotationEvaluator, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - if l, err := _elem.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - - _field = append(_field, _elem) - } - p.Evaluators = _field - return offset, nil -} - -func (p *ListAnnotationEvaluatorsResponse) FastReadField255(buf []byte) (int, error) { - offset := 0 - _field := base.NewBaseResp() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.BaseResp = _field - return offset, nil -} - -func (p *ListAnnotationEvaluatorsResponse) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *ListAnnotationEvaluatorsResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *ListAnnotationEvaluatorsResponse) BLength() int { +func (p *ExportTracesToDatasetResponse) field4Length() int { l := 0 - if p != nil { - l += p.field1Length() - l += p.field255Length() + if p.IsSetDatasetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.DatasetName) } - l += thrift.Binary.FieldStopLength() return l } -func (p *ListAnnotationEvaluatorsResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) - listBeginOffset := offset - offset += thrift.Binary.ListBeginLength() - var length int - for _, v := range p.Evaluators { - length++ - offset += v.FastWriteNocopy(buf[offset:], w) - } - thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) - return offset -} - -func (p *ListAnnotationEvaluatorsResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { - offset := 0 +func (p *ExportTracesToDatasetResponse) field255Length() int { + l := 0 if p.IsSetBaseResp() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() } - return offset + return l } -func (p *ListAnnotationEvaluatorsResponse) field1Length() int { +func (p *ExportTracesToDatasetResponse) field256Length() int { l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.ListBeginLength() - for _, v := range p.Evaluators { - _ = v - l += v.BLength() + if p.IsSetCode() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() } return l } -func (p *ListAnnotationEvaluatorsResponse) field255Length() int { +func (p *ExportTracesToDatasetResponse) field257Length() int { l := 0 - if p.IsSetBaseResp() { + if p.IsSetMsg() { l += thrift.Binary.FieldBeginLength() - l += p.BaseResp.BLength() + l += thrift.Binary.StringLengthNocopy(*p.Msg) } return l } -func (p *ListAnnotationEvaluatorsResponse) DeepCopy(s interface{}) error { - src, ok := s.(*ListAnnotationEvaluatorsResponse) +func (p *ExportTracesToDatasetResponse) DeepCopy(s interface{}) error { + src, ok := s.(*ExportTracesToDatasetResponse) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - if src.Evaluators != nil { - p.Evaluators = make([]*AnnotationEvaluator, 0, len(src.Evaluators)) - for _, elem := range src.Evaluators { - var _elem *AnnotationEvaluator + if src.SuccessCount != nil { + tmp := *src.SuccessCount + p.SuccessCount = &tmp + } + + if src.Errors != nil { + p.Errors = make([]*dataset.ItemErrorGroup, 0, len(src.Errors)) + for _, elem := range src.Errors { + var _elem *dataset.ItemErrorGroup if elem != nil { - _elem = &AnnotationEvaluator{} + _elem = &dataset.ItemErrorGroup{} if err := _elem.DeepCopy(elem); err != nil { return err } } - p.Evaluators = append(p.Evaluators, _elem) + p.Errors = append(p.Errors, _elem) } } + if src.DatasetID != nil { + tmp := *src.DatasetID + p.DatasetID = &tmp + } + + if src.DatasetName != nil { + var tmp string + if *src.DatasetName != "" { + tmp = kutils.StringDeepCopy(*src.DatasetName) + } + p.DatasetName = &tmp + } + var _baseResp *base.BaseResp if src.BaseResp != nil { _baseResp = &base.BaseResp{} @@ -9383,10 +9741,23 @@ func (p *ListAnnotationEvaluatorsResponse) DeepCopy(s interface{}) error { } p.BaseResp = _baseResp + if src.Code != nil { + tmp := *src.Code + p.Code = &tmp + } + + if src.Msg != nil { + var tmp string + if *src.Msg != "" { + tmp = kutils.StringDeepCopy(*src.Msg) + } + p.Msg = &tmp + } + return nil } -func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetRequest) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9394,8 +9765,12 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { var fieldTypeId thrift.TType var fieldId int16 var issetWorkspaceID bool = false - var issetTraceID bool = false var issetSpanIds bool = false + var issetCategory bool = false + var issetConfig bool = false + var issetStartTime bool = false + var issetEndTime bool = false + var issetExportType bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -9422,13 +9797,13 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { } } case 2: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.LIST { l, err = p.FastReadField2(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetTraceID = true + issetSpanIds = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -9437,13 +9812,13 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { } } case 3: - if fieldTypeId == thrift.LIST { + if fieldTypeId == thrift.I32 { l, err = p.FastReadField3(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetSpanIds = true + issetCategory = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -9452,12 +9827,13 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { } } case 4: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField4(buf[offset:]) offset += l if err != nil { goto ReadFieldError } + issetConfig = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -9472,6 +9848,7 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { if err != nil { goto ReadFieldError } + issetStartTime = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -9480,12 +9857,13 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { } } case 6: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I64 { l, err = p.FastReadField6(buf[offset:]) offset += l if err != nil { goto ReadFieldError } + issetEndTime = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -9494,7 +9872,7 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { } } case 7: - if fieldTypeId == thrift.LIST { + if fieldTypeId == thrift.STRING { l, err = p.FastReadField7(buf[offset:]) offset += l if err != nil { @@ -9507,13 +9885,14 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } - case 255: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) + case 8: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField8(buf[offset:]) offset += l if err != nil { goto ReadFieldError } + issetExportType = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -9521,41 +9900,89 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - if !issetWorkspaceID { - fieldId = 1 - goto RequiredFieldNotSetError + case 9: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField9(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } } - if !issetTraceID { - fieldId = 2 + if !issetWorkspaceID { + fieldId = 1 goto RequiredFieldNotSetError } if !issetSpanIds { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetCategory { fieldId = 3 goto RequiredFieldNotSetError } + + if !issetConfig { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetStartTime { + fieldId = 5 + goto RequiredFieldNotSetError + } + + if !issetEndTime { + fieldId = 6 + goto RequiredFieldNotSetError + } + + if !issetExportType { + fieldId = 8 + goto RequiredFieldNotSetError + } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoRequest[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_PreviewExportTracesToDatasetRequest[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ExtractSpanInfoRequest[fieldId])) + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_PreviewExportTracesToDatasetRequest[fieldId])) } -func (p *ExtractSpanInfoRequest) FastReadField1(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetRequest) FastReadField1(buf []byte) (int, error) { offset := 0 var _field int64 @@ -9569,21 +9996,7 @@ func (p *ExtractSpanInfoRequest) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *ExtractSpanInfoRequest) FastReadField2(buf []byte) (int, error) { - offset := 0 - - var _field string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.TraceID = _field - return offset, nil -} - -func (p *ExtractSpanInfoRequest) FastReadField3(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetRequest) FastReadField2(buf []byte) (int, error) { offset := 0 _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) @@ -9591,14 +10004,15 @@ func (p *ExtractSpanInfoRequest) FastReadField3(buf []byte) (int, error) { if err != nil { return offset, err } - _field := make([]string, 0, size) + _field := make([]*SpanID, 0, size) + values := make([]SpanID, size) for i := 0; i < size; i++ { - var _elem string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { return offset, err } else { offset += l - _elem = v } _field = append(_field, _elem) @@ -9607,35 +10021,62 @@ func (p *ExtractSpanInfoRequest) FastReadField3(buf []byte) (int, error) { return offset, nil } -func (p *ExtractSpanInfoRequest) FastReadField4(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetRequest) FastReadField3(buf []byte) (int, error) { offset := 0 - var _field *int64 + var _field dataset.DatasetCategory + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + + _field = dataset.DatasetCategory(v) + } + p.Category = _field + return offset, nil +} + +func (p *PreviewExportTracesToDatasetRequest) FastReadField4(buf []byte) (int, error) { + offset := 0 + _field := NewDatasetConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Config = _field + return offset, nil +} + +func (p *PreviewExportTracesToDatasetRequest) FastReadField5(buf []byte) (int, error) { + offset := 0 + + var _field int64 if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v + _field = v } p.StartTime = _field return offset, nil } -func (p *ExtractSpanInfoRequest) FastReadField5(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetRequest) FastReadField6(buf []byte) (int, error) { offset := 0 - var _field *int64 + var _field int64 if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v + _field = v } p.EndTime = _field return offset, nil } -func (p *ExtractSpanInfoRequest) FastReadField6(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetRequest) FastReadField7(buf []byte) (int, error) { offset := 0 var _field *common.PlatformType @@ -9649,7 +10090,21 @@ func (p *ExtractSpanInfoRequest) FastReadField6(buf []byte) (int, error) { return offset, nil } -func (p *ExtractSpanInfoRequest) FastReadField7(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetRequest) FastReadField8(buf []byte) (int, error) { + offset := 0 + + var _field dataset0.ExportType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.ExportType = _field + return offset, nil +} + +func (p *PreviewExportTracesToDatasetRequest) FastReadField9(buf []byte) (int, error) { offset := 0 _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) @@ -9657,8 +10112,8 @@ func (p *ExtractSpanInfoRequest) FastReadField7(buf []byte) (int, error) { if err != nil { return offset, err } - _field := make([]*task.FieldMapping, 0, size) - values := make([]task.FieldMapping, size) + _field := make([]*dataset0.FieldMapping, 0, size) + values := make([]dataset0.FieldMapping, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -9674,7 +10129,7 @@ func (p *ExtractSpanInfoRequest) FastReadField7(buf []byte) (int, error) { return offset, nil } -func (p *ExtractSpanInfoRequest) FastReadField255(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetRequest) FastReadField255(buf []byte) (int, error) { offset := 0 _field := base.NewBase() if l, err := _field.FastRead(buf[offset:]); err != nil { @@ -9686,27 +10141,29 @@ func (p *ExtractSpanInfoRequest) FastReadField255(buf []byte) (int, error) { return offset, nil } -func (p *ExtractSpanInfoRequest) FastWrite(buf []byte) int { +func (p *PreviewExportTracesToDatasetRequest) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *ExtractSpanInfoRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) - offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField7(buf[offset:], w) + offset += p.fastWriteField8(buf[offset:], w) + offset += p.fastWriteField9(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset } -func (p *ExtractSpanInfoRequest) BLength() int { +func (p *PreviewExportTracesToDatasetRequest) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -9716,71 +10173,83 @@ func (p *ExtractSpanInfoRequest) BLength() int { l += p.field5Length() l += p.field6Length() l += p.field7Length() + l += p.field8Length() + l += p.field9Length() l += p.field255Length() } l += thrift.Binary.FieldStopLength() return l } -func (p *ExtractSpanInfoRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) return offset } -func (p *ExtractSpanInfoRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TraceID) - return offset -} - -func (p *ExtractSpanInfoRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 3) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) listBeginOffset := offset offset += thrift.Binary.ListBeginLength() var length int for _, v := range p.SpanIds { length++ - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, v) + offset += v.FastWriteNocopy(buf[offset:], w) } - thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRING, length) + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) return offset } -func (p *ExtractSpanInfoRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetStartTime() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 4) - offset += thrift.Binary.WriteI64(buf[offset:], *p.StartTime) - } + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 3) + offset += thrift.Binary.WriteI32(buf[offset:], int32(p.Category)) return offset } -func (p *ExtractSpanInfoRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetEndTime() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 5) - offset += thrift.Binary.WriteI64(buf[offset:], *p.EndTime) - } + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 4) + offset += p.Config.FastWriteNocopy(buf[offset:], w) return offset } -func (p *ExtractSpanInfoRequest) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 5) + offset += thrift.Binary.WriteI64(buf[offset:], p.StartTime) + return offset +} + +func (p *PreviewExportTracesToDatasetRequest) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 6) + offset += thrift.Binary.WriteI64(buf[offset:], p.EndTime) + return offset +} + +func (p *PreviewExportTracesToDatasetRequest) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetPlatformType() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 6) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 7) offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.PlatformType) } return offset } -func (p *ExtractSpanInfoRequest) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetRequest) fastWriteField8(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 8) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.ExportType) + return offset +} + +func (p *PreviewExportTracesToDatasetRequest) fastWriteField9(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetFieldMappings() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 7) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 9) listBeginOffset := offset offset += thrift.Binary.ListBeginLength() var length int @@ -9793,7 +10262,7 @@ func (p *ExtractSpanInfoRequest) fastWriteField7(buf []byte, w thrift.NocopyWrit return offset } -func (p *ExtractSpanInfoRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetBase() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) @@ -9802,50 +10271,53 @@ func (p *ExtractSpanInfoRequest) fastWriteField255(buf []byte, w thrift.NocopyWr return offset } -func (p *ExtractSpanInfoRequest) field1Length() int { +func (p *PreviewExportTracesToDatasetRequest) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += thrift.Binary.I64Length() return l } -func (p *ExtractSpanInfoRequest) field2Length() int { +func (p *PreviewExportTracesToDatasetRequest) field2Length() int { l := 0 l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(p.TraceID) + l += thrift.Binary.ListBeginLength() + for _, v := range p.SpanIds { + _ = v + l += v.BLength() + } return l } -func (p *ExtractSpanInfoRequest) field3Length() int { +func (p *PreviewExportTracesToDatasetRequest) field3Length() int { l := 0 l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.ListBeginLength() - for _, v := range p.SpanIds { - _ = v - l += thrift.Binary.StringLengthNocopy(v) - } + l += thrift.Binary.I32Length() return l } -func (p *ExtractSpanInfoRequest) field4Length() int { +func (p *PreviewExportTracesToDatasetRequest) field4Length() int { l := 0 - if p.IsSetStartTime() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - } + l += thrift.Binary.FieldBeginLength() + l += p.Config.BLength() return l } -func (p *ExtractSpanInfoRequest) field5Length() int { +func (p *PreviewExportTracesToDatasetRequest) field5Length() int { l := 0 - if p.IsSetEndTime() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - } + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() return l } -func (p *ExtractSpanInfoRequest) field6Length() int { +func (p *PreviewExportTracesToDatasetRequest) field6Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *PreviewExportTracesToDatasetRequest) field7Length() int { l := 0 if p.IsSetPlatformType() { l += thrift.Binary.FieldBeginLength() @@ -9854,7 +10326,14 @@ func (p *ExtractSpanInfoRequest) field6Length() int { return l } -func (p *ExtractSpanInfoRequest) field7Length() int { +func (p *PreviewExportTracesToDatasetRequest) field8Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.ExportType) + return l +} + +func (p *PreviewExportTracesToDatasetRequest) field9Length() int { l := 0 if p.IsSetFieldMappings() { l += thrift.Binary.FieldBeginLength() @@ -9867,7 +10346,7 @@ func (p *ExtractSpanInfoRequest) field7Length() int { return l } -func (p *ExtractSpanInfoRequest) field255Length() int { +func (p *PreviewExportTracesToDatasetRequest) field255Length() int { l := 0 if p.IsSetBase() { l += thrift.Binary.FieldBeginLength() @@ -9876,50 +10355,57 @@ func (p *ExtractSpanInfoRequest) field255Length() int { return l } -func (p *ExtractSpanInfoRequest) DeepCopy(s interface{}) error { - src, ok := s.(*ExtractSpanInfoRequest) +func (p *PreviewExportTracesToDatasetRequest) DeepCopy(s interface{}) error { + src, ok := s.(*PreviewExportTracesToDatasetRequest) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } p.WorkspaceID = src.WorkspaceID - if src.TraceID != "" { - p.TraceID = kutils.StringDeepCopy(src.TraceID) - } - if src.SpanIds != nil { - p.SpanIds = make([]string, 0, len(src.SpanIds)) + p.SpanIds = make([]*SpanID, 0, len(src.SpanIds)) for _, elem := range src.SpanIds { - var _elem string - if elem != "" { - _elem = kutils.StringDeepCopy(elem) + var _elem *SpanID + if elem != nil { + _elem = &SpanID{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } } + p.SpanIds = append(p.SpanIds, _elem) } } - if src.StartTime != nil { - tmp := *src.StartTime - p.StartTime = &tmp - } + p.Category = src.Category - if src.EndTime != nil { - tmp := *src.EndTime - p.EndTime = &tmp + var _config *DatasetConfig + if src.Config != nil { + _config = &DatasetConfig{} + if err := _config.DeepCopy(src.Config); err != nil { + return err + } } + p.Config = _config - if src.PlatformType != nil { - tmp := *src.PlatformType + p.StartTime = src.StartTime + + p.EndTime = src.EndTime + + if src.PlatformType != nil { + tmp := *src.PlatformType p.PlatformType = &tmp } + p.ExportType = src.ExportType + if src.FieldMappings != nil { - p.FieldMappings = make([]*task.FieldMapping, 0, len(src.FieldMappings)) + p.FieldMappings = make([]*dataset0.FieldMapping, 0, len(src.FieldMappings)) for _, elem := range src.FieldMappings { - var _elem *task.FieldMapping + var _elem *dataset0.FieldMapping if elem != nil { - _elem = &task.FieldMapping{} + _elem = &dataset0.FieldMapping{} if err := _elem.DeepCopy(elem); err != nil { return err } @@ -9941,7 +10427,7 @@ func (p *ExtractSpanInfoRequest) DeepCopy(s interface{}) error { return nil } -func (p *FieldData) FastRead(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetResponse) FastRead(buf []byte) (int, error) { var err error var offset int @@ -9959,7 +10445,7 @@ func (p *FieldData) FastRead(buf []byte) (int, error) { } switch fieldId { case 1: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.LIST { l, err = p.FastReadField1(buf[offset:]) offset += l if err != nil { @@ -9973,7 +10459,7 @@ func (p *FieldData) FastRead(buf []byte) (int, error) { } } case 2: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.LIST { l, err = p.FastReadField2(buf[offset:]) offset += l if err != nil { @@ -9986,9 +10472,37 @@ func (p *FieldData) FastRead(buf []byte) (int, error) { goto SkipFieldError } } - case 3: + case 255: if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField3(buf[offset:]) + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 256: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField256(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 257: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField257(buf[offset:]) offset += l if err != nil { goto ReadFieldError @@ -10013,172 +10527,316 @@ func (p *FieldData) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldData[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_PreviewExportTracesToDatasetResponse[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *FieldData) FastReadField1(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetResponse) FastReadField1(buf []byte) (int, error) { offset := 0 - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*dataset0.Item, 0, size) + values := make([]dataset0.Item, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.Items = _field + return offset, nil +} + +func (p *PreviewExportTracesToDatasetResponse) FastReadField2(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*dataset.ItemErrorGroup, 0, size) + values := make([]dataset.ItemErrorGroup, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.Errors = _field + return offset, nil +} + +func (p *PreviewExportTracesToDatasetResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v } - p.Key = _field + p.BaseResp = _field return offset, nil } -func (p *FieldData) FastReadField2(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetResponse) FastReadField256(buf []byte) (int, error) { offset := 0 - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + var _field *int32 + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { return offset, err } else { offset += l _field = &v } - p.Name = _field + p.Code = _field return offset, nil } -func (p *FieldData) FastReadField3(buf []byte) (int, error) { +func (p *PreviewExportTracesToDatasetResponse) FastReadField257(buf []byte) (int, error) { offset := 0 - _field := NewContent() - if l, err := _field.FastRead(buf[offset:]); err != nil { + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l + _field = &v } - p.Content = _field + p.Msg = _field return offset, nil } -func (p *FieldData) FastWrite(buf []byte) int { +func (p *PreviewExportTracesToDatasetResponse) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *FieldData) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { + offset += p.fastWriteField256(buf[offset:], w) offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) - offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + offset += p.fastWriteField257(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset } -func (p *FieldData) BLength() int { +func (p *PreviewExportTracesToDatasetResponse) BLength() int { l := 0 if p != nil { l += p.field1Length() l += p.field2Length() - l += p.field3Length() + l += p.field255Length() + l += p.field256Length() + l += p.field257Length() } l += thrift.Binary.FieldStopLength() return l } -func (p *FieldData) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetKey() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Key) + if p.IsSetItems() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.Items { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) } return offset } -func (p *FieldData) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetResponse) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetName() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + if p.IsSetErrors() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.Errors { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) } return offset } -func (p *FieldData) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { +func (p *PreviewExportTracesToDatasetResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetContent() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 3) - offset += p.Content.FastWriteNocopy(buf[offset:], w) + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) } return offset } -func (p *FieldData) field1Length() int { +func (p *PreviewExportTracesToDatasetResponse) fastWriteField256(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetCode() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 256) + offset += thrift.Binary.WriteI32(buf[offset:], *p.Code) + } + return offset +} + +func (p *PreviewExportTracesToDatasetResponse) fastWriteField257(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetMsg() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 257) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Msg) + } + return offset +} + +func (p *PreviewExportTracesToDatasetResponse) field1Length() int { l := 0 - if p.IsSetKey() { + if p.IsSetItems() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Key) + l += thrift.Binary.ListBeginLength() + for _, v := range p.Items { + _ = v + l += v.BLength() + } } return l } -func (p *FieldData) field2Length() int { +func (p *PreviewExportTracesToDatasetResponse) field2Length() int { l := 0 - if p.IsSetName() { + if p.IsSetErrors() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Name) + l += thrift.Binary.ListBeginLength() + for _, v := range p.Errors { + _ = v + l += v.BLength() + } } return l } -func (p *FieldData) field3Length() int { +func (p *PreviewExportTracesToDatasetResponse) field255Length() int { l := 0 - if p.IsSetContent() { + if p.IsSetBaseResp() { l += thrift.Binary.FieldBeginLength() - l += p.Content.BLength() + l += p.BaseResp.BLength() } return l } -func (p *FieldData) DeepCopy(s interface{}) error { - src, ok := s.(*FieldData) +func (p *PreviewExportTracesToDatasetResponse) field256Length() int { + l := 0 + if p.IsSetCode() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *PreviewExportTracesToDatasetResponse) field257Length() int { + l := 0 + if p.IsSetMsg() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Msg) + } + return l +} + +func (p *PreviewExportTracesToDatasetResponse) DeepCopy(s interface{}) error { + src, ok := s.(*PreviewExportTracesToDatasetResponse) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - if src.Key != nil { - var tmp string - if *src.Key != "" { - tmp = kutils.StringDeepCopy(*src.Key) + if src.Items != nil { + p.Items = make([]*dataset0.Item, 0, len(src.Items)) + for _, elem := range src.Items { + var _elem *dataset0.Item + if elem != nil { + _elem = &dataset0.Item{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.Items = append(p.Items, _elem) } - p.Key = &tmp } - if src.Name != nil { - var tmp string - if *src.Name != "" { - tmp = kutils.StringDeepCopy(*src.Name) + if src.Errors != nil { + p.Errors = make([]*dataset.ItemErrorGroup, 0, len(src.Errors)) + for _, elem := range src.Errors { + var _elem *dataset.ItemErrorGroup + if elem != nil { + _elem = &dataset.ItemErrorGroup{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.Errors = append(p.Errors, _elem) } - p.Name = &tmp } - var _content *Content - if src.Content != nil { - _content = &Content{} - if err := _content.DeepCopy(src.Content); err != nil { + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { return err } } - p.Content = _content + p.BaseResp = _baseResp + + if src.Code != nil { + tmp := *src.Code + p.Code = &tmp + } + + if src.Msg != nil { + var tmp string + if *src.Msg != "" { + tmp = kutils.StringDeepCopy(*src.Msg) + } + p.Msg = &tmp + } return nil } -func (p *Content) FastRead(buf []byte) (int, error) { +func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { var err error var offset int var l int var fieldTypeId thrift.TType var fieldId int16 + var issetWorkspaceID bool = false + var issetEvaluatorRecordID bool = false + var issetSpanID bool = false + var issetStartTime bool = false + var issetCorrection bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -10190,12 +10848,13 @@ func (p *Content) FastRead(buf []byte) (int, error) { } switch fieldId { case 1: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I64 { l, err = p.FastReadField1(buf[offset:]) offset += l if err != nil { goto ReadFieldError } + issetWorkspaceID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -10203,13 +10862,14 @@ func (p *Content) FastRead(buf []byte) (int, error) { goto SkipFieldError } } - case 10: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField10(buf[offset:]) - offset += l + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l if err != nil { goto ReadFieldError } + issetEvaluatorRecordID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -10217,13 +10877,44 @@ func (p *Content) FastRead(buf []byte) (int, error) { goto SkipFieldError } } - case 11: + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetSpanID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetStartTime = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField11(buf[offset:]) + l, err = p.FastReadField5(buf[offset:]) offset += l if err != nil { goto ReadFieldError } + issetCorrection = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -10231,9 +10922,9 @@ func (p *Content) FastRead(buf []byte) (int, error) { goto SkipFieldError } } - case 12: - if fieldTypeId == thrift.LIST { - l, err = p.FastReadField12(buf[offset:]) + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) offset += l if err != nil { goto ReadFieldError @@ -10254,244 +10945,286 @@ func (p *Content) FastRead(buf []byte) (int, error) { } } + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorRecordID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetSpanID { + fieldId = 3 + goto RequiredFieldNotSetError + } + + if !issetStartTime { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetCorrection { + fieldId = 5 + goto RequiredFieldNotSetError + } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Content[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreRequest[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreRequest[fieldId])) } -func (p *Content) FastReadField1(buf []byte) (int, error) { +func (p *ChangeEvaluatorScoreRequest) FastReadField1(buf []byte) (int, error) { offset := 0 - var _field *ContentType - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v + _field = v } - p.ContentType = _field + p.WorkspaceID = _field return offset, nil } -func (p *Content) FastReadField10(buf []byte) (int, error) { +func (p *ChangeEvaluatorScoreRequest) FastReadField2(buf []byte) (int, error) { offset := 0 - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v + _field = v } - p.Text = _field + p.EvaluatorRecordID = _field return offset, nil } -func (p *Content) FastReadField11(buf []byte) (int, error) { +func (p *ChangeEvaluatorScoreRequest) FastReadField3(buf []byte) (int, error) { offset := 0 - _field := NewImage() - if l, err := _field.FastRead(buf[offset:]); err != nil { + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l + _field = v } - p.Image = _field + p.SpanID = _field return offset, nil } -func (p *Content) FastReadField12(buf []byte) (int, error) { +func (p *ChangeEvaluatorScoreRequest) FastReadField4(buf []byte) (int, error) { offset := 0 - _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) - offset += l - if err != nil { + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err + } else { + offset += l + _field = v } - _field := make([]*Content, 0, size) - values := make([]Content, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - if l, err := _elem.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } + p.StartTime = _field + return offset, nil +} - _field = append(_field, _elem) +func (p *ChangeEvaluatorScoreRequest) FastReadField5(buf []byte) (int, error) { + offset := 0 + _field := annotation.NewCorrection() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l } - p.MultiPart = _field + p.Correction = _field return offset, nil } -func (p *Content) FastWrite(buf []byte) int { +func (p *ChangeEvaluatorScoreRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *ChangeEvaluatorScoreRequest) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *Content) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *ChangeEvaluatorScoreRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField10(buf[offset:], w) - offset += p.fastWriteField11(buf[offset:], w) - offset += p.fastWriteField12(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset } -func (p *Content) BLength() int { +func (p *ChangeEvaluatorScoreRequest) BLength() int { l := 0 if p != nil { l += p.field1Length() - l += p.field10Length() - l += p.field11Length() - l += p.field12Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field255Length() } l += thrift.Binary.FieldStopLength() return l } -func (p *Content) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *ChangeEvaluatorScoreRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetContentType() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ContentType) - } + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) return offset } -func (p *Content) fastWriteField10(buf []byte, w thrift.NocopyWriter) int { +func (p *ChangeEvaluatorScoreRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetText() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 10) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Text) - } + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorRecordID) return offset } -func (p *Content) fastWriteField11(buf []byte, w thrift.NocopyWriter) int { +func (p *ChangeEvaluatorScoreRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetImage() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 11) - offset += p.Image.FastWriteNocopy(buf[offset:], w) - } + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.SpanID) return offset } -func (p *Content) fastWriteField12(buf []byte, w thrift.NocopyWriter) int { +func (p *ChangeEvaluatorScoreRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetMultiPart() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 12) - listBeginOffset := offset - offset += thrift.Binary.ListBeginLength() - var length int - for _, v := range p.MultiPart { - length++ - offset += v.FastWriteNocopy(buf[offset:], w) - } - thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 4) + offset += thrift.Binary.WriteI64(buf[offset:], p.StartTime) + return offset +} + +func (p *ChangeEvaluatorScoreRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 5) + offset += p.Correction.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *ChangeEvaluatorScoreRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) } return offset } -func (p *Content) field1Length() int { +func (p *ChangeEvaluatorScoreRequest) field1Length() int { l := 0 - if p.IsSetContentType() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.ContentType) - } + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() return l } -func (p *Content) field10Length() int { +func (p *ChangeEvaluatorScoreRequest) field2Length() int { l := 0 - if p.IsSetText() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Text) - } + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() return l } -func (p *Content) field11Length() int { +func (p *ChangeEvaluatorScoreRequest) field3Length() int { l := 0 - if p.IsSetImage() { - l += thrift.Binary.FieldBeginLength() - l += p.Image.BLength() - } + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.SpanID) return l } -func (p *Content) field12Length() int { +func (p *ChangeEvaluatorScoreRequest) field4Length() int { l := 0 - if p.IsSetMultiPart() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.ListBeginLength() - for _, v := range p.MultiPart { - _ = v - l += v.BLength() - } + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *ChangeEvaluatorScoreRequest) field5Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Correction.BLength() + return l +} + +func (p *ChangeEvaluatorScoreRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() } return l } -func (p *Content) DeepCopy(s interface{}) error { - src, ok := s.(*Content) +func (p *ChangeEvaluatorScoreRequest) DeepCopy(s interface{}) error { + src, ok := s.(*ChangeEvaluatorScoreRequest) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - if src.ContentType != nil { - tmp := *src.ContentType - p.ContentType = &tmp - } + p.WorkspaceID = src.WorkspaceID - if src.Text != nil { - var tmp string - if *src.Text != "" { - tmp = kutils.StringDeepCopy(*src.Text) - } - p.Text = &tmp + p.EvaluatorRecordID = src.EvaluatorRecordID + + if src.SpanID != "" { + p.SpanID = kutils.StringDeepCopy(src.SpanID) } - var _image *Image - if src.Image != nil { - _image = &Image{} - if err := _image.DeepCopy(src.Image); err != nil { + p.StartTime = src.StartTime + + var _correction *annotation.Correction + if src.Correction != nil { + _correction = &annotation.Correction{} + if err := _correction.DeepCopy(src.Correction); err != nil { return err } } - p.Image = _image - - if src.MultiPart != nil { - p.MultiPart = make([]*Content, 0, len(src.MultiPart)) - for _, elem := range src.MultiPart { - var _elem *Content - if elem != nil { - _elem = &Content{} - if err := _elem.DeepCopy(elem); err != nil { - return err - } - } + p.Correction = _correction - p.MultiPart = append(p.MultiPart, _elem) + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err } } + p.Base = _base return nil } -func (p *Image) FastRead(buf []byte) (int, error) { +func (p *ChangeEvaluatorScoreResponse) FastRead(buf []byte) (int, error) { var err error var offset int var l int var fieldTypeId thrift.TType var fieldId int16 + var issetAnnotation bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -10503,12 +11236,13 @@ func (p *Image) FastRead(buf []byte) (int, error) { } switch fieldId { case 1: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField1(buf[offset:]) offset += l if err != nil { goto ReadFieldError } + issetAnnotation = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -10516,9 +11250,9 @@ func (p *Image) FastRead(buf []byte) (int, error) { goto SkipFieldError } } - case 2: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField2(buf[offset:]) + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) offset += l if err != nil { goto ReadFieldError @@ -10539,137 +11273,2725 @@ func (p *Image) FastRead(buf []byte) (int, error) { } } + if !issetAnnotation { + fieldId = 1 + goto RequiredFieldNotSetError + } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Image[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ChangeEvaluatorScoreResponse[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ChangeEvaluatorScoreResponse[fieldId])) } -func (p *Image) FastReadField1(buf []byte) (int, error) { +func (p *ChangeEvaluatorScoreResponse) FastReadField1(buf []byte) (int, error) { offset := 0 + _field := annotation.NewAnnotation() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Annotation = _field + return offset, nil +} - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { +func (p *ChangeEvaluatorScoreResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v } - p.Name = _field + p.BaseResp = _field + return offset, nil +} + +func (p *ChangeEvaluatorScoreResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ChangeEvaluatorScoreResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ChangeEvaluatorScoreResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ChangeEvaluatorScoreResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Annotation.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *ChangeEvaluatorScoreResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ChangeEvaluatorScoreResponse) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Annotation.BLength() + return l +} + +func (p *ChangeEvaluatorScoreResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *ChangeEvaluatorScoreResponse) DeepCopy(s interface{}) error { + src, ok := s.(*ChangeEvaluatorScoreResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _annotation *annotation.Annotation + if src.Annotation != nil { + _annotation = &annotation.Annotation{} + if err := _annotation.DeepCopy(src.Annotation); err != nil { + return err + } + } + p.Annotation = _annotation + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *AnnotationEvaluator) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluatorVersionID bool = false + var issetEvaluatorName bool = false + var issetEvaluatorVersion bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorVersionID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorName = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorVersion = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetEvaluatorVersionID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorName { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorVersion { + fieldId = 3 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AnnotationEvaluator[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_AnnotationEvaluator[fieldId])) +} + +func (p *AnnotationEvaluator) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorVersionID = _field + return offset, nil +} + +func (p *AnnotationEvaluator) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorName = _field + return offset, nil +} + +func (p *AnnotationEvaluator) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorVersion = _field + return offset, nil +} + +func (p *AnnotationEvaluator) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *AnnotationEvaluator) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *AnnotationEvaluator) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *AnnotationEvaluator) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorVersionID) + return offset +} + +func (p *AnnotationEvaluator) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.EvaluatorName) + return offset +} + +func (p *AnnotationEvaluator) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.EvaluatorVersion) + return offset +} + +func (p *AnnotationEvaluator) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AnnotationEvaluator) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.EvaluatorName) + return l +} + +func (p *AnnotationEvaluator) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.EvaluatorVersion) + return l +} + +func (p *AnnotationEvaluator) DeepCopy(s interface{}) error { + src, ok := s.(*AnnotationEvaluator) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.EvaluatorVersionID = src.EvaluatorVersionID + + if src.EvaluatorName != "" { + p.EvaluatorName = kutils.StringDeepCopy(src.EvaluatorName) + } + + if src.EvaluatorVersion != "" { + p.EvaluatorVersion = kutils.StringDeepCopy(src.EvaluatorVersion) + } + + return nil +} + +func (p *ListAnnotationEvaluatorsRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsRequest[fieldId])) +} + +func (p *ListAnnotationEvaluatorsRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *ListAnnotationEvaluatorsRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Name = _field + return offset, nil +} + +func (p *ListAnnotationEvaluatorsRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *ListAnnotationEvaluatorsRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ListAnnotationEvaluatorsRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ListAnnotationEvaluatorsRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ListAnnotationEvaluatorsRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *ListAnnotationEvaluatorsRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + } + return offset +} + +func (p *ListAnnotationEvaluatorsRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ListAnnotationEvaluatorsRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *ListAnnotationEvaluatorsRequest) field2Length() int { + l := 0 + if p.IsSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Name) + } + return l +} + +func (p *ListAnnotationEvaluatorsRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *ListAnnotationEvaluatorsRequest) DeepCopy(s interface{}) error { + src, ok := s.(*ListAnnotationEvaluatorsRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.WorkspaceID = src.WorkspaceID + + if src.Name != nil { + var tmp string + if *src.Name != "" { + tmp = kutils.StringDeepCopy(*src.Name) + } + p.Name = &tmp + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *ListAnnotationEvaluatorsResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluators bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluators = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetEvaluators { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ListAnnotationEvaluatorsResponse[fieldId])) +} + +func (p *ListAnnotationEvaluatorsResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*AnnotationEvaluator, 0, size) + values := make([]AnnotationEvaluator, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.Evaluators = _field + return offset, nil +} + +func (p *ListAnnotationEvaluatorsResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *ListAnnotationEvaluatorsResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ListAnnotationEvaluatorsResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ListAnnotationEvaluatorsResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ListAnnotationEvaluatorsResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.Evaluators { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + return offset +} + +func (p *ListAnnotationEvaluatorsResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ListAnnotationEvaluatorsResponse) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.Evaluators { + _ = v + l += v.BLength() + } + return l +} + +func (p *ListAnnotationEvaluatorsResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *ListAnnotationEvaluatorsResponse) DeepCopy(s interface{}) error { + src, ok := s.(*ListAnnotationEvaluatorsResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Evaluators != nil { + p.Evaluators = make([]*AnnotationEvaluator, 0, len(src.Evaluators)) + for _, elem := range src.Evaluators { + var _elem *AnnotationEvaluator + if elem != nil { + _elem = &AnnotationEvaluator{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.Evaluators = append(p.Evaluators, _elem) + } + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + var issetTraceID bool = false + var issetSpanIds bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetTraceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetSpanIds = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 7: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField7(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetTraceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetSpanIds { + fieldId = 3 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ExtractSpanInfoRequest[fieldId])) +} + +func (p *ExtractSpanInfoRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.TraceID = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField3(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]string, 0, size) + for i := 0; i < size; i++ { + var _elem string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _elem = v + } + + _field = append(_field, _elem) + } + p.SpanIds = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.StartTime = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField5(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.EndTime = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field *common.PlatformType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.PlatformType = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField7(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*task.FieldMapping, 0, size) + values := make([]task.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldMappings = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *ExtractSpanInfoRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ExtractSpanInfoRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField7(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ExtractSpanInfoRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field6Length() + l += p.field7Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ExtractSpanInfoRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TraceID) + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 3) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.SpanIds { + length++ + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, v) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRING, length) + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetStartTime() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 4) + offset += thrift.Binary.WriteI64(buf[offset:], *p.StartTime) + } + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEndTime() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 5) + offset += thrift.Binary.WriteI64(buf[offset:], *p.EndTime) + } + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetPlatformType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 6) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.PlatformType) + } + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFieldMappings() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 7) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldMappings { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *ExtractSpanInfoRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ExtractSpanInfoRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *ExtractSpanInfoRequest) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.TraceID) + return l +} + +func (p *ExtractSpanInfoRequest) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.SpanIds { + _ = v + l += thrift.Binary.StringLengthNocopy(v) + } + return l +} + +func (p *ExtractSpanInfoRequest) field4Length() int { + l := 0 + if p.IsSetStartTime() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *ExtractSpanInfoRequest) field5Length() int { + l := 0 + if p.IsSetEndTime() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *ExtractSpanInfoRequest) field6Length() int { + l := 0 + if p.IsSetPlatformType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.PlatformType) + } + return l +} + +func (p *ExtractSpanInfoRequest) field7Length() int { + l := 0 + if p.IsSetFieldMappings() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldMappings { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *ExtractSpanInfoRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *ExtractSpanInfoRequest) DeepCopy(s interface{}) error { + src, ok := s.(*ExtractSpanInfoRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.WorkspaceID = src.WorkspaceID + + if src.TraceID != "" { + p.TraceID = kutils.StringDeepCopy(src.TraceID) + } + + if src.SpanIds != nil { + p.SpanIds = make([]string, 0, len(src.SpanIds)) + for _, elem := range src.SpanIds { + var _elem string + if elem != "" { + _elem = kutils.StringDeepCopy(elem) + } + p.SpanIds = append(p.SpanIds, _elem) + } + } + + if src.StartTime != nil { + tmp := *src.StartTime + p.StartTime = &tmp + } + + if src.EndTime != nil { + tmp := *src.EndTime + p.EndTime = &tmp + } + + if src.PlatformType != nil { + tmp := *src.PlatformType + p.PlatformType = &tmp + } + + if src.FieldMappings != nil { + p.FieldMappings = make([]*task.FieldMapping, 0, len(src.FieldMappings)) + for _, elem := range src.FieldMappings { + var _elem *task.FieldMapping + if elem != nil { + _elem = &task.FieldMapping{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldMappings = append(p.FieldMappings, _elem) + } + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *FieldData) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldData[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *FieldData) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Key = _field + return offset, nil +} + +func (p *FieldData) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Name = _field + return offset, nil +} + +func (p *FieldData) FastReadField3(buf []byte) (int, error) { + offset := 0 + _field := NewContent() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Content = _field + return offset, nil +} + +func (p *FieldData) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *FieldData) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *FieldData) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *FieldData) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetKey() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Key) + } + return offset +} + +func (p *FieldData) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + } + return offset +} + +func (p *FieldData) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetContent() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 3) + offset += p.Content.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *FieldData) field1Length() int { + l := 0 + if p.IsSetKey() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Key) + } + return l +} + +func (p *FieldData) field2Length() int { + l := 0 + if p.IsSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Name) + } + return l +} + +func (p *FieldData) field3Length() int { + l := 0 + if p.IsSetContent() { + l += thrift.Binary.FieldBeginLength() + l += p.Content.BLength() + } + return l +} + +func (p *FieldData) DeepCopy(s interface{}) error { + src, ok := s.(*FieldData) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Key != nil { + var tmp string + if *src.Key != "" { + tmp = kutils.StringDeepCopy(*src.Key) + } + p.Key = &tmp + } + + if src.Name != nil { + var tmp string + if *src.Name != "" { + tmp = kutils.StringDeepCopy(*src.Name) + } + p.Name = &tmp + } + + var _content *Content + if src.Content != nil { + _content = &Content{} + if err := _content.DeepCopy(src.Content); err != nil { + return err + } + } + p.Content = _content + + return nil +} + +func (p *Content) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 10: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField10(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 11: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField11(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 12: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField12(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Content[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *Content) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *ContentType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ContentType = _field + return offset, nil +} + +func (p *Content) FastReadField10(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Text = _field + return offset, nil +} + +func (p *Content) FastReadField11(buf []byte) (int, error) { + offset := 0 + _field := NewImage() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Image = _field + return offset, nil +} + +func (p *Content) FastReadField12(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*Content, 0, size) + values := make([]Content, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.MultiPart = _field + return offset, nil +} + +func (p *Content) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *Content) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField10(buf[offset:], w) + offset += p.fastWriteField11(buf[offset:], w) + offset += p.fastWriteField12(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *Content) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field10Length() + l += p.field11Length() + l += p.field12Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *Content) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetContentType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ContentType) + } + return offset +} + +func (p *Content) fastWriteField10(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetText() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 10) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Text) + } + return offset +} + +func (p *Content) fastWriteField11(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetImage() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 11) + offset += p.Image.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *Content) fastWriteField12(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetMultiPart() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 12) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.MultiPart { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *Content) field1Length() int { + l := 0 + if p.IsSetContentType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.ContentType) + } + return l +} + +func (p *Content) field10Length() int { + l := 0 + if p.IsSetText() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Text) + } + return l +} + +func (p *Content) field11Length() int { + l := 0 + if p.IsSetImage() { + l += thrift.Binary.FieldBeginLength() + l += p.Image.BLength() + } + return l +} + +func (p *Content) field12Length() int { + l := 0 + if p.IsSetMultiPart() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.MultiPart { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *Content) DeepCopy(s interface{}) error { + src, ok := s.(*Content) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.ContentType != nil { + tmp := *src.ContentType + p.ContentType = &tmp + } + + if src.Text != nil { + var tmp string + if *src.Text != "" { + tmp = kutils.StringDeepCopy(*src.Text) + } + p.Text = &tmp + } + + var _image *Image + if src.Image != nil { + _image = &Image{} + if err := _image.DeepCopy(src.Image); err != nil { + return err + } + } + p.Image = _image + + if src.MultiPart != nil { + p.MultiPart = make([]*Content, 0, len(src.MultiPart)) + for _, elem := range src.MultiPart { + var _elem *Content + if elem != nil { + _elem = &Content{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.MultiPart = append(p.MultiPart, _elem) + } + } + + return nil +} + +func (p *Image) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Image[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *Image) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Name = _field + return offset, nil +} + +func (p *Image) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.URL = _field + return offset, nil +} + +func (p *Image) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *Image) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *Image) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *Image) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + } + return offset +} + +func (p *Image) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetURL() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.URL) + } + return offset +} + +func (p *Image) field1Length() int { + l := 0 + if p.IsSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Name) + } + return l +} + +func (p *Image) field2Length() int { + l := 0 + if p.IsSetURL() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.URL) + } + return l +} + +func (p *Image) DeepCopy(s interface{}) error { + src, ok := s.(*Image) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Name != nil { + var tmp string + if *src.Name != "" { + tmp = kutils.StringDeepCopy(*src.Name) + } + p.Name = &tmp + } + + if src.URL != nil { + var tmp string + if *src.URL != "" { + tmp = kutils.StringDeepCopy(*src.URL) + } + p.URL = &tmp + } + + return nil +} + +func (p *SpanInfo) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetSpanID bool = false + var issetFieldList bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetSpanID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetFieldList = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetSpanID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetFieldList { + fieldId = 2 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanInfo[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_SpanInfo[fieldId])) +} + +func (p *SpanInfo) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.SpanID = _field + return offset, nil +} + +func (p *SpanInfo) FastReadField2(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*FieldData, 0, size) + values := make([]FieldData, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldList = _field + return offset, nil +} + +func (p *SpanInfo) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *SpanInfo) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *SpanInfo) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *SpanInfo) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.SpanID) + return offset +} + +func (p *SpanInfo) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldList { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + return offset +} + +func (p *SpanInfo) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.SpanID) + return l +} + +func (p *SpanInfo) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldList { + _ = v + l += v.BLength() + } + return l +} + +func (p *SpanInfo) DeepCopy(s interface{}) error { + src, ok := s.(*SpanInfo) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.SpanID != "" { + p.SpanID = kutils.StringDeepCopy(src.SpanID) + } + + if src.FieldList != nil { + p.FieldList = make([]*FieldData, 0, len(src.FieldList)) + for _, elem := range src.FieldList { + var _elem *FieldData + if elem != nil { + _elem = &FieldData{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldList = append(p.FieldList, _elem) + } + } + + return nil +} + +func (p *ExtractSpanInfoResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetSpanInfos bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetSpanInfos = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetSpanInfos { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ExtractSpanInfoResponse[fieldId])) +} + +func (p *ExtractSpanInfoResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*SpanInfo, 0, size) + values := make([]SpanInfo, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.SpanInfos = _field + return offset, nil +} + +func (p *ExtractSpanInfoResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *ExtractSpanInfoResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *ExtractSpanInfoResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *ExtractSpanInfoResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *ExtractSpanInfoResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.SpanInfos { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + return offset +} + +func (p *ExtractSpanInfoResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseResp() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *ExtractSpanInfoResponse) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.SpanInfos { + _ = v + l += v.BLength() + } + return l +} + +func (p *ExtractSpanInfoResponse) field255Length() int { + l := 0 + if p.IsSetBaseResp() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + } + return l +} + +func (p *ExtractSpanInfoResponse) DeepCopy(s interface{}) error { + src, ok := s.(*ExtractSpanInfoResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.SpanInfos != nil { + p.SpanInfos = make([]*SpanInfo, 0, len(src.SpanInfos)) + for _, elem := range src.SpanInfos { + var _elem *SpanInfo + if elem != nil { + _elem = &SpanInfo{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.SpanInfos = append(p.SpanInfos, _elem) + } + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *TraceServiceListSpansArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *TraceServiceListSpansArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewListSpansRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Req = _field + return offset, nil +} + +func (p *TraceServiceListSpansArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *TraceServiceListSpansArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *TraceServiceListSpansArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *TraceServiceListSpansArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *TraceServiceListSpansArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Req.BLength() + return l +} + +func (p *TraceServiceListSpansArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListSpansArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _req *ListSpansRequest + if src.Req != nil { + _req = &ListSpansRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err + } + } + p.Req = _req + + return nil +} + +func (p *TraceServiceListSpansResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *Image) FastReadField2(buf []byte) (int, error) { +func (p *TraceServiceListSpansResult) FastReadField0(buf []byte) (int, error) { offset := 0 - - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + _field := NewListSpansResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v } - p.URL = _field + p.Success = _field return offset, nil } -func (p *Image) FastWrite(buf []byte) int { +func (p *TraceServiceListSpansResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *Image) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListSpansResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField0(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset } -func (p *Image) BLength() int { +func (p *TraceServiceListSpansResult) BLength() int { l := 0 if p != nil { - l += p.field1Length() - l += p.field2Length() + l += p.field0Length() } l += thrift.Binary.FieldStopLength() return l } -func (p *Image) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetName() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) - } - return offset -} - -func (p *Image) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListSpansResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetURL() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.URL) + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) } return offset } -func (p *Image) field1Length() int { - l := 0 - if p.IsSetName() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Name) - } - return l -} - -func (p *Image) field2Length() int { +func (p *TraceServiceListSpansResult) field0Length() int { l := 0 - if p.IsSetURL() { + if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.URL) + l += p.Success.BLength() } return l } -func (p *Image) DeepCopy(s interface{}) error { - src, ok := s.(*Image) +func (p *TraceServiceListSpansResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListSpansResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - if src.Name != nil { - var tmp string - if *src.Name != "" { - tmp = kutils.StringDeepCopy(*src.Name) - } - p.Name = &tmp - } - - if src.URL != nil { - var tmp string - if *src.URL != "" { - tmp = kutils.StringDeepCopy(*src.URL) + var _success *ListSpansResponse + if src.Success != nil { + _success = &ListSpansResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err } - p.URL = &tmp } + p.Success = _success return nil } -func (p *SpanInfo) FastRead(buf []byte) (int, error) { +func (p *TraceServiceGetTraceArgs) FastRead(buf []byte) (int, error) { var err error var offset int var l int var fieldTypeId thrift.TType var fieldId int16 - var issetSpanID bool = false - var issetFieldList bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -10681,28 +14003,12 @@ func (p *SpanInfo) FastRead(buf []byte) (int, error) { } switch fieldId { case 1: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField1(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetSpanID = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 2: - if fieldTypeId == thrift.LIST { - l, err = p.FastReadField2(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetFieldList = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -10719,192 +14025,101 @@ func (p *SpanInfo) FastRead(buf []byte) (int, error) { } } - if !issetSpanID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetFieldList { - fieldId = 2 - goto RequiredFieldNotSetError - } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanInfo[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_SpanInfo[fieldId])) } -func (p *SpanInfo) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceGetTraceArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - - var _field string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + _field := NewGetTraceRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = v - } - p.SpanID = _field - return offset, nil -} - -func (p *SpanInfo) FastReadField2(buf []byte) (int, error) { - offset := 0 - - _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) - offset += l - if err != nil { - return offset, err - } - _field := make([]*FieldData, 0, size) - values := make([]FieldData, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - if l, err := _elem.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - - _field = append(_field, _elem) } - p.FieldList = _field + p.Req = _field return offset, nil } -func (p *SpanInfo) FastWrite(buf []byte) int { +func (p *TraceServiceGetTraceArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *SpanInfo) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTraceArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset } -func (p *SpanInfo) BLength() int { +func (p *TraceServiceGetTraceArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() - l += p.field2Length() } l += thrift.Binary.FieldStopLength() return l } -func (p *SpanInfo) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.SpanID) - return offset -} - -func (p *SpanInfo) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTraceArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) - listBeginOffset := offset - offset += thrift.Binary.ListBeginLength() - var length int - for _, v := range p.FieldList { - length++ - offset += v.FastWriteNocopy(buf[offset:], w) - } - thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *SpanInfo) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(p.SpanID) - return l -} - -func (p *SpanInfo) field2Length() int { +func (p *TraceServiceGetTraceArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.ListBeginLength() - for _, v := range p.FieldList { - _ = v - l += v.BLength() - } + l += p.Req.BLength() return l } -func (p *SpanInfo) DeepCopy(s interface{}) error { - src, ok := s.(*SpanInfo) +func (p *TraceServiceGetTraceArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTraceArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - if src.SpanID != "" { - p.SpanID = kutils.StringDeepCopy(src.SpanID) - } - - if src.FieldList != nil { - p.FieldList = make([]*FieldData, 0, len(src.FieldList)) - for _, elem := range src.FieldList { - var _elem *FieldData - if elem != nil { - _elem = &FieldData{} - if err := _elem.DeepCopy(elem); err != nil { - return err - } - } - - p.FieldList = append(p.FieldList, _elem) + var _req *GetTraceRequest + if src.Req != nil { + _req = &GetTraceRequest{} + if err := _req.DeepCopy(src.Req); err != nil { + return err } } + p.Req = _req return nil } -func (p *ExtractSpanInfoResponse) FastRead(buf []byte) (int, error) { +func (p *TraceServiceGetTraceResult) FastRead(buf []byte) (int, error) { var err error var offset int var l int var fieldTypeId thrift.TType var fieldId int16 - var issetSpanInfos bool = false - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.LIST { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetSpanInfos = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 255: + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField255(buf[offset:]) + l, err = p.FastReadField0(buf[offset:]) offset += l if err != nil { goto ReadFieldError @@ -10925,159 +14140,86 @@ func (p *ExtractSpanInfoResponse) FastRead(buf []byte) (int, error) { } } - if !issetSpanInfos { - fieldId = 1 - goto RequiredFieldNotSetError - } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ExtractSpanInfoResponse[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_ExtractSpanInfoResponse[fieldId])) -} - -func (p *ExtractSpanInfoResponse) FastReadField1(buf []byte) (int, error) { - offset := 0 - - _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) - offset += l - if err != nil { - return offset, err - } - _field := make([]*SpanInfo, 0, size) - values := make([]SpanInfo, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - if l, err := _elem.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - - _field = append(_field, _elem) - } - p.SpanInfos = _field - return offset, nil } -func (p *ExtractSpanInfoResponse) FastReadField255(buf []byte) (int, error) { +func (p *TraceServiceGetTraceResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := base.NewBaseResp() + _field := NewGetTraceResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { offset += l } - p.BaseResp = _field + p.Success = _field return offset, nil } -func (p *ExtractSpanInfoResponse) FastWrite(buf []byte) int { +func (p *TraceServiceGetTraceResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *ExtractSpanInfoResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTraceResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField255(buf[offset:], w) + offset += p.fastWriteField0(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset } -func (p *ExtractSpanInfoResponse) BLength() int { +func (p *TraceServiceGetTraceResult) BLength() int { l := 0 if p != nil { - l += p.field1Length() - l += p.field255Length() + l += p.field0Length() } l += thrift.Binary.FieldStopLength() return l } -func (p *ExtractSpanInfoResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) - listBeginOffset := offset - offset += thrift.Binary.ListBeginLength() - var length int - for _, v := range p.SpanInfos { - length++ - offset += v.FastWriteNocopy(buf[offset:], w) - } - thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) - return offset -} - -func (p *ExtractSpanInfoResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTraceResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetBaseResp() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) - offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) } return offset } -func (p *ExtractSpanInfoResponse) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.ListBeginLength() - for _, v := range p.SpanInfos { - _ = v - l += v.BLength() - } - return l -} - -func (p *ExtractSpanInfoResponse) field255Length() int { +func (p *TraceServiceGetTraceResult) field0Length() int { l := 0 - if p.IsSetBaseResp() { + if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() - l += p.BaseResp.BLength() + l += p.Success.BLength() } return l } -func (p *ExtractSpanInfoResponse) DeepCopy(s interface{}) error { - src, ok := s.(*ExtractSpanInfoResponse) +func (p *TraceServiceGetTraceResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTraceResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - if src.SpanInfos != nil { - p.SpanInfos = make([]*SpanInfo, 0, len(src.SpanInfos)) - for _, elem := range src.SpanInfos { - var _elem *SpanInfo - if elem != nil { - _elem = &SpanInfo{} - if err := _elem.DeepCopy(elem); err != nil { - return err - } - } - - p.SpanInfos = append(p.SpanInfos, _elem) - } - } - - var _baseResp *base.BaseResp - if src.BaseResp != nil { - _baseResp = &base.BaseResp{} - if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + var _success *GetTraceResponse + if src.Success != nil { + _success = &GetTraceResponse{} + if err := _success.DeepCopy(src.Success); err != nil { return err } } - p.BaseResp = _baseResp + p.Success = _success return nil } -func (p *TraceServiceListSpansArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -11121,14 +14263,14 @@ func (p *TraceServiceListSpansArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListSpansArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewListSpansRequest() + _field := NewBatchGetTracesAdvanceInfoRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -11138,11 +14280,11 @@ func (p *TraceServiceListSpansArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListSpansArgs) FastWrite(buf []byte) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListSpansArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -11151,7 +14293,7 @@ func (p *TraceServiceListSpansArgs) FastWriteNocopy(buf []byte, w thrift.NocopyW return offset } -func (p *TraceServiceListSpansArgs) BLength() int { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -11160,29 +14302,29 @@ func (p *TraceServiceListSpansArgs) BLength() int { return l } -func (p *TraceServiceListSpansArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceListSpansArgs) field1Length() int { +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceListSpansArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListSpansArgs) +func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ListSpansRequest + var _req *BatchGetTracesAdvanceInfoRequest if src.Req != nil { - _req = &ListSpansRequest{} + _req = &BatchGetTracesAdvanceInfoRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -11192,7 +14334,7 @@ func (p *TraceServiceListSpansArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListSpansResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -11236,14 +14378,14 @@ func (p *TraceServiceListSpansResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListSpansResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListSpansResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewListSpansResponse() + _field := NewBatchGetTracesAdvanceInfoResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -11253,11 +14395,11 @@ func (p *TraceServiceListSpansResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListSpansResult) FastWrite(buf []byte) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListSpansResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -11266,7 +14408,7 @@ func (p *TraceServiceListSpansResult) FastWriteNocopy(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListSpansResult) BLength() int { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -11275,7 +14417,7 @@ func (p *TraceServiceListSpansResult) BLength() int { return l } -func (p *TraceServiceListSpansResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -11284,7 +14426,7 @@ func (p *TraceServiceListSpansResult) fastWriteField0(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListSpansResult) field0Length() int { +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -11293,15 +14435,15 @@ func (p *TraceServiceListSpansResult) field0Length() int { return l } -func (p *TraceServiceListSpansResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListSpansResult) +func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ListSpansResponse + var _success *BatchGetTracesAdvanceInfoResponse if src.Success != nil { - _success = &ListSpansResponse{} + _success = &BatchGetTracesAdvanceInfoResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -11311,7 +14453,7 @@ func (p *TraceServiceListSpansResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceGetTraceArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceIngestTracesInnerArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -11355,14 +14497,14 @@ func (p *TraceServiceGetTraceArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceGetTraceArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceIngestTracesInnerArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewGetTraceRequest() + _field := NewIngestTracesRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -11372,11 +14514,11 @@ func (p *TraceServiceGetTraceArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceGetTraceArgs) FastWrite(buf []byte) int { +func (p *TraceServiceIngestTracesInnerArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceGetTraceArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceIngestTracesInnerArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -11385,7 +14527,7 @@ func (p *TraceServiceGetTraceArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWr return offset } -func (p *TraceServiceGetTraceArgs) BLength() int { +func (p *TraceServiceIngestTracesInnerArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -11394,29 +14536,29 @@ func (p *TraceServiceGetTraceArgs) BLength() int { return l } -func (p *TraceServiceGetTraceArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceIngestTracesInnerArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceGetTraceArgs) field1Length() int { +func (p *TraceServiceIngestTracesInnerArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceGetTraceArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTraceArgs) +func (p *TraceServiceIngestTracesInnerArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceIngestTracesInnerArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *GetTraceRequest + var _req *IngestTracesRequest if src.Req != nil { - _req = &GetTraceRequest{} + _req = &IngestTracesRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -11426,7 +14568,7 @@ func (p *TraceServiceGetTraceArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceGetTraceResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceIngestTracesInnerResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -11470,14 +14612,14 @@ func (p *TraceServiceGetTraceResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTraceResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceGetTraceResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceIngestTracesInnerResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewGetTraceResponse() + _field := NewIngestTracesResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -11487,11 +14629,11 @@ func (p *TraceServiceGetTraceResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceGetTraceResult) FastWrite(buf []byte) int { +func (p *TraceServiceIngestTracesInnerResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceGetTraceResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceIngestTracesInnerResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -11500,7 +14642,7 @@ func (p *TraceServiceGetTraceResult) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceGetTraceResult) BLength() int { +func (p *TraceServiceIngestTracesInnerResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -11509,7 +14651,7 @@ func (p *TraceServiceGetTraceResult) BLength() int { return l } -func (p *TraceServiceGetTraceResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceIngestTracesInnerResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -11518,7 +14660,7 @@ func (p *TraceServiceGetTraceResult) fastWriteField0(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceGetTraceResult) field0Length() int { +func (p *TraceServiceIngestTracesInnerResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -11527,15 +14669,15 @@ func (p *TraceServiceGetTraceResult) field0Length() int { return l } -func (p *TraceServiceGetTraceResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTraceResult) +func (p *TraceServiceIngestTracesInnerResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceIngestTracesInnerResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *GetTraceResponse + var _success *IngestTracesResponse if src.Success != nil { - _success = &GetTraceResponse{} + _success = &IngestTracesResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -11545,7 +14687,7 @@ func (p *TraceServiceGetTraceResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceGetTracesMetaInfoArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -11589,14 +14731,14 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastRead(buf []byte) (int, e ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceGetTracesMetaInfoArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewBatchGetTracesAdvanceInfoRequest() + _field := NewGetTracesMetaInfoRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -11606,11 +14748,11 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastReadField1(buf []byte) ( return offset, nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWrite(buf []byte) int { +func (p *TraceServiceGetTracesMetaInfoArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTracesMetaInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -11619,7 +14761,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) FastWriteNocopy(buf []byte, return offset } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) BLength() int { +func (p *TraceServiceGetTracesMetaInfoArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -11628,29 +14770,29 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) BLength() int { return l } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTracesMetaInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) field1Length() int { +func (p *TraceServiceGetTracesMetaInfoArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoArgs) +func (p *TraceServiceGetTracesMetaInfoArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTracesMetaInfoArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *BatchGetTracesAdvanceInfoRequest + var _req *GetTracesMetaInfoRequest if src.Req != nil { - _req = &BatchGetTracesAdvanceInfoRequest{} + _req = &GetTracesMetaInfoRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -11660,7 +14802,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoArgs) DeepCopy(s interface{}) erro return nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceGetTracesMetaInfoResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -11704,14 +14846,14 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastRead(buf []byte) (int, ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceBatchGetTracesAdvanceInfoResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceGetTracesMetaInfoResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewBatchGetTracesAdvanceInfoResponse() + _field := NewGetTracesMetaInfoResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -11721,11 +14863,11 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastReadField0(buf []byte) return offset, nil } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWrite(buf []byte) int { +func (p *TraceServiceGetTracesMetaInfoResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTracesMetaInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -11734,7 +14876,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) FastWriteNocopy(buf []byte return offset } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) BLength() int { +func (p *TraceServiceGetTracesMetaInfoResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -11743,7 +14885,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) BLength() int { return l } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceGetTracesMetaInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -11752,7 +14894,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) fastWriteField0(buf []byte return offset } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) field0Length() int { +func (p *TraceServiceGetTracesMetaInfoResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -11761,15 +14903,15 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) field0Length() int { return l } -func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceBatchGetTracesAdvanceInfoResult) +func (p *TraceServiceGetTracesMetaInfoResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceGetTracesMetaInfoResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *BatchGetTracesAdvanceInfoResponse + var _success *GetTracesMetaInfoResponse if src.Success != nil { - _success = &BatchGetTracesAdvanceInfoResponse{} + _success = &GetTracesMetaInfoResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -11779,7 +14921,7 @@ func (p *TraceServiceBatchGetTracesAdvanceInfoResult) DeepCopy(s interface{}) er return nil } -func (p *TraceServiceIngestTracesInnerArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateViewArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -11823,14 +14965,14 @@ func (p *TraceServiceIngestTracesInnerArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceIngestTracesInnerArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceCreateViewArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewIngestTracesRequest() + _field := NewCreateViewRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -11840,11 +14982,11 @@ func (p *TraceServiceIngestTracesInnerArgs) FastReadField1(buf []byte) (int, err return offset, nil } -func (p *TraceServiceIngestTracesInnerArgs) FastWrite(buf []byte) int { +func (p *TraceServiceCreateViewArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceIngestTracesInnerArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -11853,7 +14995,7 @@ func (p *TraceServiceIngestTracesInnerArgs) FastWriteNocopy(buf []byte, w thrift return offset } -func (p *TraceServiceIngestTracesInnerArgs) BLength() int { +func (p *TraceServiceCreateViewArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -11862,29 +15004,29 @@ func (p *TraceServiceIngestTracesInnerArgs) BLength() int { return l } -func (p *TraceServiceIngestTracesInnerArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceIngestTracesInnerArgs) field1Length() int { +func (p *TraceServiceCreateViewArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceIngestTracesInnerArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceIngestTracesInnerArgs) +func (p *TraceServiceCreateViewArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateViewArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *IngestTracesRequest + var _req *CreateViewRequest if src.Req != nil { - _req = &IngestTracesRequest{} + _req = &CreateViewRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -11894,7 +15036,7 @@ func (p *TraceServiceIngestTracesInnerArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceIngestTracesInnerResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateViewResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -11938,14 +15080,14 @@ func (p *TraceServiceIngestTracesInnerResult) FastRead(buf []byte) (int, error) ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceIngestTracesInnerResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceIngestTracesInnerResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceCreateViewResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewIngestTracesResponse() + _field := NewCreateViewResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -11955,11 +15097,11 @@ func (p *TraceServiceIngestTracesInnerResult) FastReadField0(buf []byte) (int, e return offset, nil } -func (p *TraceServiceIngestTracesInnerResult) FastWrite(buf []byte) int { +func (p *TraceServiceCreateViewResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceIngestTracesInnerResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -11968,7 +15110,7 @@ func (p *TraceServiceIngestTracesInnerResult) FastWriteNocopy(buf []byte, w thri return offset } -func (p *TraceServiceIngestTracesInnerResult) BLength() int { +func (p *TraceServiceCreateViewResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -11977,7 +15119,7 @@ func (p *TraceServiceIngestTracesInnerResult) BLength() int { return l } -func (p *TraceServiceIngestTracesInnerResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -11986,7 +15128,7 @@ func (p *TraceServiceIngestTracesInnerResult) fastWriteField0(buf []byte, w thri return offset } -func (p *TraceServiceIngestTracesInnerResult) field0Length() int { +func (p *TraceServiceCreateViewResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -11995,15 +15137,15 @@ func (p *TraceServiceIngestTracesInnerResult) field0Length() int { return l } -func (p *TraceServiceIngestTracesInnerResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceIngestTracesInnerResult) +func (p *TraceServiceCreateViewResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateViewResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *IngestTracesResponse + var _success *CreateViewResponse if src.Success != nil { - _success = &IngestTracesResponse{} + _success = &CreateViewResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -12013,7 +15155,7 @@ func (p *TraceServiceIngestTracesInnerResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceGetTracesMetaInfoArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateViewArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -12057,14 +15199,14 @@ func (p *TraceServiceGetTracesMetaInfoArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceGetTracesMetaInfoArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceUpdateViewArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewGetTracesMetaInfoRequest() + _field := NewUpdateViewRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -12074,11 +15216,11 @@ func (p *TraceServiceGetTracesMetaInfoArgs) FastReadField1(buf []byte) (int, err return offset, nil } -func (p *TraceServiceGetTracesMetaInfoArgs) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateViewArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceGetTracesMetaInfoArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -12087,7 +15229,7 @@ func (p *TraceServiceGetTracesMetaInfoArgs) FastWriteNocopy(buf []byte, w thrift return offset } -func (p *TraceServiceGetTracesMetaInfoArgs) BLength() int { +func (p *TraceServiceUpdateViewArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -12096,29 +15238,29 @@ func (p *TraceServiceGetTracesMetaInfoArgs) BLength() int { return l } -func (p *TraceServiceGetTracesMetaInfoArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceGetTracesMetaInfoArgs) field1Length() int { +func (p *TraceServiceUpdateViewArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceGetTracesMetaInfoArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTracesMetaInfoArgs) +func (p *TraceServiceUpdateViewArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateViewArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *GetTracesMetaInfoRequest + var _req *UpdateViewRequest if src.Req != nil { - _req = &GetTracesMetaInfoRequest{} + _req = &UpdateViewRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -12128,7 +15270,7 @@ func (p *TraceServiceGetTracesMetaInfoArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceGetTracesMetaInfoResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateViewResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -12172,14 +15314,14 @@ func (p *TraceServiceGetTracesMetaInfoResult) FastRead(buf []byte) (int, error) ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceGetTracesMetaInfoResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceGetTracesMetaInfoResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceUpdateViewResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewGetTracesMetaInfoResponse() + _field := NewUpdateViewResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -12189,11 +15331,11 @@ func (p *TraceServiceGetTracesMetaInfoResult) FastReadField0(buf []byte) (int, e return offset, nil } -func (p *TraceServiceGetTracesMetaInfoResult) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateViewResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceGetTracesMetaInfoResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -12202,7 +15344,7 @@ func (p *TraceServiceGetTracesMetaInfoResult) FastWriteNocopy(buf []byte, w thri return offset } -func (p *TraceServiceGetTracesMetaInfoResult) BLength() int { +func (p *TraceServiceUpdateViewResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -12211,7 +15353,7 @@ func (p *TraceServiceGetTracesMetaInfoResult) BLength() int { return l } -func (p *TraceServiceGetTracesMetaInfoResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -12220,7 +15362,7 @@ func (p *TraceServiceGetTracesMetaInfoResult) fastWriteField0(buf []byte, w thri return offset } -func (p *TraceServiceGetTracesMetaInfoResult) field0Length() int { +func (p *TraceServiceUpdateViewResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -12229,15 +15371,15 @@ func (p *TraceServiceGetTracesMetaInfoResult) field0Length() int { return l } -func (p *TraceServiceGetTracesMetaInfoResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceGetTracesMetaInfoResult) +func (p *TraceServiceUpdateViewResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateViewResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *GetTracesMetaInfoResponse + var _success *UpdateViewResponse if src.Success != nil { - _success = &GetTracesMetaInfoResponse{} + _success = &UpdateViewResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -12247,7 +15389,7 @@ func (p *TraceServiceGetTracesMetaInfoResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateViewArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceDeleteViewArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -12291,14 +15433,14 @@ func (p *TraceServiceCreateViewArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateViewArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceDeleteViewArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewCreateViewRequest() + _field := NewDeleteViewRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -12308,11 +15450,11 @@ func (p *TraceServiceCreateViewArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceCreateViewArgs) FastWrite(buf []byte) int { +func (p *TraceServiceDeleteViewArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -12321,7 +15463,7 @@ func (p *TraceServiceCreateViewArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceCreateViewArgs) BLength() int { +func (p *TraceServiceDeleteViewArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -12330,29 +15472,29 @@ func (p *TraceServiceCreateViewArgs) BLength() int { return l } -func (p *TraceServiceCreateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceCreateViewArgs) field1Length() int { +func (p *TraceServiceDeleteViewArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceCreateViewArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateViewArgs) +func (p *TraceServiceDeleteViewArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteViewArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *CreateViewRequest + var _req *DeleteViewRequest if src.Req != nil { - _req = &CreateViewRequest{} + _req = &DeleteViewRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -12362,7 +15504,7 @@ func (p *TraceServiceCreateViewArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateViewResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceDeleteViewResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -12406,14 +15548,14 @@ func (p *TraceServiceCreateViewResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateViewResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateViewResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceDeleteViewResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewCreateViewResponse() + _field := NewDeleteViewResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -12423,11 +15565,11 @@ func (p *TraceServiceCreateViewResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceCreateViewResult) FastWrite(buf []byte) int { +func (p *TraceServiceDeleteViewResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -12436,7 +15578,7 @@ func (p *TraceServiceCreateViewResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceCreateViewResult) BLength() int { +func (p *TraceServiceDeleteViewResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -12445,7 +15587,7 @@ func (p *TraceServiceCreateViewResult) BLength() int { return l } -func (p *TraceServiceCreateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -12454,7 +15596,7 @@ func (p *TraceServiceCreateViewResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceCreateViewResult) field0Length() int { +func (p *TraceServiceDeleteViewResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -12463,15 +15605,15 @@ func (p *TraceServiceCreateViewResult) field0Length() int { return l } -func (p *TraceServiceCreateViewResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateViewResult) +func (p *TraceServiceDeleteViewResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteViewResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *CreateViewResponse + var _success *DeleteViewResponse if src.Success != nil { - _success = &CreateViewResponse{} + _success = &DeleteViewResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -12481,7 +15623,7 @@ func (p *TraceServiceCreateViewResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateViewArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListViewsArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -12525,14 +15667,14 @@ func (p *TraceServiceUpdateViewArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateViewArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceListViewsArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewUpdateViewRequest() + _field := NewListViewsRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -12542,11 +15684,11 @@ func (p *TraceServiceUpdateViewArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceUpdateViewArgs) FastWrite(buf []byte) int { +func (p *TraceServiceListViewsArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -12555,7 +15697,7 @@ func (p *TraceServiceUpdateViewArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceUpdateViewArgs) BLength() int { +func (p *TraceServiceListViewsArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -12564,29 +15706,29 @@ func (p *TraceServiceUpdateViewArgs) BLength() int { return l } -func (p *TraceServiceUpdateViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceUpdateViewArgs) field1Length() int { +func (p *TraceServiceListViewsArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceUpdateViewArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateViewArgs) +func (p *TraceServiceListViewsArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListViewsArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *UpdateViewRequest + var _req *ListViewsRequest if src.Req != nil { - _req = &UpdateViewRequest{} + _req = &ListViewsRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -12596,7 +15738,7 @@ func (p *TraceServiceUpdateViewArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateViewResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListViewsResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -12640,14 +15782,14 @@ func (p *TraceServiceUpdateViewResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateViewResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateViewResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceListViewsResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewUpdateViewResponse() + _field := NewListViewsResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -12657,11 +15799,11 @@ func (p *TraceServiceUpdateViewResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceUpdateViewResult) FastWrite(buf []byte) int { +func (p *TraceServiceListViewsResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -12670,7 +15812,7 @@ func (p *TraceServiceUpdateViewResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceUpdateViewResult) BLength() int { +func (p *TraceServiceListViewsResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -12679,7 +15821,7 @@ func (p *TraceServiceUpdateViewResult) BLength() int { return l } -func (p *TraceServiceUpdateViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListViewsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -12688,7 +15830,7 @@ func (p *TraceServiceUpdateViewResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceUpdateViewResult) field0Length() int { +func (p *TraceServiceListViewsResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -12697,15 +15839,15 @@ func (p *TraceServiceUpdateViewResult) field0Length() int { return l } -func (p *TraceServiceUpdateViewResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateViewResult) +func (p *TraceServiceListViewsResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListViewsResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *UpdateViewResponse + var _success *ListViewsResponse if src.Success != nil { - _success = &UpdateViewResponse{} + _success = &ListViewsResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -12715,7 +15857,7 @@ func (p *TraceServiceUpdateViewResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceDeleteViewArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -12759,14 +15901,14 @@ func (p *TraceServiceDeleteViewArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteViewArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewDeleteViewRequest() + _field := NewCreateManualAnnotationRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -12776,11 +15918,11 @@ func (p *TraceServiceDeleteViewArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceDeleteViewArgs) FastWrite(buf []byte) int { +func (p *TraceServiceCreateManualAnnotationArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteViewArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -12789,7 +15931,7 @@ func (p *TraceServiceDeleteViewArgs) FastWriteNocopy(buf []byte, w thrift.Nocopy return offset } -func (p *TraceServiceDeleteViewArgs) BLength() int { +func (p *TraceServiceCreateManualAnnotationArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -12798,29 +15940,29 @@ func (p *TraceServiceDeleteViewArgs) BLength() int { return l } -func (p *TraceServiceDeleteViewArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceDeleteViewArgs) field1Length() int { +func (p *TraceServiceCreateManualAnnotationArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceDeleteViewArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteViewArgs) +func (p *TraceServiceCreateManualAnnotationArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateManualAnnotationArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *DeleteViewRequest + var _req *CreateManualAnnotationRequest if src.Req != nil { - _req = &DeleteViewRequest{} + _req = &CreateManualAnnotationRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -12830,7 +15972,7 @@ func (p *TraceServiceDeleteViewArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceDeleteViewResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -12874,14 +16016,14 @@ func (p *TraceServiceDeleteViewResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteViewResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteViewResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceCreateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewDeleteViewResponse() + _field := NewCreateManualAnnotationResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -12891,11 +16033,11 @@ func (p *TraceServiceDeleteViewResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceDeleteViewResult) FastWrite(buf []byte) int { +func (p *TraceServiceCreateManualAnnotationResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteViewResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -12904,7 +16046,7 @@ func (p *TraceServiceDeleteViewResult) FastWriteNocopy(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceDeleteViewResult) BLength() int { +func (p *TraceServiceCreateManualAnnotationResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -12913,7 +16055,7 @@ func (p *TraceServiceDeleteViewResult) BLength() int { return l } -func (p *TraceServiceDeleteViewResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceCreateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -12922,7 +16064,7 @@ func (p *TraceServiceDeleteViewResult) fastWriteField0(buf []byte, w thrift.Noco return offset } -func (p *TraceServiceDeleteViewResult) field0Length() int { +func (p *TraceServiceCreateManualAnnotationResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -12931,15 +16073,15 @@ func (p *TraceServiceDeleteViewResult) field0Length() int { return l } -func (p *TraceServiceDeleteViewResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteViewResult) +func (p *TraceServiceCreateManualAnnotationResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceCreateManualAnnotationResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *DeleteViewResponse + var _success *CreateManualAnnotationResponse if src.Success != nil { - _success = &DeleteViewResponse{} + _success = &CreateManualAnnotationResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -12949,7 +16091,7 @@ func (p *TraceServiceDeleteViewResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListViewsArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -12993,14 +16135,14 @@ func (p *TraceServiceListViewsArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListViewsArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewListViewsRequest() + _field := NewUpdateManualAnnotationRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -13010,11 +16152,11 @@ func (p *TraceServiceListViewsArgs) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListViewsArgs) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateManualAnnotationArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListViewsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -13023,7 +16165,7 @@ func (p *TraceServiceListViewsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyW return offset } -func (p *TraceServiceListViewsArgs) BLength() int { +func (p *TraceServiceUpdateManualAnnotationArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -13032,29 +16174,29 @@ func (p *TraceServiceListViewsArgs) BLength() int { return l } -func (p *TraceServiceListViewsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceListViewsArgs) field1Length() int { +func (p *TraceServiceUpdateManualAnnotationArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceListViewsArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListViewsArgs) +func (p *TraceServiceUpdateManualAnnotationArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateManualAnnotationArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ListViewsRequest + var _req *UpdateManualAnnotationRequest if src.Req != nil { - _req = &ListViewsRequest{} + _req = &UpdateManualAnnotationRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -13064,7 +16206,7 @@ func (p *TraceServiceListViewsArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListViewsResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -13108,14 +16250,14 @@ func (p *TraceServiceListViewsResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListViewsResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListViewsResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceUpdateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewListViewsResponse() + _field := NewUpdateManualAnnotationResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -13125,11 +16267,11 @@ func (p *TraceServiceListViewsResult) FastReadField0(buf []byte) (int, error) { return offset, nil } -func (p *TraceServiceListViewsResult) FastWrite(buf []byte) int { +func (p *TraceServiceUpdateManualAnnotationResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListViewsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -13138,7 +16280,7 @@ func (p *TraceServiceListViewsResult) FastWriteNocopy(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListViewsResult) BLength() int { +func (p *TraceServiceUpdateManualAnnotationResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -13147,7 +16289,7 @@ func (p *TraceServiceListViewsResult) BLength() int { return l } -func (p *TraceServiceListViewsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceUpdateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -13156,7 +16298,7 @@ func (p *TraceServiceListViewsResult) fastWriteField0(buf []byte, w thrift.Nocop return offset } -func (p *TraceServiceListViewsResult) field0Length() int { +func (p *TraceServiceUpdateManualAnnotationResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -13165,15 +16307,15 @@ func (p *TraceServiceListViewsResult) field0Length() int { return l } -func (p *TraceServiceListViewsResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListViewsResult) +func (p *TraceServiceUpdateManualAnnotationResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceUpdateManualAnnotationResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ListViewsResponse + var _success *UpdateManualAnnotationResponse if src.Success != nil { - _success = &ListViewsResponse{} + _success = &UpdateManualAnnotationResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -13183,7 +16325,7 @@ func (p *TraceServiceListViewsResult) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateManualAnnotationArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -13227,14 +16369,14 @@ func (p *TraceServiceCreateManualAnnotationArgs) FastRead(buf []byte) (int, erro ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewCreateManualAnnotationRequest() + _field := NewDeleteManualAnnotationRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -13244,11 +16386,11 @@ func (p *TraceServiceCreateManualAnnotationArgs) FastReadField1(buf []byte) (int return offset, nil } -func (p *TraceServiceCreateManualAnnotationArgs) FastWrite(buf []byte) int { +func (p *TraceServiceDeleteManualAnnotationArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -13257,7 +16399,7 @@ func (p *TraceServiceCreateManualAnnotationArgs) FastWriteNocopy(buf []byte, w t return offset } -func (p *TraceServiceCreateManualAnnotationArgs) BLength() int { +func (p *TraceServiceDeleteManualAnnotationArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -13266,29 +16408,29 @@ func (p *TraceServiceCreateManualAnnotationArgs) BLength() int { return l } -func (p *TraceServiceCreateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceCreateManualAnnotationArgs) field1Length() int { +func (p *TraceServiceDeleteManualAnnotationArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceCreateManualAnnotationArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateManualAnnotationArgs) +func (p *TraceServiceDeleteManualAnnotationArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteManualAnnotationArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *CreateManualAnnotationRequest + var _req *DeleteManualAnnotationRequest if src.Req != nil { - _req = &CreateManualAnnotationRequest{} + _req = &DeleteManualAnnotationRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -13298,7 +16440,7 @@ func (p *TraceServiceCreateManualAnnotationArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceCreateManualAnnotationResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -13342,14 +16484,14 @@ func (p *TraceServiceCreateManualAnnotationResult) FastRead(buf []byte) (int, er ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceCreateManualAnnotationResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceCreateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceDeleteManualAnnotationResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewCreateManualAnnotationResponse() + _field := NewDeleteManualAnnotationResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -13359,11 +16501,11 @@ func (p *TraceServiceCreateManualAnnotationResult) FastReadField0(buf []byte) (i return offset, nil } -func (p *TraceServiceCreateManualAnnotationResult) FastWrite(buf []byte) int { +func (p *TraceServiceDeleteManualAnnotationResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceCreateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -13372,7 +16514,7 @@ func (p *TraceServiceCreateManualAnnotationResult) FastWriteNocopy(buf []byte, w return offset } -func (p *TraceServiceCreateManualAnnotationResult) BLength() int { +func (p *TraceServiceDeleteManualAnnotationResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -13381,7 +16523,7 @@ func (p *TraceServiceCreateManualAnnotationResult) BLength() int { return l } -func (p *TraceServiceCreateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceDeleteManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -13390,7 +16532,7 @@ func (p *TraceServiceCreateManualAnnotationResult) fastWriteField0(buf []byte, w return offset } -func (p *TraceServiceCreateManualAnnotationResult) field0Length() int { +func (p *TraceServiceDeleteManualAnnotationResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -13399,15 +16541,15 @@ func (p *TraceServiceCreateManualAnnotationResult) field0Length() int { return l } -func (p *TraceServiceCreateManualAnnotationResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceCreateManualAnnotationResult) +func (p *TraceServiceDeleteManualAnnotationResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceDeleteManualAnnotationResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *CreateManualAnnotationResponse + var _success *DeleteManualAnnotationResponse if src.Success != nil { - _success = &CreateManualAnnotationResponse{} + _success = &DeleteManualAnnotationResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -13417,7 +16559,7 @@ func (p *TraceServiceCreateManualAnnotationResult) DeepCopy(s interface{}) error return nil } -func (p *TraceServiceUpdateManualAnnotationArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -13461,14 +16603,14 @@ func (p *TraceServiceUpdateManualAnnotationArgs) FastRead(buf []byte) (int, erro ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewUpdateManualAnnotationRequest() + _field := NewListAnnotationsRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -13478,11 +16620,11 @@ func (p *TraceServiceUpdateManualAnnotationArgs) FastReadField1(buf []byte) (int return offset, nil } -func (p *TraceServiceUpdateManualAnnotationArgs) FastWrite(buf []byte) int { +func (p *TraceServiceListAnnotationsArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -13491,7 +16633,7 @@ func (p *TraceServiceUpdateManualAnnotationArgs) FastWriteNocopy(buf []byte, w t return offset } -func (p *TraceServiceUpdateManualAnnotationArgs) BLength() int { +func (p *TraceServiceListAnnotationsArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -13500,29 +16642,29 @@ func (p *TraceServiceUpdateManualAnnotationArgs) BLength() int { return l } -func (p *TraceServiceUpdateManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceUpdateManualAnnotationArgs) field1Length() int { +func (p *TraceServiceListAnnotationsArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceUpdateManualAnnotationArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateManualAnnotationArgs) +func (p *TraceServiceListAnnotationsArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListAnnotationsArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *UpdateManualAnnotationRequest + var _req *ListAnnotationsRequest if src.Req != nil { - _req = &UpdateManualAnnotationRequest{} + _req = &ListAnnotationsRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -13532,7 +16674,7 @@ func (p *TraceServiceUpdateManualAnnotationArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceUpdateManualAnnotationResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -13576,14 +16718,14 @@ func (p *TraceServiceUpdateManualAnnotationResult) FastRead(buf []byte) (int, er ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceUpdateManualAnnotationResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceUpdateManualAnnotationResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceListAnnotationsResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewUpdateManualAnnotationResponse() + _field := NewListAnnotationsResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -13593,11 +16735,11 @@ func (p *TraceServiceUpdateManualAnnotationResult) FastReadField0(buf []byte) (i return offset, nil } -func (p *TraceServiceUpdateManualAnnotationResult) FastWrite(buf []byte) int { +func (p *TraceServiceListAnnotationsResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceUpdateManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -13606,7 +16748,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) FastWriteNocopy(buf []byte, w return offset } -func (p *TraceServiceUpdateManualAnnotationResult) BLength() int { +func (p *TraceServiceListAnnotationsResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -13615,7 +16757,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) BLength() int { return l } -func (p *TraceServiceUpdateManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceListAnnotationsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -13624,7 +16766,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) fastWriteField0(buf []byte, w return offset } -func (p *TraceServiceUpdateManualAnnotationResult) field0Length() int { +func (p *TraceServiceListAnnotationsResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -13633,15 +16775,15 @@ func (p *TraceServiceUpdateManualAnnotationResult) field0Length() int { return l } -func (p *TraceServiceUpdateManualAnnotationResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceUpdateManualAnnotationResult) +func (p *TraceServiceListAnnotationsResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceListAnnotationsResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *UpdateManualAnnotationResponse + var _success *ListAnnotationsResponse if src.Success != nil { - _success = &UpdateManualAnnotationResponse{} + _success = &ListAnnotationsResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -13651,7 +16793,7 @@ func (p *TraceServiceUpdateManualAnnotationResult) DeepCopy(s interface{}) error return nil } -func (p *TraceServiceDeleteManualAnnotationArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServiceExportTracesToDatasetArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -13695,14 +16837,14 @@ func (p *TraceServiceDeleteManualAnnotationArgs) FastRead(buf []byte) (int, erro ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExportTracesToDatasetArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteManualAnnotationArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServiceExportTracesToDatasetArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewDeleteManualAnnotationRequest() + _field := NewExportTracesToDatasetRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -13712,11 +16854,11 @@ func (p *TraceServiceDeleteManualAnnotationArgs) FastReadField1(buf []byte) (int return offset, nil } -func (p *TraceServiceDeleteManualAnnotationArgs) FastWrite(buf []byte) int { +func (p *TraceServiceExportTracesToDatasetArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteManualAnnotationArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExportTracesToDatasetArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -13725,7 +16867,7 @@ func (p *TraceServiceDeleteManualAnnotationArgs) FastWriteNocopy(buf []byte, w t return offset } -func (p *TraceServiceDeleteManualAnnotationArgs) BLength() int { +func (p *TraceServiceExportTracesToDatasetArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -13734,29 +16876,29 @@ func (p *TraceServiceDeleteManualAnnotationArgs) BLength() int { return l } -func (p *TraceServiceDeleteManualAnnotationArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExportTracesToDatasetArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceDeleteManualAnnotationArgs) field1Length() int { +func (p *TraceServiceExportTracesToDatasetArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceDeleteManualAnnotationArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteManualAnnotationArgs) +func (p *TraceServiceExportTracesToDatasetArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceExportTracesToDatasetArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *DeleteManualAnnotationRequest + var _req *ExportTracesToDatasetRequest if src.Req != nil { - _req = &DeleteManualAnnotationRequest{} + _req = &ExportTracesToDatasetRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -13766,7 +16908,7 @@ func (p *TraceServiceDeleteManualAnnotationArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceDeleteManualAnnotationResult) FastRead(buf []byte) (int, error) { +func (p *TraceServiceExportTracesToDatasetResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -13810,14 +16952,14 @@ func (p *TraceServiceDeleteManualAnnotationResult) FastRead(buf []byte) (int, er ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceDeleteManualAnnotationResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceExportTracesToDatasetResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceDeleteManualAnnotationResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServiceExportTracesToDatasetResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewDeleteManualAnnotationResponse() + _field := NewExportTracesToDatasetResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -13827,11 +16969,11 @@ func (p *TraceServiceDeleteManualAnnotationResult) FastReadField0(buf []byte) (i return offset, nil } -func (p *TraceServiceDeleteManualAnnotationResult) FastWrite(buf []byte) int { +func (p *TraceServiceExportTracesToDatasetResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceDeleteManualAnnotationResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExportTracesToDatasetResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -13840,7 +16982,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) FastWriteNocopy(buf []byte, w return offset } -func (p *TraceServiceDeleteManualAnnotationResult) BLength() int { +func (p *TraceServiceExportTracesToDatasetResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -13849,7 +16991,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) BLength() int { return l } -func (p *TraceServiceDeleteManualAnnotationResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServiceExportTracesToDatasetResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -13858,7 +17000,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) fastWriteField0(buf []byte, w return offset } -func (p *TraceServiceDeleteManualAnnotationResult) field0Length() int { +func (p *TraceServiceExportTracesToDatasetResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -13867,15 +17009,15 @@ func (p *TraceServiceDeleteManualAnnotationResult) field0Length() int { return l } -func (p *TraceServiceDeleteManualAnnotationResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceDeleteManualAnnotationResult) +func (p *TraceServiceExportTracesToDatasetResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServiceExportTracesToDatasetResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *DeleteManualAnnotationResponse + var _success *ExportTracesToDatasetResponse if src.Success != nil { - _success = &DeleteManualAnnotationResponse{} + _success = &ExportTracesToDatasetResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -13885,7 +17027,7 @@ func (p *TraceServiceDeleteManualAnnotationResult) DeepCopy(s interface{}) error return nil } -func (p *TraceServiceListAnnotationsArgs) FastRead(buf []byte) (int, error) { +func (p *TraceServicePreviewExportTracesToDatasetArgs) FastRead(buf []byte) (int, error) { var err error var offset int @@ -13929,14 +17071,14 @@ func (p *TraceServiceListAnnotationsArgs) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsArgs[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServicePreviewExportTracesToDatasetArgs[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListAnnotationsArgs) FastReadField1(buf []byte) (int, error) { +func (p *TraceServicePreviewExportTracesToDatasetArgs) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := NewListAnnotationsRequest() + _field := NewPreviewExportTracesToDatasetRequest() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -13946,11 +17088,11 @@ func (p *TraceServiceListAnnotationsArgs) FastReadField1(buf []byte) (int, error return offset, nil } -func (p *TraceServiceListAnnotationsArgs) FastWrite(buf []byte) int { +func (p *TraceServicePreviewExportTracesToDatasetArgs) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListAnnotationsArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServicePreviewExportTracesToDatasetArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -13959,7 +17101,7 @@ func (p *TraceServiceListAnnotationsArgs) FastWriteNocopy(buf []byte, w thrift.N return offset } -func (p *TraceServiceListAnnotationsArgs) BLength() int { +func (p *TraceServicePreviewExportTracesToDatasetArgs) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -13968,29 +17110,29 @@ func (p *TraceServiceListAnnotationsArgs) BLength() int { return l } -func (p *TraceServiceListAnnotationsArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServicePreviewExportTracesToDatasetArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.Req.FastWriteNocopy(buf[offset:], w) return offset } -func (p *TraceServiceListAnnotationsArgs) field1Length() int { +func (p *TraceServicePreviewExportTracesToDatasetArgs) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.Req.BLength() return l } -func (p *TraceServiceListAnnotationsArgs) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListAnnotationsArgs) +func (p *TraceServicePreviewExportTracesToDatasetArgs) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServicePreviewExportTracesToDatasetArgs) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _req *ListAnnotationsRequest + var _req *PreviewExportTracesToDatasetRequest if src.Req != nil { - _req = &ListAnnotationsRequest{} + _req = &PreviewExportTracesToDatasetRequest{} if err := _req.DeepCopy(src.Req); err != nil { return err } @@ -14000,7 +17142,7 @@ func (p *TraceServiceListAnnotationsArgs) DeepCopy(s interface{}) error { return nil } -func (p *TraceServiceListAnnotationsResult) FastRead(buf []byte) (int, error) { +func (p *TraceServicePreviewExportTracesToDatasetResult) FastRead(buf []byte) (int, error) { var err error var offset int @@ -14044,14 +17186,14 @@ func (p *TraceServiceListAnnotationsResult) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServiceListAnnotationsResult[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TraceServicePreviewExportTracesToDatasetResult[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TraceServiceListAnnotationsResult) FastReadField0(buf []byte) (int, error) { +func (p *TraceServicePreviewExportTracesToDatasetResult) FastReadField0(buf []byte) (int, error) { offset := 0 - _field := NewListAnnotationsResponse() + _field := NewPreviewExportTracesToDatasetResponse() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -14061,11 +17203,11 @@ func (p *TraceServiceListAnnotationsResult) FastReadField0(buf []byte) (int, err return offset, nil } -func (p *TraceServiceListAnnotationsResult) FastWrite(buf []byte) int { +func (p *TraceServicePreviewExportTracesToDatasetResult) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TraceServiceListAnnotationsResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServicePreviewExportTracesToDatasetResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField0(buf[offset:], w) @@ -14074,7 +17216,7 @@ func (p *TraceServiceListAnnotationsResult) FastWriteNocopy(buf []byte, w thrift return offset } -func (p *TraceServiceListAnnotationsResult) BLength() int { +func (p *TraceServicePreviewExportTracesToDatasetResult) BLength() int { l := 0 if p != nil { l += p.field0Length() @@ -14083,7 +17225,7 @@ func (p *TraceServiceListAnnotationsResult) BLength() int { return l } -func (p *TraceServiceListAnnotationsResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { +func (p *TraceServicePreviewExportTracesToDatasetResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccess() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) @@ -14092,7 +17234,7 @@ func (p *TraceServiceListAnnotationsResult) fastWriteField0(buf []byte, w thrift return offset } -func (p *TraceServiceListAnnotationsResult) field0Length() int { +func (p *TraceServicePreviewExportTracesToDatasetResult) field0Length() int { l := 0 if p.IsSetSuccess() { l += thrift.Binary.FieldBeginLength() @@ -14101,15 +17243,15 @@ func (p *TraceServiceListAnnotationsResult) field0Length() int { return l } -func (p *TraceServiceListAnnotationsResult) DeepCopy(s interface{}) error { - src, ok := s.(*TraceServiceListAnnotationsResult) +func (p *TraceServicePreviewExportTracesToDatasetResult) DeepCopy(s interface{}) error { + src, ok := s.(*TraceServicePreviewExportTracesToDatasetResult) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - var _success *ListAnnotationsResponse + var _success *PreviewExportTracesToDatasetResponse if src.Success != nil { - _success = &ListAnnotationsResponse{} + _success = &PreviewExportTracesToDatasetResponse{} if err := _success.DeepCopy(src.Success); err != nil { return err } @@ -14925,6 +18067,22 @@ func (p *TraceServiceListAnnotationsResult) GetResult() interface{} { return p.Success } +func (p *TraceServiceExportTracesToDatasetArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TraceServiceExportTracesToDatasetResult) GetResult() interface{} { + return p.Success +} + +func (p *TraceServicePreviewExportTracesToDatasetArgs) GetFirstArgument() interface{} { + return p.Req +} + +func (p *TraceServicePreviewExportTracesToDatasetResult) GetResult() interface{} { + return p.Success +} + func (p *TraceServiceChangeEvaluatorScoreArgs) GetFirstArgument() interface{} { return p.Req } diff --git a/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go b/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go index bde416ec9..da26be9b5 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go +++ b/backend/kitex_gen/coze/loop/observability/trace/traceservice/client.go @@ -24,6 +24,8 @@ type Client interface { UpdateManualAnnotation(ctx context.Context, req *trace.UpdateManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.UpdateManualAnnotationResponse, err error) DeleteManualAnnotation(ctx context.Context, req *trace.DeleteManualAnnotationRequest, callOptions ...callopt.Option) (r *trace.DeleteManualAnnotationResponse, err error) ListAnnotations(ctx context.Context, req *trace.ListAnnotationsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationsResponse, err error) + ExportTracesToDataset(ctx context.Context, req *trace.ExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.ExportTracesToDatasetResponse, err error) + PreviewExportTracesToDataset(ctx context.Context, req *trace.PreviewExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.PreviewExportTracesToDatasetResponse, err error) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) ListAnnotationEvaluators(ctx context.Context, req *trace.ListAnnotationEvaluatorsRequest, callOptions ...callopt.Option) (r *trace.ListAnnotationEvaluatorsResponse, err error) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest, callOptions ...callopt.Option) (r *trace.ExtractSpanInfoResponse, err error) @@ -123,6 +125,16 @@ func (p *kTraceServiceClient) ListAnnotations(ctx context.Context, req *trace.Li return p.kClient.ListAnnotations(ctx, req) } +func (p *kTraceServiceClient) ExportTracesToDataset(ctx context.Context, req *trace.ExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.ExportTracesToDatasetResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ExportTracesToDataset(ctx, req) +} + +func (p *kTraceServiceClient) PreviewExportTracesToDataset(ctx context.Context, req *trace.PreviewExportTracesToDatasetRequest, callOptions ...callopt.Option) (r *trace.PreviewExportTracesToDatasetResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.PreviewExportTracesToDataset(ctx, req) +} + func (p *kTraceServiceClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (r *trace.ChangeEvaluatorScoreResponse, err error) { ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.ChangeEvaluatorScore(ctx, req) diff --git a/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go b/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go index 8df4f13f0..0aeace78b 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go +++ b/backend/kitex_gen/coze/loop/observability/trace/traceservice/traceservice.go @@ -104,6 +104,20 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), + "ExportTracesToDataset": kitex.NewMethodInfo( + exportTracesToDatasetHandler, + newTraceServiceExportTracesToDatasetArgs, + newTraceServiceExportTracesToDatasetResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), + "PreviewExportTracesToDataset": kitex.NewMethodInfo( + previewExportTracesToDatasetHandler, + newTraceServicePreviewExportTracesToDatasetArgs, + newTraceServicePreviewExportTracesToDatasetResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), "ChangeEvaluatorScore": kitex.NewMethodInfo( changeEvaluatorScoreHandler, newTraceServiceChangeEvaluatorScoreArgs, @@ -405,6 +419,44 @@ func newTraceServiceListAnnotationsResult() interface{} { return trace.NewTraceServiceListAnnotationsResult() } +func exportTracesToDatasetHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServiceExportTracesToDatasetArgs) + realResult := result.(*trace.TraceServiceExportTracesToDatasetResult) + success, err := handler.(trace.TraceService).ExportTracesToDataset(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServiceExportTracesToDatasetArgs() interface{} { + return trace.NewTraceServiceExportTracesToDatasetArgs() +} + +func newTraceServiceExportTracesToDatasetResult() interface{} { + return trace.NewTraceServiceExportTracesToDatasetResult() +} + +func previewExportTracesToDatasetHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*trace.TraceServicePreviewExportTracesToDatasetArgs) + realResult := result.(*trace.TraceServicePreviewExportTracesToDatasetResult) + success, err := handler.(trace.TraceService).PreviewExportTracesToDataset(ctx, realArg.Req) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newTraceServicePreviewExportTracesToDatasetArgs() interface{} { + return trace.NewTraceServicePreviewExportTracesToDatasetArgs() +} + +func newTraceServicePreviewExportTracesToDatasetResult() interface{} { + return trace.NewTraceServicePreviewExportTracesToDatasetResult() +} + func changeEvaluatorScoreHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { realArg := arg.(*trace.TraceServiceChangeEvaluatorScoreArgs) realResult := result.(*trace.TraceServiceChangeEvaluatorScoreResult) @@ -604,6 +656,26 @@ func (p *kClient) ListAnnotations(ctx context.Context, req *trace.ListAnnotation return _result.GetSuccess(), nil } +func (p *kClient) ExportTracesToDataset(ctx context.Context, req *trace.ExportTracesToDatasetRequest) (r *trace.ExportTracesToDatasetResponse, err error) { + var _args trace.TraceServiceExportTracesToDatasetArgs + _args.Req = req + var _result trace.TraceServiceExportTracesToDatasetResult + if err = p.c.Call(ctx, "ExportTracesToDataset", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + +func (p *kClient) PreviewExportTracesToDataset(ctx context.Context, req *trace.PreviewExportTracesToDatasetRequest) (r *trace.PreviewExportTracesToDatasetResponse, err error) { + var _args trace.TraceServicePreviewExportTracesToDatasetArgs + _args.Req = req + var _result trace.TraceServicePreviewExportTracesToDatasetResult + if err = p.c.Call(ctx, "PreviewExportTracesToDataset", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + func (p *kClient) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest) (r *trace.ChangeEvaluatorScoreResponse, err error) { var _args trace.TraceServiceChangeEvaluatorScoreArgs _args.Req = req diff --git a/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go b/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go index b303d06d9..4a8f153e4 100644 --- a/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go +++ b/backend/loop_gen/coze/loop/observability/lotrace/local_traceservice.go @@ -295,6 +295,48 @@ func (l *LocalTraceService) ListAnnotations(ctx context.Context, req *trace.List return result.GetSuccess(), nil } +func (l *LocalTraceService) ExportTracesToDataset(ctx context.Context, Req *trace.ExportTracesToDatasetRequest, callOptions ...callopt.Option) (*trace.ExportTracesToDatasetResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*trace.TraceServiceExportTracesToDatasetArgs) + result := out.(*trace.TraceServiceExportTracesToDatasetResult) + resp, err := l.impl.ExportTracesToDataset(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &trace.TraceServiceExportTracesToDatasetArgs{Req: Req} + result := &trace.TraceServiceExportTracesToDatasetResult{} + ctx = l.injectRPCInfo(ctx, "ExportTracesToDataset") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + +func (l *LocalTraceService) PreviewExportTracesToDataset(ctx context.Context, Req *trace.PreviewExportTracesToDatasetRequest, callOptions ...callopt.Option) (*trace.PreviewExportTracesToDatasetResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*trace.TraceServicePreviewExportTracesToDatasetArgs) + result := out.(*trace.TraceServicePreviewExportTracesToDatasetResult) + resp, err := l.impl.PreviewExportTracesToDataset(ctx, arg.Req) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &trace.TraceServicePreviewExportTracesToDatasetArgs{Req: Req} + result := &trace.TraceServicePreviewExportTracesToDatasetResult{} + ctx = l.injectRPCInfo(ctx, "PreviewExportTracesToDataset") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + func (l *LocalTraceService) ChangeEvaluatorScore(ctx context.Context, req *trace.ChangeEvaluatorScoreRequest, callOptions ...callopt.Option) (*trace.ChangeEvaluatorScoreResponse, error) { chain := l.mds(func(ctx context.Context, in, out interface{}) error { arg := in.(*trace.TraceServiceChangeEvaluatorScoreArgs) diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index 58dad6258..95be81922 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -1,11 +1,13 @@ namespace go coze.loop.observability.trace include "../../../base.thrift" +include "../data/domain/dataset.thrift" include "./domain/span.thrift" include "./domain/common.thrift" include "./domain/filter.thrift" include "./domain/view.thrift" include "./domain/annotation.thrift" +include "./domain/export_dataset.thrift" include "./domain/task.thrift" struct ListSpansRequest { @@ -227,6 +229,65 @@ struct ListAnnotationsResponse { 255: optional base.BaseResp BaseResp } +struct ExportTracesToDatasetRequest { + 1: required i64 workspace_id (api.js_conv="true", go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 2: required list span_ids (api.body="span_ids", vt.min_size="1", vt.max_size="500") + 3: required dataset.DatasetCategory category (api.body="category") + 4: required DatasetConfig config (api.body="config") + 5: required i64 start_time (api.js_conv="true", go.tag='json:"start_time"', api.body="start_time") + 6: required i64 end_time (api.js_conv="true", go.tag='json:"end_time"', api.body="end_time") + 7: optional common.PlatformType platform_type (api.body="platform_type") + 8: required export_dataset.ExportType export_type (api.body="export_type") // 导入方式,不填默认为追加 + 9: optional list field_mappings (api.body="field_mappings", vt.min_size="1", vt.max_size="100") + + 255: optional base.Base Base +} + +struct SpanID { + 1: required string trace_id + 2: required string span_id +} + +struct DatasetConfig { + 1: required bool is_new_dataset // 是否是新增数据集 + 2: optional i64 dataset_id (api.js_conv="true", go.tag='json:"dataset_id"') // 数据集id,新增数据集时可为空 + 3: optional string dataset_name // 数据集名称,选择已有数据集时可为空 + 4: optional export_dataset.DatasetSchema dataset_schema (vt.not_nil="true") // 数据集列数据schema +} + +struct ExportTracesToDatasetResponse { + 1: optional i32 success_count // 成功导入的数量 + 2: optional list errors // 错误信息 + 3: optional i64 dataset_id (api.js_conv="true", go.tag='json:"dataset_id"') // 数据集id + 4: optional string dataset_name // 数据集名称 + + 255: optional base.BaseResp BaseResp (api.none="true") + 256: optional i32 Code (agw.key = "code") // 仅供http请求使用; 内部RPC不予使用,统一通过BaseResp获取Code和Msg + 257: optional string Msg (agw.key = "msg") // 仅供http请求使用; 内部RPC不予使用,统一通过BaseResp获取Code和Msg +} + +struct PreviewExportTracesToDatasetRequest { + 1: required i64 workspace_id (api.js_conv="true", go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 2: required list span_ids (api.body="span_ids", vt.min_size="1", vt.max_size="500") + 3: required dataset.DatasetCategory category (api.body="category") + 4: required DatasetConfig config (api.body="config") + 5: required i64 start_time (api.js_conv="true", go.tag='json:"start_time"', api.body="start_time") + 6: required i64 end_time (api.js_conv="true", go.tag='json:"end_time"', api.body="end_time") + 7: optional common.PlatformType platform_type (api.body="platform_type") + 8: required export_dataset.ExportType export_type (api.body="export_type") // 导入方式,不填默认为追加 + 9: optional list field_mappings (api.body="field_mappings", vt.min_size="1", vt.max_size="100") + + 255: optional base.Base Base (api.none="true") +} + +struct PreviewExportTracesToDatasetResponse { + 1: optional list items // 预览数据 + 2: optional list errors // 概要错误信息 + + 255: optional base.BaseResp BaseResp (api.none="true") + 256: optional i32 Code (agw.key = "code") // 仅供http请求使用; 内部RPC不予使用,统一通过BaseResp获取Code和Msg + 257: optional string Msg (agw.key = "msg") // 仅供http请求使用; 内部RPC不予使用,统一通过BaseResp获取Code和Msg +} struct ChangeEvaluatorScoreRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") @@ -324,7 +385,8 @@ service TraceService { UpdateManualAnnotationResponse UpdateManualAnnotation(1: UpdateManualAnnotationRequest req) (api.put = '/api/observability/v1/annotations/:annotation_id') DeleteManualAnnotationResponse DeleteManualAnnotation(1: DeleteManualAnnotationRequest req) (api.delete = '/api/observability/v1/annotations/:annotation_id') ListAnnotationsResponse ListAnnotations(1: ListAnnotationsRequest req) (api.post = '/api/observability/v1/annotations/list') - + ExportTracesToDatasetResponse ExportTracesToDataset(1: ExportTracesToDatasetRequest Req)(api.post = '/api/observability/v1/traces/export_to_dataset') + PreviewExportTracesToDatasetResponse PreviewExportTracesToDataset(1: PreviewExportTracesToDatasetRequest Req)(api.post = '/api/observability/v1/traces/preview_export_to_dataset') ChangeEvaluatorScoreResponse ChangeEvaluatorScore(1: ChangeEvaluatorScoreRequest req) (api.post = '/api/observability/v1/annotations/change_eEvaluator_sScore') ListAnnotationEvaluatorsResponse ListAnnotationEvaluators(1: ListAnnotationEvaluatorsRequest req) (api.post = '/api/observability/v1/annotations/lis_annotation_evaluators') ExtractSpanInfoResponse ExtractSpanInfo(1: ExtractSpanInfoRequest req) (api.post = '/api/observability/v1/traces/extract_span_info') diff --git a/idl/thrift/coze/loop/observability/domain/common.thrift b/idl/thrift/coze/loop/observability/domain/common.thrift index b981fb035..dc09a4473 100644 --- a/idl/thrift/coze/loop/observability/domain/common.thrift +++ b/idl/thrift/coze/loop/observability/domain/common.thrift @@ -9,6 +9,10 @@ const PlatformType PlatformType_CozeBot = "coze_bot" const PlatformType PlatformType_Project = "coze_project" const PlatformType PlatformType_Workflow = "coze_workflow" const PlatformType PlatformType_LoopAll = "loop_all" +const PlatformType PlatformType_InnerCozeloop = "inner_cozeloop" +const PlatformType PlatformType_InnerDoubao = "inner_doubao" +const PlatformType PlatformType_InnerPrompt = "inner_prompt" +const PlatformType PlatformType_InnerCozeBot = "inner_coze_bot" typedef string SpanListType (ts.enum="true") const SpanListType SpanListType_RootSpan = "root_span" @@ -37,3 +41,10 @@ struct BaseInfo { 3: optional i64 created_at (api.js_conv='true', go.tag='json:"created_at"') 4: optional i64 updated_at (api.js_conv='true', go.tag='json:"updated_at"') } + +typedef string ContentType(ts.enum="true") + +const ContentType ContentType_Text = "Text" // 空间 +const ContentType ContentType_Image = "Image" +const ContentType ContentType_Audio = "Audio" +const ContentType ContentType_MultiPart = "MultiPart" \ No newline at end of file diff --git a/idl/thrift/coze/loop/observability/domain/export_dataset.thrift b/idl/thrift/coze/loop/observability/domain/export_dataset.thrift new file mode 100644 index 000000000..9345c382a --- /dev/null +++ b/idl/thrift/coze/loop/observability/domain/export_dataset.thrift @@ -0,0 +1,63 @@ +namespace go coze.loop.observability.domain.dataset + +include "../../data/domain/dataset.thrift" +include "../domain/common.thrift" + +typedef string ExportType (ts.enum="true") +const ExportType ExportType_Append = "append" +const ExportType ExportType_Overwrite = "overwrite" + +typedef string ItemStatus (ts.enum="true") +const ItemStatus ItemStatus_Success = "success" +const ItemStatus ItemStatus_Error = "error" + + +// DatasetSchema 数据集 Schema,包含字段的类型限制等信息 +struct DatasetSchema { + 10: optional list field_schemas, // 数据集字段约束 +} + +struct FieldSchema { + 1: optional string key // 数据集 schema 版本变化中 key 唯一,新建时自动生成,不需传入 + 2: optional string name (vt.min_size = "1", vt.max_size = "128") // 展示名称 + 3: optional string description (vt.max_size = "1024") // 描述 + 4: optional common.ContentType content_type (vt.not_nil = "true") // 类型,如 文本,图片,etc. + 5: optional dataset.FieldDisplayFormat default_format (vt.defined_only = "true") // 默认渲染格式,如 code, json, etc. + + /* [20,50) 内容格式限制相关 */ + 20: optional string text_schema // 文本内容格式限制,格式为 JSON schema,协议参考 https://json-schema.org/specification +} + +struct Item { + 1: required ItemStatus status + 2: optional list field_list // todo 多模态需要修改 + 3: optional list errors // 错误信息 +} + +struct FieldData { + 1: optional string key, + 2: optional string name, + 3: optional Content content, +} + +struct Content { + 1: optional common.ContentType contentType (agw.key = "content_type" go.tag = "json:\"content_type\""), + 10: optional string text (agw.key = "text" go.tag = "json:\"text\""), + 11: optional Image image (agw.key = "image" go.tag = "json:\"image\""), // 图片内容 + 12: optional list multiPart (agw.key = "multi_part" go.tag = "json:\"multi_part\""), // 图文混排时,图文内容 +} + +struct Image { + 1: optional string name (agw.key = "name" go.tag = "json:\"name\"") + 2: optional string url (agw.key = "url" go.tag = "json:\"url\"") +} +struct ItemError { + 1: optional dataset.ItemErrorType type + 2: optional list field_names // 有错误的字段名,非必填 +} + +struct FieldMapping { + 1: required FieldSchema field_schema // 数据集字段约束 + 2: required string trace_field_key + 3: required string trace_field_jsonpath +} From b571e29be1e2ad0d5d85bb4bfcdbb98afbfae7c2 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 19:24:39 +0800 Subject: [PATCH 012/462] feat: add kitex_gen --- .../loop/apis/observability_trace_service.go | 2 +- .../router/coze/loop/apis/coze.loop.apis.go | 7 ++++ .../api/router/coze/loop/apis/middleware.go | 35 +++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/backend/api/handler/coze/loop/apis/observability_trace_service.go b/backend/api/handler/coze/loop/apis/observability_trace_service.go index a323b98b0..15ba67560 100644 --- a/backend/api/handler/coze/loop/apis/observability_trace_service.go +++ b/backend/api/handler/coze/loop/apis/observability_trace_service.go @@ -137,4 +137,4 @@ func ListAnnotationEvaluators(ctx context.Context, c *app.RequestContext) { // @router /api/observability/v1/traces/extract_span_info [POST] func ExtractSpanInfo(ctx context.Context, c *app.RequestContext) { invokeAndRender(ctx, c, observabilityClient.ExtractSpanInfo) -} \ No newline at end of file +} diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index 5bdd29cd8..65828d129 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -267,7 +267,14 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _annotations := _v14.Group("/annotations", _annotationsMw(handler)...) _annotations.DELETE("/:annotation_id", append(_deletemanualannotationMw(handler), apis.DeleteManualAnnotation)...) _annotations.PUT("/:annotation_id", append(_updatemanualannotationMw(handler), apis.UpdateManualAnnotation)...) + _annotations.POST("/change_eEvaluator_sScore", append(_changeevaluatorscoreMw(handler), apis.ChangeEvaluatorScore)...) + _annotations.POST("/lis_annotation_evaluators", append(_listannotationevaluatorsMw(handler), apis.ListAnnotationEvaluators)...) _annotations.POST("/list", append(_listannotationsMw(handler), apis.ListAnnotations)...) + _v14.POST("/tasks", append(_tasksMw(handler), apis.CreateTask)...) + _tasks := _v14.Group("/tasks", _tasksMw(handler)...) + _tasks.POST("/list", append(_listtasksMw(handler), apis.ListTasks)...) + _tasks.GET("/:task_id", append(_gettaskMw(handler), apis.GetTask)...) + _tasks.PUT("/:task_id", append(_updatetaskMw(handler), apis.UpdateTask)...) _v14.POST("/views", append(_viewsMw(handler), apis.CreateView)...) _views := _v14.Group("/views", _viewsMw(handler)...) _views.POST("/list", append(_listviewsMw(handler), apis.ListViews)...) diff --git a/backend/api/router/coze/loop/apis/middleware.go b/backend/api/router/coze/loop/apis/middleware.go index cbe454eec..30d71943c 100644 --- a/backend/api/router/coze/loop/apis/middleware.go +++ b/backend/api/router/coze/loop/apis/middleware.go @@ -1240,3 +1240,38 @@ func _validatedatasetitemsMw(handler *apis.APIHandler) []app.HandlerFunc { // your code... return nil } + +func _changeevaluatorscoreMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _listannotationevaluatorsMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _tasksMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _createtaskMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _listtasksMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _gettaskMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _updatetaskMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} From 3112684d8181c773349a873ee47dc59661817bdc Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 19:38:39 +0800 Subject: [PATCH 013/462] feat: fix idl --- .../domain/annotation/annotation.go | 309 ++++ .../domain/annotation/annotation_validator.go | 3 + .../domain/annotation/k-annotation.go | 228 +++ .../trace/coze.loop.observability.trace.go | 1361 +---------------- ...coze.loop.observability.trace_validator.go | 22 - .../trace/k-coze.loop.observability.trace.go | 968 +----------- .../coze.loop.observability.trace.thrift | 35 +- .../observability/domain/annotation.thrift | 6 + 8 files changed, 574 insertions(+), 2358 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/annotation/annotation.go b/backend/kitex_gen/coze/loop/observability/domain/annotation/annotation.go index 90aa0003b..98e42d887 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/annotation/annotation.go +++ b/backend/kitex_gen/coze/loop/observability/domain/annotation/annotation.go @@ -2751,3 +2751,312 @@ func (p *Annotation) Field102DeepEqual(src *ManualFeedback) bool { } return true } + +type AnnotationEvaluator struct { + EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` + EvaluatorName string `thrift:"evaluator_name,2,required" frugal:"2,required,string" form:"evaluator_name,required" json:"evaluator_name,required" query:"evaluator_name,required"` + EvaluatorVersion string `thrift:"evaluator_version,3,required" frugal:"3,required,string" form:"evaluator_version,required" json:"evaluator_version,required" query:"evaluator_version,required"` +} + +func NewAnnotationEvaluator() *AnnotationEvaluator { + return &AnnotationEvaluator{} +} + +func (p *AnnotationEvaluator) InitDefault() { +} + +func (p *AnnotationEvaluator) GetEvaluatorVersionID() (v int64) { + if p != nil { + return p.EvaluatorVersionID + } + return +} + +func (p *AnnotationEvaluator) GetEvaluatorName() (v string) { + if p != nil { + return p.EvaluatorName + } + return +} + +func (p *AnnotationEvaluator) GetEvaluatorVersion() (v string) { + if p != nil { + return p.EvaluatorVersion + } + return +} +func (p *AnnotationEvaluator) SetEvaluatorVersionID(val int64) { + p.EvaluatorVersionID = val +} +func (p *AnnotationEvaluator) SetEvaluatorName(val string) { + p.EvaluatorName = val +} +func (p *AnnotationEvaluator) SetEvaluatorVersion(val string) { + p.EvaluatorVersion = val +} + +var fieldIDToName_AnnotationEvaluator = map[int16]string{ + 1: "evaluator_version_id", + 2: "evaluator_name", + 3: "evaluator_version", +} + +func (p *AnnotationEvaluator) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluatorVersionID bool = false + var issetEvaluatorName bool = false + var issetEvaluatorVersion bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorVersionID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorName = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetEvaluatorVersion = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetEvaluatorVersionID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorName { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorVersion { + fieldId = 3 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AnnotationEvaluator[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_AnnotationEvaluator[fieldId])) +} + +func (p *AnnotationEvaluator) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorVersionID = _field + return nil +} +func (p *AnnotationEvaluator) ReadField2(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorName = _field + return nil +} +func (p *AnnotationEvaluator) ReadField3(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.EvaluatorVersion = _field + return nil +} + +func (p *AnnotationEvaluator) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("AnnotationEvaluator"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *AnnotationEvaluator) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_version_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EvaluatorVersionID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *AnnotationEvaluator) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.EvaluatorName); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *AnnotationEvaluator) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("evaluator_version", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.EvaluatorVersion); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *AnnotationEvaluator) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("AnnotationEvaluator(%+v)", *p) + +} + +func (p *AnnotationEvaluator) DeepEqual(ano *AnnotationEvaluator) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.EvaluatorVersionID) { + return false + } + if !p.Field2DeepEqual(ano.EvaluatorName) { + return false + } + if !p.Field3DeepEqual(ano.EvaluatorVersion) { + return false + } + return true +} + +func (p *AnnotationEvaluator) Field1DeepEqual(src int64) bool { + + if p.EvaluatorVersionID != src { + return false + } + return true +} +func (p *AnnotationEvaluator) Field2DeepEqual(src string) bool { + + if strings.Compare(p.EvaluatorName, src) != 0 { + return false + } + return true +} +func (p *AnnotationEvaluator) Field3DeepEqual(src string) bool { + + if strings.Compare(p.EvaluatorVersion, src) != 0 { + return false + } + return true +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/annotation/annotation_validator.go b/backend/kitex_gen/coze/loop/observability/domain/annotation/annotation_validator.go index 25668286a..76b7d2d3b 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/annotation/annotation_validator.go +++ b/backend/kitex_gen/coze/loop/observability/domain/annotation/annotation_validator.go @@ -96,3 +96,6 @@ func (p *Annotation) IsValid() error { } return nil } +func (p *AnnotationEvaluator) IsValid() error { + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/annotation/k-annotation.go b/backend/kitex_gen/coze/loop/observability/domain/annotation/k-annotation.go index 4fa587ede..ba5cf5fb2 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/annotation/k-annotation.go +++ b/backend/kitex_gen/coze/loop/observability/domain/annotation/k-annotation.go @@ -1991,3 +1991,231 @@ func (p *Annotation) DeepCopy(s interface{}) error { return nil } + +func (p *AnnotationEvaluator) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetEvaluatorVersionID bool = false + var issetEvaluatorName bool = false + var issetEvaluatorVersion bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorVersionID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorName = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEvaluatorVersion = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetEvaluatorVersionID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorName { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetEvaluatorVersion { + fieldId = 3 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AnnotationEvaluator[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_AnnotationEvaluator[fieldId])) +} + +func (p *AnnotationEvaluator) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorVersionID = _field + return offset, nil +} + +func (p *AnnotationEvaluator) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorName = _field + return offset, nil +} + +func (p *AnnotationEvaluator) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EvaluatorVersion = _field + return offset, nil +} + +func (p *AnnotationEvaluator) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *AnnotationEvaluator) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *AnnotationEvaluator) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *AnnotationEvaluator) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorVersionID) + return offset +} + +func (p *AnnotationEvaluator) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.EvaluatorName) + return offset +} + +func (p *AnnotationEvaluator) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.EvaluatorVersion) + return offset +} + +func (p *AnnotationEvaluator) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AnnotationEvaluator) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.EvaluatorName) + return l +} + +func (p *AnnotationEvaluator) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.EvaluatorVersion) + return l +} + +func (p *AnnotationEvaluator) DeepCopy(s interface{}) error { + src, ok := s.(*AnnotationEvaluator) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.EvaluatorVersionID = src.EvaluatorVersionID + + if src.EvaluatorName != "" { + p.EvaluatorName = kutils.StringDeepCopy(src.EvaluatorName) + } + + if src.EvaluatorVersion != "" { + p.EvaluatorVersion = kutils.StringDeepCopy(src.EvaluatorVersion) + } + + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index 3864df85c..053b5be11 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -18,18 +18,6 @@ import ( "strings" ) -const ( - ContentTypeText = "Text" - - ContentTypeImage = "Image" - - ContentTypeAudio = "Audio" - - ContentTypeMultiPart = "MultiPart" -) - -type ContentType = string - type ListSpansRequest struct { WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` // ms @@ -15345,315 +15333,6 @@ func (p *ChangeEvaluatorScoreResponse) Field255DeepEqual(src *base.BaseResp) boo return true } -type AnnotationEvaluator struct { - EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` - EvaluatorName string `thrift:"evaluator_name,2,required" frugal:"2,required,string" form:"evaluator_name,required" json:"evaluator_name,required" query:"evaluator_name,required"` - EvaluatorVersion string `thrift:"evaluator_version,3,required" frugal:"3,required,string" form:"evaluator_version,required" json:"evaluator_version,required" query:"evaluator_version,required"` -} - -func NewAnnotationEvaluator() *AnnotationEvaluator { - return &AnnotationEvaluator{} -} - -func (p *AnnotationEvaluator) InitDefault() { -} - -func (p *AnnotationEvaluator) GetEvaluatorVersionID() (v int64) { - if p != nil { - return p.EvaluatorVersionID - } - return -} - -func (p *AnnotationEvaluator) GetEvaluatorName() (v string) { - if p != nil { - return p.EvaluatorName - } - return -} - -func (p *AnnotationEvaluator) GetEvaluatorVersion() (v string) { - if p != nil { - return p.EvaluatorVersion - } - return -} -func (p *AnnotationEvaluator) SetEvaluatorVersionID(val int64) { - p.EvaluatorVersionID = val -} -func (p *AnnotationEvaluator) SetEvaluatorName(val string) { - p.EvaluatorName = val -} -func (p *AnnotationEvaluator) SetEvaluatorVersion(val string) { - p.EvaluatorVersion = val -} - -var fieldIDToName_AnnotationEvaluator = map[int16]string{ - 1: "evaluator_version_id", - 2: "evaluator_name", - 3: "evaluator_version", -} - -func (p *AnnotationEvaluator) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - var issetEvaluatorVersionID bool = false - var issetEvaluatorName bool = false - var issetEvaluatorVersion bool = false - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - issetEvaluatorVersionID = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 2: - if fieldTypeId == thrift.STRING { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - issetEvaluatorName = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 3: - if fieldTypeId == thrift.STRING { - if err = p.ReadField3(iprot); err != nil { - goto ReadFieldError - } - issetEvaluatorVersion = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - if !issetEvaluatorVersionID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetEvaluatorName { - fieldId = 2 - goto RequiredFieldNotSetError - } - - if !issetEvaluatorVersion { - fieldId = 3 - goto RequiredFieldNotSetError - } - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AnnotationEvaluator[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_AnnotationEvaluator[fieldId])) -} - -func (p *AnnotationEvaluator) ReadField1(iprot thrift.TProtocol) error { - - var _field int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = v - } - p.EvaluatorVersionID = _field - return nil -} -func (p *AnnotationEvaluator) ReadField2(iprot thrift.TProtocol) error { - - var _field string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = v - } - p.EvaluatorName = _field - return nil -} -func (p *AnnotationEvaluator) ReadField3(iprot thrift.TProtocol) error { - - var _field string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = v - } - p.EvaluatorVersion = _field - return nil -} - -func (p *AnnotationEvaluator) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("AnnotationEvaluator"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField2(oprot); err != nil { - fieldId = 2 - goto WriteFieldError - } - if err = p.writeField3(oprot); err != nil { - fieldId = 3 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *AnnotationEvaluator) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluator_version_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.EvaluatorVersionID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *AnnotationEvaluator) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluator_name", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(p.EvaluatorName); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} -func (p *AnnotationEvaluator) writeField3(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluator_version", thrift.STRING, 3); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(p.EvaluatorVersion); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) -} - -func (p *AnnotationEvaluator) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("AnnotationEvaluator(%+v)", *p) - -} - -func (p *AnnotationEvaluator) DeepEqual(ano *AnnotationEvaluator) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.EvaluatorVersionID) { - return false - } - if !p.Field2DeepEqual(ano.EvaluatorName) { - return false - } - if !p.Field3DeepEqual(ano.EvaluatorVersion) { - return false - } - return true -} - -func (p *AnnotationEvaluator) Field1DeepEqual(src int64) bool { - - if p.EvaluatorVersionID != src { - return false - } - return true -} -func (p *AnnotationEvaluator) Field2DeepEqual(src string) bool { - - if strings.Compare(p.EvaluatorName, src) != 0 { - return false - } - return true -} -func (p *AnnotationEvaluator) Field3DeepEqual(src string) bool { - - if strings.Compare(p.EvaluatorVersion, src) != 0 { - return false - } - return true -} - type ListAnnotationEvaluatorsRequest struct { WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` Name *string `thrift:"name,2,optional" frugal:"2,optional,string" json:"name,omitempty" query:"name"` @@ -15974,8 +15653,8 @@ func (p *ListAnnotationEvaluatorsRequest) Field255DeepEqual(src *base.Base) bool } type ListAnnotationEvaluatorsResponse struct { - Evaluators []*AnnotationEvaluator `thrift:"evaluators,1,required" frugal:"1,required,list" form:"evaluators,required" json:"evaluators,required" query:"evaluators,required"` - BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` + Evaluators []*annotation.AnnotationEvaluator `thrift:"evaluators,1,required" frugal:"1,required,list" form:"evaluators,required" json:"evaluators,required" query:"evaluators,required"` + BaseResp *base.BaseResp `thrift:"BaseResp,255,optional" frugal:"255,optional,base.BaseResp" form:"BaseResp" json:"BaseResp,omitempty" query:"BaseResp"` } func NewListAnnotationEvaluatorsResponse() *ListAnnotationEvaluatorsResponse { @@ -15985,7 +15664,7 @@ func NewListAnnotationEvaluatorsResponse() *ListAnnotationEvaluatorsResponse { func (p *ListAnnotationEvaluatorsResponse) InitDefault() { } -func (p *ListAnnotationEvaluatorsResponse) GetEvaluators() (v []*AnnotationEvaluator) { +func (p *ListAnnotationEvaluatorsResponse) GetEvaluators() (v []*annotation.AnnotationEvaluator) { if p != nil { return p.Evaluators } @@ -16003,7 +15682,7 @@ func (p *ListAnnotationEvaluatorsResponse) GetBaseResp() (v *base.BaseResp) { } return p.BaseResp } -func (p *ListAnnotationEvaluatorsResponse) SetEvaluators(val []*AnnotationEvaluator) { +func (p *ListAnnotationEvaluatorsResponse) SetEvaluators(val []*annotation.AnnotationEvaluator) { p.Evaluators = val } func (p *ListAnnotationEvaluatorsResponse) SetBaseResp(val *base.BaseResp) { @@ -16095,8 +15774,8 @@ func (p *ListAnnotationEvaluatorsResponse) ReadField1(iprot thrift.TProtocol) er if err != nil { return err } - _field := make([]*AnnotationEvaluator, 0, size) - values := make([]AnnotationEvaluator, size) + _field := make([]*annotation.AnnotationEvaluator, 0, size) + values := make([]annotation.AnnotationEvaluator, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -16220,7 +15899,7 @@ func (p *ListAnnotationEvaluatorsResponse) DeepEqual(ano *ListAnnotationEvaluato return true } -func (p *ListAnnotationEvaluatorsResponse) Field1DeepEqual(src []*AnnotationEvaluator) bool { +func (p *ListAnnotationEvaluatorsResponse) Field1DeepEqual(src []*annotation.AnnotationEvaluator) bool { if len(p.Evaluators) != len(src) { return false @@ -16974,1021 +16653,9 @@ func (p *ExtractSpanInfoRequest) Field255DeepEqual(src *base.Base) bool { return true } -type FieldData struct { - Key *string `thrift:"key,1,optional" frugal:"1,optional,string" form:"key" json:"key,omitempty" query:"key"` - Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty" query:"name"` - Content *Content `thrift:"content,3,optional" frugal:"3,optional,Content" form:"content" json:"content,omitempty" query:"content"` -} - -func NewFieldData() *FieldData { - return &FieldData{} -} - -func (p *FieldData) InitDefault() { -} - -var FieldData_Key_DEFAULT string - -func (p *FieldData) GetKey() (v string) { - if p == nil { - return - } - if !p.IsSetKey() { - return FieldData_Key_DEFAULT - } - return *p.Key -} - -var FieldData_Name_DEFAULT string - -func (p *FieldData) GetName() (v string) { - if p == nil { - return - } - if !p.IsSetName() { - return FieldData_Name_DEFAULT - } - return *p.Name -} - -var FieldData_Content_DEFAULT *Content - -func (p *FieldData) GetContent() (v *Content) { - if p == nil { - return - } - if !p.IsSetContent() { - return FieldData_Content_DEFAULT - } - return p.Content -} -func (p *FieldData) SetKey(val *string) { - p.Key = val -} -func (p *FieldData) SetName(val *string) { - p.Name = val -} -func (p *FieldData) SetContent(val *Content) { - p.Content = val -} - -var fieldIDToName_FieldData = map[int16]string{ - 1: "key", - 2: "name", - 3: "content", -} - -func (p *FieldData) IsSetKey() bool { - return p.Key != nil -} - -func (p *FieldData) IsSetName() bool { - return p.Name != nil -} - -func (p *FieldData) IsSetContent() bool { - return p.Content != nil -} - -func (p *FieldData) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.STRING { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 2: - if fieldTypeId == thrift.STRING { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 3: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField3(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldData[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *FieldData) ReadField1(iprot thrift.TProtocol) error { - - var _field *string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.Key = _field - return nil -} -func (p *FieldData) ReadField2(iprot thrift.TProtocol) error { - - var _field *string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.Name = _field - return nil -} -func (p *FieldData) ReadField3(iprot thrift.TProtocol) error { - _field := NewContent() - if err := _field.Read(iprot); err != nil { - return err - } - p.Content = _field - return nil -} - -func (p *FieldData) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("FieldData"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField2(oprot); err != nil { - fieldId = 2 - goto WriteFieldError - } - if err = p.writeField3(oprot); err != nil { - fieldId = 3 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *FieldData) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetKey() { - if err = oprot.WriteFieldBegin("key", thrift.STRING, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Key); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *FieldData) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetName() { - if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Name); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} -func (p *FieldData) writeField3(oprot thrift.TProtocol) (err error) { - if p.IsSetContent() { - if err = oprot.WriteFieldBegin("content", thrift.STRUCT, 3); err != nil { - goto WriteFieldBeginError - } - if err := p.Content.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) -} - -func (p *FieldData) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("FieldData(%+v)", *p) - -} - -func (p *FieldData) DeepEqual(ano *FieldData) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.Key) { - return false - } - if !p.Field2DeepEqual(ano.Name) { - return false - } - if !p.Field3DeepEqual(ano.Content) { - return false - } - return true -} - -func (p *FieldData) Field1DeepEqual(src *string) bool { - - if p.Key == src { - return true - } else if p.Key == nil || src == nil { - return false - } - if strings.Compare(*p.Key, *src) != 0 { - return false - } - return true -} -func (p *FieldData) Field2DeepEqual(src *string) bool { - - if p.Name == src { - return true - } else if p.Name == nil || src == nil { - return false - } - if strings.Compare(*p.Name, *src) != 0 { - return false - } - return true -} -func (p *FieldData) Field3DeepEqual(src *Content) bool { - - if !p.Content.DeepEqual(src) { - return false - } - return true -} - -type Content struct { - ContentType *ContentType `thrift:"contentType,1,optional" frugal:"1,optional,string" json:"content_type" form:"contentType" query:"contentType"` - Text *string `thrift:"text,10,optional" frugal:"10,optional,string" json:"text" form:"text" query:"text"` - // 图片内容 - Image *Image `thrift:"image,11,optional" frugal:"11,optional,Image" json:"image" form:"image" query:"image"` - // 图文混排时,图文内容 - MultiPart []*Content `thrift:"multiPart,12,optional" frugal:"12,optional,list" json:"multi_part" form:"multiPart" query:"multiPart"` -} - -func NewContent() *Content { - return &Content{} -} - -func (p *Content) InitDefault() { -} - -var Content_ContentType_DEFAULT ContentType - -func (p *Content) GetContentType() (v ContentType) { - if p == nil { - return - } - if !p.IsSetContentType() { - return Content_ContentType_DEFAULT - } - return *p.ContentType -} - -var Content_Text_DEFAULT string - -func (p *Content) GetText() (v string) { - if p == nil { - return - } - if !p.IsSetText() { - return Content_Text_DEFAULT - } - return *p.Text -} - -var Content_Image_DEFAULT *Image - -func (p *Content) GetImage() (v *Image) { - if p == nil { - return - } - if !p.IsSetImage() { - return Content_Image_DEFAULT - } - return p.Image -} - -var Content_MultiPart_DEFAULT []*Content - -func (p *Content) GetMultiPart() (v []*Content) { - if p == nil { - return - } - if !p.IsSetMultiPart() { - return Content_MultiPart_DEFAULT - } - return p.MultiPart -} -func (p *Content) SetContentType(val *ContentType) { - p.ContentType = val -} -func (p *Content) SetText(val *string) { - p.Text = val -} -func (p *Content) SetImage(val *Image) { - p.Image = val -} -func (p *Content) SetMultiPart(val []*Content) { - p.MultiPart = val -} - -var fieldIDToName_Content = map[int16]string{ - 1: "contentType", - 10: "text", - 11: "image", - 12: "multiPart", -} - -func (p *Content) IsSetContentType() bool { - return p.ContentType != nil -} - -func (p *Content) IsSetText() bool { - return p.Text != nil -} - -func (p *Content) IsSetImage() bool { - return p.Image != nil -} - -func (p *Content) IsSetMultiPart() bool { - return p.MultiPart != nil -} - -func (p *Content) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.STRING { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 10: - if fieldTypeId == thrift.STRING { - if err = p.ReadField10(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 11: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField11(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 12: - if fieldTypeId == thrift.LIST { - if err = p.ReadField12(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Content[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *Content) ReadField1(iprot thrift.TProtocol) error { - - var _field *ContentType - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.ContentType = _field - return nil -} -func (p *Content) ReadField10(iprot thrift.TProtocol) error { - - var _field *string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.Text = _field - return nil -} -func (p *Content) ReadField11(iprot thrift.TProtocol) error { - _field := NewImage() - if err := _field.Read(iprot); err != nil { - return err - } - p.Image = _field - return nil -} -func (p *Content) ReadField12(iprot thrift.TProtocol) error { - _, size, err := iprot.ReadListBegin() - if err != nil { - return err - } - _field := make([]*Content, 0, size) - values := make([]Content, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - - if err := _elem.Read(iprot); err != nil { - return err - } - - _field = append(_field, _elem) - } - if err := iprot.ReadListEnd(); err != nil { - return err - } - p.MultiPart = _field - return nil -} - -func (p *Content) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("Content"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField10(oprot); err != nil { - fieldId = 10 - goto WriteFieldError - } - if err = p.writeField11(oprot); err != nil { - fieldId = 11 - goto WriteFieldError - } - if err = p.writeField12(oprot); err != nil { - fieldId = 12 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *Content) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetContentType() { - if err = oprot.WriteFieldBegin("contentType", thrift.STRING, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.ContentType); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *Content) writeField10(oprot thrift.TProtocol) (err error) { - if p.IsSetText() { - if err = oprot.WriteFieldBegin("text", thrift.STRING, 10); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Text); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) -} -func (p *Content) writeField11(oprot thrift.TProtocol) (err error) { - if p.IsSetImage() { - if err = oprot.WriteFieldBegin("image", thrift.STRUCT, 11); err != nil { - goto WriteFieldBeginError - } - if err := p.Image.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 11 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) -} -func (p *Content) writeField12(oprot thrift.TProtocol) (err error) { - if p.IsSetMultiPart() { - if err = oprot.WriteFieldBegin("multiPart", thrift.LIST, 12); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.MultiPart)); err != nil { - return err - } - for _, v := range p.MultiPart { - if err := v.Write(oprot); err != nil { - return err - } - } - if err := oprot.WriteListEnd(); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 12 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 12 end error: ", p), err) -} - -func (p *Content) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("Content(%+v)", *p) - -} - -func (p *Content) DeepEqual(ano *Content) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.ContentType) { - return false - } - if !p.Field10DeepEqual(ano.Text) { - return false - } - if !p.Field11DeepEqual(ano.Image) { - return false - } - if !p.Field12DeepEqual(ano.MultiPart) { - return false - } - return true -} - -func (p *Content) Field1DeepEqual(src *ContentType) bool { - - if p.ContentType == src { - return true - } else if p.ContentType == nil || src == nil { - return false - } - if strings.Compare(*p.ContentType, *src) != 0 { - return false - } - return true -} -func (p *Content) Field10DeepEqual(src *string) bool { - - if p.Text == src { - return true - } else if p.Text == nil || src == nil { - return false - } - if strings.Compare(*p.Text, *src) != 0 { - return false - } - return true -} -func (p *Content) Field11DeepEqual(src *Image) bool { - - if !p.Image.DeepEqual(src) { - return false - } - return true -} -func (p *Content) Field12DeepEqual(src []*Content) bool { - - if len(p.MultiPart) != len(src) { - return false - } - for i, v := range p.MultiPart { - _src := src[i] - if !v.DeepEqual(_src) { - return false - } - } - return true -} - -type Image struct { - Name *string `thrift:"name,1,optional" frugal:"1,optional,string" json:"name" form:"name" query:"name"` - URL *string `thrift:"url,2,optional" frugal:"2,optional,string" json:"url" form:"url" query:"url"` -} - -func NewImage() *Image { - return &Image{} -} - -func (p *Image) InitDefault() { -} - -var Image_Name_DEFAULT string - -func (p *Image) GetName() (v string) { - if p == nil { - return - } - if !p.IsSetName() { - return Image_Name_DEFAULT - } - return *p.Name -} - -var Image_URL_DEFAULT string - -func (p *Image) GetURL() (v string) { - if p == nil { - return - } - if !p.IsSetURL() { - return Image_URL_DEFAULT - } - return *p.URL -} -func (p *Image) SetName(val *string) { - p.Name = val -} -func (p *Image) SetURL(val *string) { - p.URL = val -} - -var fieldIDToName_Image = map[int16]string{ - 1: "name", - 2: "url", -} - -func (p *Image) IsSetName() bool { - return p.Name != nil -} - -func (p *Image) IsSetURL() bool { - return p.URL != nil -} - -func (p *Image) Read(iprot thrift.TProtocol) (err error) { - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.STRING { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 2: - if fieldTypeId == thrift.STRING { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Image[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *Image) ReadField1(iprot thrift.TProtocol) error { - - var _field *string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.Name = _field - return nil -} -func (p *Image) ReadField2(iprot thrift.TProtocol) error { - - var _field *string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.URL = _field - return nil -} - -func (p *Image) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("Image"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField2(oprot); err != nil { - fieldId = 2 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *Image) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetName() { - if err = oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Name); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} -func (p *Image) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetURL() { - if err = oprot.WriteFieldBegin("url", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.URL); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} - -func (p *Image) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("Image(%+v)", *p) - -} - -func (p *Image) DeepEqual(ano *Image) bool { - if p == ano { - return true - } else if p == nil || ano == nil { - return false - } - if !p.Field1DeepEqual(ano.Name) { - return false - } - if !p.Field2DeepEqual(ano.URL) { - return false - } - return true -} - -func (p *Image) Field1DeepEqual(src *string) bool { - - if p.Name == src { - return true - } else if p.Name == nil || src == nil { - return false - } - if strings.Compare(*p.Name, *src) != 0 { - return false - } - return true -} -func (p *Image) Field2DeepEqual(src *string) bool { - - if p.URL == src { - return true - } else if p.URL == nil || src == nil { - return false - } - if strings.Compare(*p.URL, *src) != 0 { - return false - } - return true -} - type SpanInfo struct { - SpanID string `thrift:"span_id,1,required" frugal:"1,required,string" form:"span_id,required" json:"span_id,required" query:"span_id,required"` - FieldList []*FieldData `thrift:"field_list,2,required" frugal:"2,required,list" form:"field_list,required" json:"field_list,required" query:"field_list,required"` + SpanID string `thrift:"span_id,1,required" frugal:"1,required,string" form:"span_id,required" json:"span_id,required" query:"span_id,required"` + FieldList []*dataset0.FieldData `thrift:"field_list,2,required" frugal:"2,required,list" form:"field_list,required" json:"field_list,required" query:"field_list,required"` } func NewSpanInfo() *SpanInfo { @@ -18005,7 +16672,7 @@ func (p *SpanInfo) GetSpanID() (v string) { return } -func (p *SpanInfo) GetFieldList() (v []*FieldData) { +func (p *SpanInfo) GetFieldList() (v []*dataset0.FieldData) { if p != nil { return p.FieldList } @@ -18014,7 +16681,7 @@ func (p *SpanInfo) GetFieldList() (v []*FieldData) { func (p *SpanInfo) SetSpanID(val string) { p.SpanID = val } -func (p *SpanInfo) SetFieldList(val []*FieldData) { +func (p *SpanInfo) SetFieldList(val []*dataset0.FieldData) { p.FieldList = val } @@ -18117,8 +16784,8 @@ func (p *SpanInfo) ReadField2(iprot thrift.TProtocol) error { if err != nil { return err } - _field := make([]*FieldData, 0, size) - values := make([]FieldData, size) + _field := make([]*dataset0.FieldData, 0, size) + values := make([]dataset0.FieldData, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -18239,7 +16906,7 @@ func (p *SpanInfo) Field1DeepEqual(src string) bool { } return true } -func (p *SpanInfo) Field2DeepEqual(src []*FieldData) bool { +func (p *SpanInfo) Field2DeepEqual(src []*dataset0.FieldData) bool { if len(p.FieldList) != len(src) { return false diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go index 2a8229a83..7b1ed400b 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go @@ -420,9 +420,6 @@ func (p *ChangeEvaluatorScoreResponse) IsValid() error { } return nil } -func (p *AnnotationEvaluator) IsValid() error { - return nil -} func (p *ListAnnotationEvaluatorsRequest) IsValid() error { if p.WorkspaceID <= int64(0) { return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) @@ -478,25 +475,6 @@ func (p *ExtractSpanInfoRequest) IsValid() error { } return nil } -func (p *FieldData) IsValid() error { - if p.Content != nil { - if err := p.Content.IsValid(); err != nil { - return fmt.Errorf("field Content not valid, %w", err) - } - } - return nil -} -func (p *Content) IsValid() error { - if p.Image != nil { - if err := p.Image.IsValid(); err != nil { - return fmt.Errorf("field Image not valid, %w", err) - } - } - return nil -} -func (p *Image) IsValid() error { - return nil -} func (p *SpanInfo) IsValid() error { return nil } diff --git a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go index 2c34a1f4b..5378141cc 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go @@ -11395,234 +11395,6 @@ func (p *ChangeEvaluatorScoreResponse) DeepCopy(s interface{}) error { return nil } -func (p *AnnotationEvaluator) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - var issetEvaluatorVersionID bool = false - var issetEvaluatorName bool = false - var issetEvaluatorVersion bool = false - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetEvaluatorVersionID = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 2: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField2(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetEvaluatorName = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 3: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField3(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - issetEvaluatorVersion = true - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - if !issetEvaluatorVersionID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetEvaluatorName { - fieldId = 2 - goto RequiredFieldNotSetError - } - - if !issetEvaluatorVersion { - fieldId = 3 - goto RequiredFieldNotSetError - } - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AnnotationEvaluator[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_AnnotationEvaluator[fieldId])) -} - -func (p *AnnotationEvaluator) FastReadField1(buf []byte) (int, error) { - offset := 0 - - var _field int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.EvaluatorVersionID = _field - return offset, nil -} - -func (p *AnnotationEvaluator) FastReadField2(buf []byte) (int, error) { - offset := 0 - - var _field string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.EvaluatorName = _field - return offset, nil -} - -func (p *AnnotationEvaluator) FastReadField3(buf []byte) (int, error) { - offset := 0 - - var _field string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.EvaluatorVersion = _field - return offset, nil -} - -func (p *AnnotationEvaluator) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *AnnotationEvaluator) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) - offset += p.fastWriteField3(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *AnnotationEvaluator) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field2Length() - l += p.field3Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *AnnotationEvaluator) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorVersionID) - return offset -} - -func (p *AnnotationEvaluator) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.EvaluatorName) - return offset -} - -func (p *AnnotationEvaluator) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.EvaluatorVersion) - return offset -} - -func (p *AnnotationEvaluator) field1Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - return l -} - -func (p *AnnotationEvaluator) field2Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(p.EvaluatorName) - return l -} - -func (p *AnnotationEvaluator) field3Length() int { - l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(p.EvaluatorVersion) - return l -} - -func (p *AnnotationEvaluator) DeepCopy(s interface{}) error { - src, ok := s.(*AnnotationEvaluator) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - p.EvaluatorVersionID = src.EvaluatorVersionID - - if src.EvaluatorName != "" { - p.EvaluatorName = kutils.StringDeepCopy(src.EvaluatorName) - } - - if src.EvaluatorVersion != "" { - p.EvaluatorVersion = kutils.StringDeepCopy(src.EvaluatorVersion) - } - - return nil -} - func (p *ListAnnotationEvaluatorsRequest) FastRead(buf []byte) (int, error) { var err error @@ -11931,8 +11703,8 @@ func (p *ListAnnotationEvaluatorsResponse) FastReadField1(buf []byte) (int, erro if err != nil { return offset, err } - _field := make([]*AnnotationEvaluator, 0, size) - values := make([]AnnotationEvaluator, size) + _field := make([]*annotation.AnnotationEvaluator, 0, size) + values := make([]annotation.AnnotationEvaluator, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -12034,11 +11806,11 @@ func (p *ListAnnotationEvaluatorsResponse) DeepCopy(s interface{}) error { } if src.Evaluators != nil { - p.Evaluators = make([]*AnnotationEvaluator, 0, len(src.Evaluators)) + p.Evaluators = make([]*annotation.AnnotationEvaluator, 0, len(src.Evaluators)) for _, elem := range src.Evaluators { - var _elem *AnnotationEvaluator + var _elem *annotation.AnnotationEvaluator if elem != nil { - _elem = &AnnotationEvaluator{} + _elem = &annotation.AnnotationEvaluator{} if err := _elem.DeepCopy(elem); err != nil { return err } @@ -12615,726 +12387,6 @@ func (p *ExtractSpanInfoRequest) DeepCopy(s interface{}) error { return nil } -func (p *FieldData) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 2: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField2(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 3: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField3(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldData[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *FieldData) FastReadField1(buf []byte) (int, error) { - offset := 0 - - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.Key = _field - return offset, nil -} - -func (p *FieldData) FastReadField2(buf []byte) (int, error) { - offset := 0 - - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.Name = _field - return offset, nil -} - -func (p *FieldData) FastReadField3(buf []byte) (int, error) { - offset := 0 - _field := NewContent() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Content = _field - return offset, nil -} - -func (p *FieldData) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *FieldData) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) - offset += p.fastWriteField3(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *FieldData) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field2Length() - l += p.field3Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *FieldData) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetKey() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Key) - } - return offset -} - -func (p *FieldData) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetName() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) - } - return offset -} - -func (p *FieldData) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetContent() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 3) - offset += p.Content.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *FieldData) field1Length() int { - l := 0 - if p.IsSetKey() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Key) - } - return l -} - -func (p *FieldData) field2Length() int { - l := 0 - if p.IsSetName() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Name) - } - return l -} - -func (p *FieldData) field3Length() int { - l := 0 - if p.IsSetContent() { - l += thrift.Binary.FieldBeginLength() - l += p.Content.BLength() - } - return l -} - -func (p *FieldData) DeepCopy(s interface{}) error { - src, ok := s.(*FieldData) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - if src.Key != nil { - var tmp string - if *src.Key != "" { - tmp = kutils.StringDeepCopy(*src.Key) - } - p.Key = &tmp - } - - if src.Name != nil { - var tmp string - if *src.Name != "" { - tmp = kutils.StringDeepCopy(*src.Name) - } - p.Name = &tmp - } - - var _content *Content - if src.Content != nil { - _content = &Content{} - if err := _content.DeepCopy(src.Content); err != nil { - return err - } - } - p.Content = _content - - return nil -} - -func (p *Content) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 10: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField10(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 11: - if fieldTypeId == thrift.STRUCT { - l, err = p.FastReadField11(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 12: - if fieldTypeId == thrift.LIST { - l, err = p.FastReadField12(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Content[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *Content) FastReadField1(buf []byte) (int, error) { - offset := 0 - - var _field *ContentType - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.ContentType = _field - return offset, nil -} - -func (p *Content) FastReadField10(buf []byte) (int, error) { - offset := 0 - - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.Text = _field - return offset, nil -} - -func (p *Content) FastReadField11(buf []byte) (int, error) { - offset := 0 - _field := NewImage() - if l, err := _field.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - p.Image = _field - return offset, nil -} - -func (p *Content) FastReadField12(buf []byte) (int, error) { - offset := 0 - - _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) - offset += l - if err != nil { - return offset, err - } - _field := make([]*Content, 0, size) - values := make([]Content, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - if l, err := _elem.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - - _field = append(_field, _elem) - } - p.MultiPart = _field - return offset, nil -} - -func (p *Content) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *Content) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField10(buf[offset:], w) - offset += p.fastWriteField11(buf[offset:], w) - offset += p.fastWriteField12(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *Content) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field10Length() - l += p.field11Length() - l += p.field12Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *Content) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetContentType() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ContentType) - } - return offset -} - -func (p *Content) fastWriteField10(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetText() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 10) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Text) - } - return offset -} - -func (p *Content) fastWriteField11(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetImage() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 11) - offset += p.Image.FastWriteNocopy(buf[offset:], w) - } - return offset -} - -func (p *Content) fastWriteField12(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetMultiPart() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 12) - listBeginOffset := offset - offset += thrift.Binary.ListBeginLength() - var length int - for _, v := range p.MultiPart { - length++ - offset += v.FastWriteNocopy(buf[offset:], w) - } - thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) - } - return offset -} - -func (p *Content) field1Length() int { - l := 0 - if p.IsSetContentType() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.ContentType) - } - return l -} - -func (p *Content) field10Length() int { - l := 0 - if p.IsSetText() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Text) - } - return l -} - -func (p *Content) field11Length() int { - l := 0 - if p.IsSetImage() { - l += thrift.Binary.FieldBeginLength() - l += p.Image.BLength() - } - return l -} - -func (p *Content) field12Length() int { - l := 0 - if p.IsSetMultiPart() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.ListBeginLength() - for _, v := range p.MultiPart { - _ = v - l += v.BLength() - } - } - return l -} - -func (p *Content) DeepCopy(s interface{}) error { - src, ok := s.(*Content) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - if src.ContentType != nil { - tmp := *src.ContentType - p.ContentType = &tmp - } - - if src.Text != nil { - var tmp string - if *src.Text != "" { - tmp = kutils.StringDeepCopy(*src.Text) - } - p.Text = &tmp - } - - var _image *Image - if src.Image != nil { - _image = &Image{} - if err := _image.DeepCopy(src.Image); err != nil { - return err - } - } - p.Image = _image - - if src.MultiPart != nil { - p.MultiPart = make([]*Content, 0, len(src.MultiPart)) - for _, elem := range src.MultiPart { - var _elem *Content - if elem != nil { - _elem = &Content{} - if err := _elem.DeepCopy(elem); err != nil { - return err - } - } - - p.MultiPart = append(p.MultiPart, _elem) - } - } - - return nil -} - -func (p *Image) FastRead(buf []byte) (int, error) { - - var err error - var offset int - var l int - var fieldTypeId thrift.TType - var fieldId int16 - for { - fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - switch fieldId { - case 1: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField1(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - case 2: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField2(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - default: - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } - } - - return offset, nil -ReadFieldBeginError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_Image[fieldId]), err) -SkipFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -} - -func (p *Image) FastReadField1(buf []byte) (int, error) { - offset := 0 - - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.Name = _field - return offset, nil -} - -func (p *Image) FastReadField2(buf []byte) (int, error) { - offset := 0 - - var _field *string - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = &v - } - p.URL = _field - return offset, nil -} - -func (p *Image) FastWrite(buf []byte) int { - return p.FastWriteNocopy(buf, nil) -} - -func (p *Image) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p != nil { - offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) - } - offset += thrift.Binary.WriteFieldStop(buf[offset:]) - return offset -} - -func (p *Image) BLength() int { - l := 0 - if p != nil { - l += p.field1Length() - l += p.field2Length() - } - l += thrift.Binary.FieldStopLength() - return l -} - -func (p *Image) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetName() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) - } - return offset -} - -func (p *Image) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetURL() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.URL) - } - return offset -} - -func (p *Image) field1Length() int { - l := 0 - if p.IsSetName() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.Name) - } - return l -} - -func (p *Image) field2Length() int { - l := 0 - if p.IsSetURL() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.URL) - } - return l -} - -func (p *Image) DeepCopy(s interface{}) error { - src, ok := s.(*Image) - if !ok { - return fmt.Errorf("%T's type not matched %T", s, p) - } - - if src.Name != nil { - var tmp string - if *src.Name != "" { - tmp = kutils.StringDeepCopy(*src.Name) - } - p.Name = &tmp - } - - if src.URL != nil { - var tmp string - if *src.URL != "" { - tmp = kutils.StringDeepCopy(*src.URL) - } - p.URL = &tmp - } - - return nil -} - func (p *SpanInfo) FastRead(buf []byte) (int, error) { var err error @@ -13435,8 +12487,8 @@ func (p *SpanInfo) FastReadField2(buf []byte) (int, error) { if err != nil { return offset, err } - _field := make([]*FieldData, 0, size) - values := make([]FieldData, size) + _field := make([]*dataset0.FieldData, 0, size) + values := make([]dataset0.FieldData, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -13526,11 +12578,11 @@ func (p *SpanInfo) DeepCopy(s interface{}) error { } if src.FieldList != nil { - p.FieldList = make([]*FieldData, 0, len(src.FieldList)) + p.FieldList = make([]*dataset0.FieldData, 0, len(src.FieldList)) for _, elem := range src.FieldList { - var _elem *FieldData + var _elem *dataset0.FieldData if elem != nil { - _elem = &FieldData{} + _elem = &dataset0.FieldData{} if err := _elem.DeepCopy(elem); err != nil { return err } diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index 95be81922..6164c3778 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -229,6 +229,7 @@ struct ListAnnotationsResponse { 255: optional base.BaseResp BaseResp } + struct ExportTracesToDatasetRequest { 1: required i64 workspace_id (api.js_conv="true", go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") 2: required list span_ids (api.body="span_ids", vt.min_size="1", vt.max_size="500") @@ -305,11 +306,7 @@ struct ChangeEvaluatorScoreResponse { 255: optional base.BaseResp BaseResp } -struct AnnotationEvaluator { - 1: required i64 evaluator_version_id, - 2: required string evaluator_name, - 3: required string evaluator_version, -} + struct ListAnnotationEvaluatorsRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") @@ -319,7 +316,7 @@ struct ListAnnotationEvaluatorsRequest { } struct ListAnnotationEvaluatorsResponse { - 1: required list evaluators + 1: required list evaluators 255: optional base.BaseResp BaseResp } @@ -336,33 +333,9 @@ struct ExtractSpanInfoRequest { 255: optional base.Base Base (api.none="true") } -struct FieldData { - 1: optional string key, - 2: optional string name, - 3: optional Content content, -} -typedef string ContentType - -const ContentType ContentType_Text = "Text" // 空间 -const ContentType ContentType_Image = "Image" -const ContentType ContentType_Audio = "Audio" -const ContentType ContentType_MultiPart = "MultiPart" - -struct Content { - 1: optional ContentType contentType (agw.key = "content_type" go.tag = "json:\"content_type\""), - 10: optional string text (agw.key = "text" go.tag = "json:\"text\""), - 11: optional Image image (agw.key = "image" go.tag = "json:\"image\""), // 图片内容 - 12: optional list multiPart (agw.key = "multi_part" go.tag = "json:\"multi_part\""), // 图文混排时,图文内容 -} - -struct Image { - 1: optional string name (agw.key = "name" go.tag = "json:\"name\"") - 2: optional string url (agw.key = "url" go.tag = "json:\"url\"") -} - struct SpanInfo { 1: required string span_id - 2: required list field_list + 2: required list field_list } struct ExtractSpanInfoResponse { 1: required list span_infos diff --git a/idl/thrift/coze/loop/observability/domain/annotation.thrift b/idl/thrift/coze/loop/observability/domain/annotation.thrift index 4e29023bb..47ace2ac7 100644 --- a/idl/thrift/coze/loop/observability/domain/annotation.thrift +++ b/idl/thrift/coze/loop/observability/domain/annotation.thrift @@ -58,4 +58,10 @@ struct Annotation { 100: optional common.BaseInfo base_info 101: optional AutoEvaluate auto_evaluate 102: optional ManualFeedback manual_feedback +} + +struct AnnotationEvaluator { + 1: required i64 evaluator_version_id, + 2: required string evaluator_name, + 3: required string evaluator_version, } \ No newline at end of file From cf0a422df23a8b81325e1c0ba89b063d92ba3d3a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 20:01:35 +0800 Subject: [PATCH 014/462] feat: update go mod --- backend/go.mod | 23 ++++++------ backend/go.sum | 96 +++++++++++++++++++++----------------------------- 2 files changed, 53 insertions(+), 66 deletions(-) diff --git a/backend/go.mod b/backend/go.mod index 8fc067ff2..bd49f574c 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -1,8 +1,6 @@ module github.com/coze-dev/coze-loop/backend -go 1.24.0 - -toolchain go1.24.1 +go 1.24.4 replace github.com/apache/thrift => github.com/apache/thrift v0.13.0 @@ -62,6 +60,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 github.com/modern-go/reflect2 v1.0.2 github.com/nicksnyder/go-i18n/v2 v2.6.0 + github.com/nikolalohinski/gonja/v2 v2.4.0 github.com/ohler55/ojg v1.26.8 github.com/ollama/ollama v0.10.1 github.com/panjf2000/ants/v2 v2.11.3 @@ -79,6 +78,7 @@ require ( github.com/valyala/fasttemplate v1.2.2 github.com/volcengine/volcengine-go-sdk v1.1.4 github.com/xeipuuv/gojsonschema v1.2.0 + go.opentelemetry.io/proto/otlp v1.0.0 go.uber.org/mock v0.4.0 golang.org/x/crypto v0.39.0 golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 @@ -95,7 +95,10 @@ require ( gorm.io/plugin/soft_delete v1.2.1 ) -require github.com/apaxa-go/helper v0.0.0-20180607175117-61d31b1c31c3 // indirect +require ( + github.com/apaxa-go/helper v0.0.0-20180607175117-61d31b1c31c3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect +) require ( cloud.google.com/go v0.116.0 // indirect @@ -155,7 +158,7 @@ require ( github.com/go-faster/city v1.0.1 // indirect github.com/go-faster/errors v0.7.1 // indirect github.com/go-kit/kit v0.12.1-0.20220826005032-a7ba4fa4e289 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.21.1 // indirect github.com/go-openapi/swag v0.23.1 // indirect @@ -166,7 +169,7 @@ require ( github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 // indirect + github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect github.com/google/s2a-go v0.1.8 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect github.com/googleapis/gax-go/v2 v2.14.1 // indirect @@ -232,9 +235,9 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect + go.opentelemetry.io/otel v1.37.0 + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect @@ -248,7 +251,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 // indirect google.golang.org/grpc v1.67.3 // indirect - google.golang.org/protobuf v1.36.1 // indirect + google.golang.org/protobuf v1.36.1 gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/src-d/go-errors.v1 v1.0.0 // indirect gopkg.in/yaml.v2 v2.4.0 diff --git a/backend/go.sum b/backend/go.sum index 2428e4798..20a771e5a 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -27,9 +27,8 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/longrunning v0.5.7 h1:WLbHekDbjK1fVFD3ibpFFVoyizlLRl73I7YKuAKilhU= @@ -254,9 +253,8 @@ github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coze-dev/cozeloop-go v0.1.7 h1:Y9AbLFLJdYWGPJJecWScSeW8W4kY38CLzBx0/ha/lZ4= github.com/coze-dev/cozeloop-go v0.1.7/go.mod h1:rhHtKT9D8wdqd+X1heP2A7zNyTohuA16ESv+rhEClbE= +github.com/coze-dev/cozeloop-go/spec v0.1.2 h1:9LfVzQZkFd8uiIXDioueMJ0yD6Xzk3ZQ7D4o3mtUNOw= github.com/coze-dev/cozeloop-go/spec v0.1.2/go.mod h1:/f3BrWehffwXIpd4b5rYIqktLd/v5dlLBw0h9F/LQIU= -github.com/coze-dev/cozeloop-go/spec v0.1.3 h1:UXsykaQfBC+uMOJRQdgc0bv/SL3NOqOB+0H6OR3oMDw= -github.com/coze-dev/cozeloop-go/spec v0.1.3/go.mod h1:/f3BrWehffwXIpd4b5rYIqktLd/v5dlLBw0h9F/LQIU= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso= @@ -353,7 +351,6 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -381,9 +378,10 @@ github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9 github.com/go-sql-driver/mysql v1.9.2 h1:4cNKDYQ1I84SXslGddlsrMhc8k4LeDVj6Ad6WRjiHuU= github.com/go-sql-driver/mysql v1.9.2/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= @@ -405,6 +403,8 @@ github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -470,8 +470,8 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 h1:5iH8iuqE5apketRbSFBy+X1V0o+l+8NF1avt4HWl7cA= -github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= @@ -500,8 +500,8 @@ github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+ github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -712,15 +712,14 @@ github.com/nicksnyder/go-i18n/v2 v2.6.0/go.mod h1:88sRqr0C6OPyJn0/KRNaEz1uWorjxI github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nikolalohinski/gonja v1.5.3 h1:GsA+EEaZDZPGJ8JtpeGN78jidhOlxeJROpqMT9fTj9c= github.com/nikolalohinski/gonja v1.5.3/go.mod h1:RmjwxNiXAEqcq1HeK5SSMmqFJvKOfTfXhkJv6YBtPa4= -github.com/nikolalohinski/gonja/v2 v2.3.1 h1:UGyLa6NDNq6dCGkFY33sziUssjTdh95xrYslxZdqNVU= -github.com/nikolalohinski/gonja/v2 v2.3.1/go.mod h1:1Wcc/5huTu6y36e0sOFR1XQoFlylw3c3H3L5WOz0RDg= +github.com/nikolalohinski/gonja/v2 v2.4.0 h1:96XmXf/Jj9gFoeQ+dIyaIpah399X/MIMsA/oieNMLhk= +github.com/nikolalohinski/gonja/v2 v2.4.0/go.mod h1:UIzXPVuOsr5h7dZ5DUbqk3/Z7oFA/NLGQGMjqT4L2aU= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/nyaruka/phonenumbers v1.3.2 h1:ACdPdlDGabEwkF6Asfd1Jv+azcoPJP/FujXnnisp0vw= github.com/nyaruka/phonenumbers v1.3.2/go.mod h1:4jyKp/BFUokLbCHyoZag+T3S1KezFVoEKtgnbpzItC4= +github.com/ohler55/ojg v1.26.8 h1:njM65m+ej8sLHiFZIhJK9UkwOmDPsUikjGbTgcwu8CU= github.com/ohler55/ojg v1.26.8/go.mod h1:/Y5dGWkekv9ocnUixuETqiL58f+5pAsUfg5P8e7Pa2o= -github.com/ohler55/ojg v1.26.9 h1:/ij3M08tC8w7NzI/uEPl6qxeSXJEqWDDNfmpbWcUdGw= -github.com/ohler55/ojg v1.26.9/go.mod h1:/Y5dGWkekv9ocnUixuETqiL58f+5pAsUfg5P8e7Pa2o= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/ollama/ollama v0.10.1 h1:YJGiYpnKW3Q3v7+s0n1OlCaHcFFvSCVd+t0FvS9NZ2w= @@ -734,8 +733,8 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= -github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= +github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= +github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -743,8 +742,8 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= -github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= -github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= +github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y= +github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= @@ -971,28 +970,23 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.5 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= -go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= -go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/atomic v1.5.1/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= +go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -1033,9 +1027,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1130,18 +1123,16 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1158,9 +1149,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1230,9 +1220,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -1242,8 +1231,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= -golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= -golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1257,9 +1246,8 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1391,12 +1379,10 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A= google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1414,9 +1400,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.67.3 h1:OgPcDAFKHnH8X3O4WcO4XUc8GRDeKsKReqbQtiCj7N8= google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1431,9 +1416,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= From d3c6eb93fca995ce69fa838f35e0b4f06f0bc683 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 20:09:44 +0800 Subject: [PATCH 015/462] feat:fix idl --- .../trace/coze.loop.observability.trace.go | 115 ++---------------- ...coze.loop.observability.trace_validator.go | 6 - .../trace/k-coze.loop.observability.trace.go | 87 ------------- .../observability/application/trace.go | 14 +-- .../domain/trace/service/trace_service.go | 20 +-- .../coze.loop.observability.trace.thrift | 4 +- 6 files changed, 29 insertions(+), 217 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index 053b5be11..745e84bd5 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -13,11 +13,11 @@ import ( dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/view" "strings" ) +// include "./domain/task.thrift" type ListSpansRequest struct { WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` // ms @@ -15921,14 +15921,14 @@ func (p *ListAnnotationEvaluatorsResponse) Field255DeepEqual(src *base.BaseResp) } type ExtractSpanInfoRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" json:"trace_id,required" query:"trace_id,required"` - SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" json:"span_ids,required" query:"span_ids,required"` - StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" query:"start_time" ` - EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" query:"end_time" ` - PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` - FieldMappings []*task.FieldMapping `thrift:"field_mappings,7,optional" frugal:"7,optional,list" form:"field_mappings" json:"field_mappings,omitempty" query:"field_mappings"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" json:"trace_id,required" query:"trace_id,required"` + SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" json:"span_ids,required" query:"span_ids,required"` + StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" query:"start_time" ` + EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" query:"end_time" ` + PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` + // 7: optional list field_mappings (vt.min_size="1", vt.max_size="100") + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` } func NewExtractSpanInfoRequest() *ExtractSpanInfoRequest { @@ -15995,18 +15995,6 @@ func (p *ExtractSpanInfoRequest) GetPlatformType() (v common.PlatformType) { return *p.PlatformType } -var ExtractSpanInfoRequest_FieldMappings_DEFAULT []*task.FieldMapping - -func (p *ExtractSpanInfoRequest) GetFieldMappings() (v []*task.FieldMapping) { - if p == nil { - return - } - if !p.IsSetFieldMappings() { - return ExtractSpanInfoRequest_FieldMappings_DEFAULT - } - return p.FieldMappings -} - var ExtractSpanInfoRequest_Base_DEFAULT *base.Base func (p *ExtractSpanInfoRequest) GetBase() (v *base.Base) { @@ -16036,9 +16024,6 @@ func (p *ExtractSpanInfoRequest) SetEndTime(val *int64) { func (p *ExtractSpanInfoRequest) SetPlatformType(val *common.PlatformType) { p.PlatformType = val } -func (p *ExtractSpanInfoRequest) SetFieldMappings(val []*task.FieldMapping) { - p.FieldMappings = val -} func (p *ExtractSpanInfoRequest) SetBase(val *base.Base) { p.Base = val } @@ -16050,7 +16035,6 @@ var fieldIDToName_ExtractSpanInfoRequest = map[int16]string{ 4: "start_time", 5: "end_time", 6: "platform_type", - 7: "field_mappings", 255: "Base", } @@ -16066,10 +16050,6 @@ func (p *ExtractSpanInfoRequest) IsSetPlatformType() bool { return p.PlatformType != nil } -func (p *ExtractSpanInfoRequest) IsSetFieldMappings() bool { - return p.FieldMappings != nil -} - func (p *ExtractSpanInfoRequest) IsSetBase() bool { return p.Base != nil } @@ -16146,14 +16126,6 @@ func (p *ExtractSpanInfoRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 7: - if fieldTypeId == thrift.LIST { - if err = p.ReadField7(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -16285,29 +16257,6 @@ func (p *ExtractSpanInfoRequest) ReadField6(iprot thrift.TProtocol) error { p.PlatformType = _field return nil } -func (p *ExtractSpanInfoRequest) ReadField7(iprot thrift.TProtocol) error { - _, size, err := iprot.ReadListBegin() - if err != nil { - return err - } - _field := make([]*task.FieldMapping, 0, size) - values := make([]task.FieldMapping, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - - if err := _elem.Read(iprot); err != nil { - return err - } - - _field = append(_field, _elem) - } - if err := iprot.ReadListEnd(); err != nil { - return err - } - p.FieldMappings = _field - return nil -} func (p *ExtractSpanInfoRequest) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBase() if err := _field.Read(iprot); err != nil { @@ -16347,10 +16296,6 @@ func (p *ExtractSpanInfoRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 6 goto WriteFieldError } - if err = p.writeField7(oprot); err != nil { - fieldId = 7 - goto WriteFieldError - } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -16483,32 +16428,6 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) } -func (p *ExtractSpanInfoRequest) writeField7(oprot thrift.TProtocol) (err error) { - if p.IsSetFieldMappings() { - if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 7); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { - return err - } - for _, v := range p.FieldMappings { - if err := v.Write(oprot); err != nil { - return err - } - } - if err := oprot.WriteListEnd(); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) -} func (p *ExtractSpanInfoRequest) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBase() { if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { @@ -16560,9 +16479,6 @@ func (p *ExtractSpanInfoRequest) DeepEqual(ano *ExtractSpanInfoRequest) bool { if !p.Field6DeepEqual(ano.PlatformType) { return false } - if !p.Field7DeepEqual(ano.FieldMappings) { - return false - } if !p.Field255DeepEqual(ano.Base) { return false } @@ -16632,19 +16548,6 @@ func (p *ExtractSpanInfoRequest) Field6DeepEqual(src *common.PlatformType) bool } return true } -func (p *ExtractSpanInfoRequest) Field7DeepEqual(src []*task.FieldMapping) bool { - - if len(p.FieldMappings) != len(src) { - return false - } - for i, v := range p.FieldMappings { - _src := src[i] - if !v.DeepEqual(_src) { - return false - } - } - return true -} func (p *ExtractSpanInfoRequest) Field255DeepEqual(src *base.Base) bool { if !p.Base.DeepEqual(src) { diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go index 7b1ed400b..d4d15fd59 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go @@ -462,12 +462,6 @@ func (p *ExtractSpanInfoRequest) IsValid() error { return fmt.Errorf("field EndTime gt rule failed, current value: %v", *p.EndTime) } } - if len(p.FieldMappings) < int(1) { - return fmt.Errorf("field FieldMappings MinLen rule failed, current value: %v", p.FieldMappings) - } - if len(p.FieldMappings) > int(100) { - return fmt.Errorf("field FieldMappings MaxLen rule failed, current value: %v", p.FieldMappings) - } if p.Base != nil { if err := p.Base.IsValid(); err != nil { return fmt.Errorf("field Base not valid, %w", err) diff --git a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go index 5378141cc..f182e5528 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go @@ -18,7 +18,6 @@ import ( dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/view" ) @@ -30,7 +29,6 @@ var ( _ = dataset0.KitexUnusedProtection _ = filter.KitexUnusedProtection _ = span.KitexUnusedProtection - _ = task.KitexUnusedProtection _ = view.KitexUnusedProtection ) @@ -11939,20 +11937,6 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } - case 7: - if fieldTypeId == thrift.LIST { - l, err = p.FastReadField7(buf[offset:]) - offset += l - if err != nil { - goto ReadFieldError - } - } else { - l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) - offset += l - if err != nil { - goto SkipFieldError - } - } case 255: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField255(buf[offset:]) @@ -12095,31 +12079,6 @@ func (p *ExtractSpanInfoRequest) FastReadField6(buf []byte) (int, error) { return offset, nil } -func (p *ExtractSpanInfoRequest) FastReadField7(buf []byte) (int, error) { - offset := 0 - - _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) - offset += l - if err != nil { - return offset, err - } - _field := make([]*task.FieldMapping, 0, size) - values := make([]task.FieldMapping, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - if l, err := _elem.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } - - _field = append(_field, _elem) - } - p.FieldMappings = _field - return offset, nil -} - func (p *ExtractSpanInfoRequest) FastReadField255(buf []byte) (int, error) { offset := 0 _field := base.NewBase() @@ -12145,7 +12104,6 @@ func (p *ExtractSpanInfoRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWrit offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField6(buf[offset:], w) - offset += p.fastWriteField7(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) @@ -12161,7 +12119,6 @@ func (p *ExtractSpanInfoRequest) BLength() int { l += p.field4Length() l += p.field5Length() l += p.field6Length() - l += p.field7Length() l += p.field255Length() } l += thrift.Binary.FieldStopLength() @@ -12223,22 +12180,6 @@ func (p *ExtractSpanInfoRequest) fastWriteField6(buf []byte, w thrift.NocopyWrit return offset } -func (p *ExtractSpanInfoRequest) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetFieldMappings() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 7) - listBeginOffset := offset - offset += thrift.Binary.ListBeginLength() - var length int - for _, v := range p.FieldMappings { - length++ - offset += v.FastWriteNocopy(buf[offset:], w) - } - thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) - } - return offset -} - func (p *ExtractSpanInfoRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetBase() { @@ -12300,19 +12241,6 @@ func (p *ExtractSpanInfoRequest) field6Length() int { return l } -func (p *ExtractSpanInfoRequest) field7Length() int { - l := 0 - if p.IsSetFieldMappings() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.ListBeginLength() - for _, v := range p.FieldMappings { - _ = v - l += v.BLength() - } - } - return l -} - func (p *ExtractSpanInfoRequest) field255Length() int { l := 0 if p.IsSetBase() { @@ -12360,21 +12288,6 @@ func (p *ExtractSpanInfoRequest) DeepCopy(s interface{}) error { p.PlatformType = &tmp } - if src.FieldMappings != nil { - p.FieldMappings = make([]*task.FieldMapping, 0, len(src.FieldMappings)) - for _, elem := range src.FieldMappings { - var _elem *task.FieldMapping - if elem != nil { - _elem = &task.FieldMapping{} - if err := _elem.DeepCopy(elem); err != nil { - return err - } - } - - p.FieldMappings = append(p.FieldMappings, _elem) - } - } - var _base *base.Base if src.Base != nil { _base = &base.Base{} diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index aea86a4e7..f2dfef35d 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -900,13 +900,13 @@ func (t *TraceApplication) ExtractSpanInfo(ctx context.Context, req *trace.Extra return nil, err } sResp, err := t.traceService.ExtractSpanInfo(ctx, &service.ExtractSpanInfoRequest{ - WorkspaceID: req.WorkspaceID, - TraceID: "", - SpanIds: req.SpanIds, - StartTime: req.GetStartTime(), - EndTime: req.GetEndTime(), - PlatformType: loop_span.PlatformType(req.GetPlatformType()), - FieldMappings: req.FieldMappings, + WorkspaceID: req.WorkspaceID, + TraceID: "", + SpanIds: req.SpanIds, + StartTime: req.GetStartTime(), + EndTime: req.GetEndTime(), + PlatformType: loop_span.PlatformType(req.GetPlatformType()), + //FieldMappings: req.FieldMappings, }) if err != nil { return nil, err diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index 7b6b6b03c..bfa2683b4 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -15,6 +15,8 @@ import ( "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/annotation" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" @@ -215,7 +217,7 @@ type ListAnnotationEvaluatorsRequest struct { Name *string } type ListAnnotationEvaluatorsResp struct { - Evaluators []*trace.AnnotationEvaluator + Evaluators []*annotation.AnnotationEvaluator } type ExtractSpanInfoRequest struct { WorkspaceID int64 @@ -1114,7 +1116,7 @@ func (r *TraceServiceImpl) correctEvaluatorRecords(ctx context.Context, annotati } func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *ListAnnotationEvaluatorsRequest) (*ListAnnotationEvaluatorsResp, error) { resp := &ListAnnotationEvaluatorsResp{} - resp.Evaluators = make([]*trace.AnnotationEvaluator, 0) + resp.Evaluators = make([]*annotation.AnnotationEvaluator, 0) var ( evaluators = make([]*rpc.Evaluator, 0) ) @@ -1163,7 +1165,7 @@ func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *Li } } for _, evaluator := range evaluators { - re := &trace.AnnotationEvaluator{} + re := &annotation.AnnotationEvaluator{} if evaluator.EvaluatorVersionID != 0 { re.EvaluatorVersionID = evaluator.EvaluatorVersionID } @@ -1200,7 +1202,7 @@ func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpan } logs.CtxInfo(ctx, "Get spans success, total conut:%v", len(spans)) for _, span := range spans { - var fieldList []*trace.FieldData + var fieldList []*dataset.FieldData for _, mapping := range req.FieldMappings { value, err := buildExtractSpanInfo(ctx, span, mapping) if err != nil { @@ -1214,7 +1216,7 @@ func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpan continue } content := buildContent(value) - fieldList = append(fieldList, &trace.FieldData{ + fieldList = append(fieldList, &dataset.FieldData{ Key: gptr.Of(mapping.GetFieldSchema().GetKey()), Name: gptr.Of(mapping.GetFieldSchema().GetName()), Content: content, @@ -1233,12 +1235,12 @@ func buildExtractSpanInfo(ctx context.Context, span *loop_span.Span, fieldMappin return "", nil } -func buildContent(value string) *trace.Content { - var content *trace.Content +func buildContent(value string) *dataset.Content { + var content *dataset.Content err := json.Unmarshal([]byte(value), &content) if err != nil { - content = &trace.Content{ - ContentType: gptr.Of(trace.ContentTypeText), + content = &dataset.Content{ + ContentType: gptr.Of(common.ContentTypeText), Text: gptr.Of(value), } } diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index 6164c3778..60993a854 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -8,7 +8,7 @@ include "./domain/filter.thrift" include "./domain/view.thrift" include "./domain/annotation.thrift" include "./domain/export_dataset.thrift" -include "./domain/task.thrift" +//include "./domain/task.thrift" struct ListSpansRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id") @@ -328,7 +328,7 @@ struct ExtractSpanInfoRequest { 4: optional i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.query="start_time", vt.gt="0") 5: optional i64 end_time (api.js_conv='true', go.tag='json:"end_time"', api.query="end_time", vt.gt="0") 6: optional common.PlatformType platform_type (api.body="platform_type") - 7: optional list field_mappings (vt.min_size="1", vt.max_size="100") +// 7: optional list field_mappings (vt.min_size="1", vt.max_size="100") 255: optional base.Base Base (api.none="true") } From 0a0861640e96538f445c089f7f6f8d22cdc5ad17 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 20:11:53 +0800 Subject: [PATCH 016/462] feat:fix idl --- .../loop/observability/coze.loop.observability.task.thrift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift index caed6a014..422d8dd16 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift @@ -1,8 +1,8 @@ namespace go coze.loop.observability.task include "../../../base.thrift" -include "./domain/filter.thrift" -include "./domain/task.thrift" +include "domain/filter.thrift" +include "domain/task.thrift" struct CreateTaskRequest { 1: required task.Task task (api.body = "task"), From 2f2cecdab577f2dec94236fd55b9ed1ecc6b1126 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 20:15:15 +0800 Subject: [PATCH 017/462] feat:fix idl --- .../loop/observability/domain/task/k-task.go | 10 +++++----- .../loop/observability/domain/task/task.go | 20 +++++++++---------- .../coze.loop.observability.task.thrift | 4 ++-- .../loop/observability/domain/task.thrift | 4 ++-- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index 4f1f886d6..3c396494c 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -11,14 +11,14 @@ import ( "github.com/cloudwego/gopkg/protocol/thrift" kutils "github.com/cloudwego/kitex/pkg/utils" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" ) var ( - _ = eval_set.KitexUnusedProtection _ = common.KitexUnusedProtection + _ = dataset.KitexUnusedProtection _ = filter.KitexUnusedProtection ) @@ -2113,7 +2113,7 @@ RequiredFieldNotSetError: func (p *FieldMapping) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := eval_set.NewFieldSchema() + _field := dataset.NewFieldSchema() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -2259,9 +2259,9 @@ func (p *FieldMapping) DeepCopy(s interface{}) error { return fmt.Errorf("%T's type not matched %T", s, p) } - var _fieldSchema *eval_set.FieldSchema + var _fieldSchema *dataset.FieldSchema if src.FieldSchema != nil { - _fieldSchema = &eval_set.FieldSchema{} + _fieldSchema = &dataset.FieldSchema{} if err := _fieldSchema.DeepCopy(src.FieldSchema); err != nil { return err } diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 4d09bd9a7..60337f966 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -5,8 +5,8 @@ package task import ( "fmt" "github.com/apache/thrift/lib/go/thrift" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "strings" ) @@ -2820,10 +2820,10 @@ func (p *TaskDetail) Field2DeepEqual(src *int64) bool { type FieldMapping struct { // 数据集字段约束 - FieldSchema *eval_set.FieldSchema `thrift:"field_schema,1,required" frugal:"1,required,eval_set.FieldSchema" form:"field_schema,required" json:"field_schema,required" query:"field_schema,required"` - TraceFieldKey string `thrift:"trace_field_key,2,required" frugal:"2,required,string" form:"trace_field_key,required" json:"trace_field_key,required" query:"trace_field_key,required"` - TraceFieldJsonpath string `thrift:"trace_field_jsonpath,3,required" frugal:"3,required,string" form:"trace_field_jsonpath,required" json:"trace_field_jsonpath,required" query:"trace_field_jsonpath,required"` - EvalSetName *string `thrift:"eval_set_name,4,optional" frugal:"4,optional,string" form:"eval_set_name" json:"eval_set_name,omitempty" query:"eval_set_name"` + FieldSchema *dataset.FieldSchema `thrift:"field_schema,1,required" frugal:"1,required,dataset.FieldSchema" form:"field_schema,required" json:"field_schema,required" query:"field_schema,required"` + TraceFieldKey string `thrift:"trace_field_key,2,required" frugal:"2,required,string" form:"trace_field_key,required" json:"trace_field_key,required" query:"trace_field_key,required"` + TraceFieldJsonpath string `thrift:"trace_field_jsonpath,3,required" frugal:"3,required,string" form:"trace_field_jsonpath,required" json:"trace_field_jsonpath,required" query:"trace_field_jsonpath,required"` + EvalSetName *string `thrift:"eval_set_name,4,optional" frugal:"4,optional,string" form:"eval_set_name" json:"eval_set_name,omitempty" query:"eval_set_name"` } func NewFieldMapping() *FieldMapping { @@ -2833,9 +2833,9 @@ func NewFieldMapping() *FieldMapping { func (p *FieldMapping) InitDefault() { } -var FieldMapping_FieldSchema_DEFAULT *eval_set.FieldSchema +var FieldMapping_FieldSchema_DEFAULT *dataset.FieldSchema -func (p *FieldMapping) GetFieldSchema() (v *eval_set.FieldSchema) { +func (p *FieldMapping) GetFieldSchema() (v *dataset.FieldSchema) { if p == nil { return } @@ -2870,7 +2870,7 @@ func (p *FieldMapping) GetEvalSetName() (v string) { } return *p.EvalSetName } -func (p *FieldMapping) SetFieldSchema(val *eval_set.FieldSchema) { +func (p *FieldMapping) SetFieldSchema(val *dataset.FieldSchema) { p.FieldSchema = val } func (p *FieldMapping) SetTraceFieldKey(val string) { @@ -3000,7 +3000,7 @@ RequiredFieldNotSetError: } func (p *FieldMapping) ReadField1(iprot thrift.TProtocol) error { - _field := eval_set.NewFieldSchema() + _field := dataset.NewFieldSchema() if err := _field.Read(iprot); err != nil { return err } @@ -3177,7 +3177,7 @@ func (p *FieldMapping) DeepEqual(ano *FieldMapping) bool { return true } -func (p *FieldMapping) Field1DeepEqual(src *eval_set.FieldSchema) bool { +func (p *FieldMapping) Field1DeepEqual(src *dataset.FieldSchema) bool { if !p.FieldSchema.DeepEqual(src) { return false diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift index 422d8dd16..caed6a014 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift @@ -1,8 +1,8 @@ namespace go coze.loop.observability.task include "../../../base.thrift" -include "domain/filter.thrift" -include "domain/task.thrift" +include "./domain/filter.thrift" +include "./domain/task.thrift" struct CreateTaskRequest { 1: required task.Task task (api.body = "task"), diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 5fd507f52..6d7375473 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -2,7 +2,7 @@ namespace go coze.loop.observability.domain.task include "common.thrift" include "filter.thrift" -include "../../evaluation/domain/eval_set.thrift" +include "export_dataset.thrift" typedef string TimeUnit (ts.enum="true") const TimeUnit TimeUnit_Day = "day" @@ -74,7 +74,7 @@ struct TaskDetail { } struct FieldMapping { - 1: required eval_set.FieldSchema field_schema // 数据集字段约束 + 1: required export_dataset.FieldSchema field_schema // 数据集字段约束 2: required string trace_field_key 3: required string trace_field_jsonpath 4: optional string eval_set_name From 08c734589e3f9dcf380eed61ebb34ea826c3099a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 28 Aug 2025 20:20:15 +0800 Subject: [PATCH 018/462] feat:fix idl --- .../trace/coze.loop.observability.trace.go | 115 ++++++++++++++++-- ...coze.loop.observability.trace_validator.go | 6 + .../trace/k-coze.loop.observability.trace.go | 87 +++++++++++++ .../coze.loop.observability.trace.thrift | 4 +- 4 files changed, 201 insertions(+), 11 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index 745e84bd5..053b5be11 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -13,11 +13,11 @@ import ( dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/view" "strings" ) -// include "./domain/task.thrift" type ListSpansRequest struct { WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` // ms @@ -15921,14 +15921,14 @@ func (p *ListAnnotationEvaluatorsResponse) Field255DeepEqual(src *base.BaseResp) } type ExtractSpanInfoRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" json:"trace_id,required" query:"trace_id,required"` - SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" json:"span_ids,required" query:"span_ids,required"` - StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" query:"start_time" ` - EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" query:"end_time" ` - PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` - // 7: optional list field_mappings (vt.min_size="1", vt.max_size="100") - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" json:"trace_id,required" query:"trace_id,required"` + SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" json:"span_ids,required" query:"span_ids,required"` + StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" query:"start_time" ` + EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" query:"end_time" ` + PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` + FieldMappings []*task.FieldMapping `thrift:"field_mappings,7,optional" frugal:"7,optional,list" form:"field_mappings" json:"field_mappings,omitempty" query:"field_mappings"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` } func NewExtractSpanInfoRequest() *ExtractSpanInfoRequest { @@ -15995,6 +15995,18 @@ func (p *ExtractSpanInfoRequest) GetPlatformType() (v common.PlatformType) { return *p.PlatformType } +var ExtractSpanInfoRequest_FieldMappings_DEFAULT []*task.FieldMapping + +func (p *ExtractSpanInfoRequest) GetFieldMappings() (v []*task.FieldMapping) { + if p == nil { + return + } + if !p.IsSetFieldMappings() { + return ExtractSpanInfoRequest_FieldMappings_DEFAULT + } + return p.FieldMappings +} + var ExtractSpanInfoRequest_Base_DEFAULT *base.Base func (p *ExtractSpanInfoRequest) GetBase() (v *base.Base) { @@ -16024,6 +16036,9 @@ func (p *ExtractSpanInfoRequest) SetEndTime(val *int64) { func (p *ExtractSpanInfoRequest) SetPlatformType(val *common.PlatformType) { p.PlatformType = val } +func (p *ExtractSpanInfoRequest) SetFieldMappings(val []*task.FieldMapping) { + p.FieldMappings = val +} func (p *ExtractSpanInfoRequest) SetBase(val *base.Base) { p.Base = val } @@ -16035,6 +16050,7 @@ var fieldIDToName_ExtractSpanInfoRequest = map[int16]string{ 4: "start_time", 5: "end_time", 6: "platform_type", + 7: "field_mappings", 255: "Base", } @@ -16050,6 +16066,10 @@ func (p *ExtractSpanInfoRequest) IsSetPlatformType() bool { return p.PlatformType != nil } +func (p *ExtractSpanInfoRequest) IsSetFieldMappings() bool { + return p.FieldMappings != nil +} + func (p *ExtractSpanInfoRequest) IsSetBase() bool { return p.Base != nil } @@ -16126,6 +16146,14 @@ func (p *ExtractSpanInfoRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 7: + if fieldTypeId == thrift.LIST { + if err = p.ReadField7(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -16257,6 +16285,29 @@ func (p *ExtractSpanInfoRequest) ReadField6(iprot thrift.TProtocol) error { p.PlatformType = _field return nil } +func (p *ExtractSpanInfoRequest) ReadField7(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*task.FieldMapping, 0, size) + values := make([]task.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldMappings = _field + return nil +} func (p *ExtractSpanInfoRequest) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBase() if err := _field.Read(iprot); err != nil { @@ -16296,6 +16347,10 @@ func (p *ExtractSpanInfoRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 6 goto WriteFieldError } + if err = p.writeField7(oprot); err != nil { + fieldId = 7 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -16428,6 +16483,32 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) } +func (p *ExtractSpanInfoRequest) writeField7(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldMappings() { + if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 7); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { + return err + } + for _, v := range p.FieldMappings { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) +} func (p *ExtractSpanInfoRequest) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBase() { if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { @@ -16479,6 +16560,9 @@ func (p *ExtractSpanInfoRequest) DeepEqual(ano *ExtractSpanInfoRequest) bool { if !p.Field6DeepEqual(ano.PlatformType) { return false } + if !p.Field7DeepEqual(ano.FieldMappings) { + return false + } if !p.Field255DeepEqual(ano.Base) { return false } @@ -16548,6 +16632,19 @@ func (p *ExtractSpanInfoRequest) Field6DeepEqual(src *common.PlatformType) bool } return true } +func (p *ExtractSpanInfoRequest) Field7DeepEqual(src []*task.FieldMapping) bool { + + if len(p.FieldMappings) != len(src) { + return false + } + for i, v := range p.FieldMappings { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} func (p *ExtractSpanInfoRequest) Field255DeepEqual(src *base.Base) bool { if !p.Base.DeepEqual(src) { diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go index d4d15fd59..7b1ed400b 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go @@ -462,6 +462,12 @@ func (p *ExtractSpanInfoRequest) IsValid() error { return fmt.Errorf("field EndTime gt rule failed, current value: %v", *p.EndTime) } } + if len(p.FieldMappings) < int(1) { + return fmt.Errorf("field FieldMappings MinLen rule failed, current value: %v", p.FieldMappings) + } + if len(p.FieldMappings) > int(100) { + return fmt.Errorf("field FieldMappings MaxLen rule failed, current value: %v", p.FieldMappings) + } if p.Base != nil { if err := p.Base.IsValid(); err != nil { return fmt.Errorf("field Base not valid, %w", err) diff --git a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go index f182e5528..5378141cc 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go @@ -18,6 +18,7 @@ import ( dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/view" ) @@ -29,6 +30,7 @@ var ( _ = dataset0.KitexUnusedProtection _ = filter.KitexUnusedProtection _ = span.KitexUnusedProtection + _ = task.KitexUnusedProtection _ = view.KitexUnusedProtection ) @@ -11937,6 +11939,20 @@ func (p *ExtractSpanInfoRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 7: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField7(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 255: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField255(buf[offset:]) @@ -12079,6 +12095,31 @@ func (p *ExtractSpanInfoRequest) FastReadField6(buf []byte) (int, error) { return offset, nil } +func (p *ExtractSpanInfoRequest) FastReadField7(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*task.FieldMapping, 0, size) + values := make([]task.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldMappings = _field + return offset, nil +} + func (p *ExtractSpanInfoRequest) FastReadField255(buf []byte) (int, error) { offset := 0 _field := base.NewBase() @@ -12104,6 +12145,7 @@ func (p *ExtractSpanInfoRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWrit offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField7(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) @@ -12119,6 +12161,7 @@ func (p *ExtractSpanInfoRequest) BLength() int { l += p.field4Length() l += p.field5Length() l += p.field6Length() + l += p.field7Length() l += p.field255Length() } l += thrift.Binary.FieldStopLength() @@ -12180,6 +12223,22 @@ func (p *ExtractSpanInfoRequest) fastWriteField6(buf []byte, w thrift.NocopyWrit return offset } +func (p *ExtractSpanInfoRequest) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFieldMappings() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 7) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldMappings { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + func (p *ExtractSpanInfoRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetBase() { @@ -12241,6 +12300,19 @@ func (p *ExtractSpanInfoRequest) field6Length() int { return l } +func (p *ExtractSpanInfoRequest) field7Length() int { + l := 0 + if p.IsSetFieldMappings() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldMappings { + _ = v + l += v.BLength() + } + } + return l +} + func (p *ExtractSpanInfoRequest) field255Length() int { l := 0 if p.IsSetBase() { @@ -12288,6 +12360,21 @@ func (p *ExtractSpanInfoRequest) DeepCopy(s interface{}) error { p.PlatformType = &tmp } + if src.FieldMappings != nil { + p.FieldMappings = make([]*task.FieldMapping, 0, len(src.FieldMappings)) + for _, elem := range src.FieldMappings { + var _elem *task.FieldMapping + if elem != nil { + _elem = &task.FieldMapping{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldMappings = append(p.FieldMappings, _elem) + } + } + var _base *base.Base if src.Base != nil { _base = &base.Base{} diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index 60993a854..6164c3778 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -8,7 +8,7 @@ include "./domain/filter.thrift" include "./domain/view.thrift" include "./domain/annotation.thrift" include "./domain/export_dataset.thrift" -//include "./domain/task.thrift" +include "./domain/task.thrift" struct ListSpansRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id") @@ -328,7 +328,7 @@ struct ExtractSpanInfoRequest { 4: optional i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.query="start_time", vt.gt="0") 5: optional i64 end_time (api.js_conv='true', go.tag='json:"end_time"', api.query="end_time", vt.gt="0") 6: optional common.PlatformType platform_type (api.body="platform_type") -// 7: optional list field_mappings (vt.min_size="1", vt.max_size="100") + 7: optional list field_mappings (vt.min_size="1", vt.max_size="100") 255: optional base.Base Base (api.none="true") } From 95c27f07a9e93485a174ca2c18fba023747e3cbc Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 29 Aug 2025 11:11:17 +0800 Subject: [PATCH 019/462] feat: add license --- .../loop/apis/observability_task_service.go | 3 + .../modules/observability/application/task.go | 3 + .../observability/application/trace.go | 14 ++-- .../observability/domain/task/entity/task.go | 3 + .../observability/domain/task/repo/task.go | 3 + .../domain/task/service/task_service.go | 76 +++++++++++++++++++ .../infra/repo/mysql/convertor/task.go | 3 + .../observability/infra/repo/mysql/task.go | 3 + 8 files changed, 101 insertions(+), 7 deletions(-) create mode 100644 backend/modules/observability/domain/task/service/task_service.go diff --git a/backend/api/handler/coze/loop/apis/observability_task_service.go b/backend/api/handler/coze/loop/apis/observability_task_service.go index 031fab940..f275d014a 100644 --- a/backend/api/handler/coze/loop/apis/observability_task_service.go +++ b/backend/api/handler/coze/loop/apis/observability_task_service.go @@ -1,3 +1,6 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + // Code generated by hertz generator. package apis diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 3be8f6dbb..54f83abff 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -1,3 +1,6 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + package application import ( diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index f2dfef35d..aea86a4e7 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -900,13 +900,13 @@ func (t *TraceApplication) ExtractSpanInfo(ctx context.Context, req *trace.Extra return nil, err } sResp, err := t.traceService.ExtractSpanInfo(ctx, &service.ExtractSpanInfoRequest{ - WorkspaceID: req.WorkspaceID, - TraceID: "", - SpanIds: req.SpanIds, - StartTime: req.GetStartTime(), - EndTime: req.GetEndTime(), - PlatformType: loop_span.PlatformType(req.GetPlatformType()), - //FieldMappings: req.FieldMappings, + WorkspaceID: req.WorkspaceID, + TraceID: "", + SpanIds: req.SpanIds, + StartTime: req.GetStartTime(), + EndTime: req.GetEndTime(), + PlatformType: loop_span.PlatformType(req.GetPlatformType()), + FieldMappings: req.FieldMappings, }) if err != nil { return nil, err diff --git a/backend/modules/observability/domain/task/entity/task.go b/backend/modules/observability/domain/task/entity/task.go index e299b5db1..ec66218f8 100644 --- a/backend/modules/observability/domain/task/entity/task.go +++ b/backend/modules/observability/domain/task/entity/task.go @@ -1,3 +1,6 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + package entity import "time" diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index 27ef39775..6dbf5e439 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -1,3 +1,6 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + package repo import ( diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go new file mode 100644 index 000000000..a2fc7f6a1 --- /dev/null +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -0,0 +1,76 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package service + +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/Task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" +) + +type CreateTaskReq struct { +} +type CreateTaskResp struct { +} +type UpdateTaskReq struct { +} +type UpdateTaskResp struct { +} +type ListTasksReq struct { +} +type ListTasksResp struct { +} +type GetTaskReq struct { +} +type GetTaskResp struct { +} +type CheckTaskNameReq struct { +} +type CheckTaskNameResp struct { +} + +//go:generate mockgen -destination=mocks/task_service.go -package=mocks . ITaskService +type ITaskService interface { + CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) + UpdateTask(ctx context.Context, req *UpdateTaskReq) (resp *UpdateTaskResp, err error) + ListTasks(ctx context.Context, req *ListTasksReq) (resp *ListTasksResp, err error) + GetTask(ctx context.Context, req *GetTaskReq) (resp *GetTaskResp, err error) + CheckTaskName(ctx context.Context, req *CheckTaskNameReq) (resp *CheckTaskNameResp, err error) +} + +func NewTaskServiceImpl( + tRepo repo.ITaskRepo, + tenantProvider tenant.ITenantProvider, + evalServiceAdaptor rpc.IEvaluatorRPCAdapter, +) (ITaskService, error) { + return &TaskServiceImpl{ + TaskRepo: tRepo, + tenantProvider: tenantProvider, + evalServiceAdaptor: evalServiceAdaptor, + }, nil +} + +type TaskServiceImpl struct { + TaskRepo repo.ITaskRepo + tenantProvider tenant.ITenantProvider + evalServiceAdaptor rpc.IEvaluatorRPCAdapter +} + +func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) { + return nil, nil +} +func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (resp *UpdateTaskResp, err error) { + return nil, nil +} +func (t *TaskServiceImpl) ListTasks(ctx context.Context, req *ListTasksReq) (resp *ListTasksResp, err error) { + return nil, nil +} +func (t *TaskServiceImpl) GetTask(ctx context.Context, req *GetTaskReq) (resp *GetTaskResp, err error) { + return nil, nil +} +func (t *TaskServiceImpl) CheckTaskName(ctx context.Context, req *CheckTaskNameReq) (resp *CheckTaskNameResp, err error) { + return nil, nil +} diff --git a/backend/modules/observability/infra/repo/mysql/convertor/task.go b/backend/modules/observability/infra/repo/mysql/convertor/task.go index fcd05c7dd..47ec51e31 100644 --- a/backend/modules/observability/infra/repo/mysql/convertor/task.go +++ b/backend/modules/observability/infra/repo/mysql/convertor/task.go @@ -1,3 +1,6 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + package convertor import ( diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index 6e20f594e..b8ebe5b6d 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -1,3 +1,6 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + package mysql import ( From 183eb388fa6642f4716265426a6a2fc663bf8e42 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 29 Aug 2025 11:14:15 +0800 Subject: [PATCH 020/462] feat: fix --- .../modules/observability/infra/repo/mysql/task.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index b8ebe5b6d..de6063643 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -151,13 +151,13 @@ func (v *TaskDaoImpl) ListTask(ctx context.Context, param ListTaskParam) ([]*mod } // 处理任务过滤条件 -func applyTaskFilters(db *query.observabilityTaskDo, taskFilters *filter.TaskFilterFields) (*query.observabilityTaskDo, error) { - if taskFilters == nil { - return db, nil - } - - return db, nil -} +//func applyTaskFilters(db *query.observabilityTaskDo, taskFilters *filter.TaskFilterFields) (*query.observabilityTaskDo, error) { +// if taskFilters == nil { +// return db, nil +// } +// +// return db, nil +//} // 计算分页参数 func calculatePagination(reqLimit, reqOffset int32) (int, int) { From 202961a4321b1c290d1ca11179933a20ef3a72b7 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 29 Aug 2025 11:16:16 +0800 Subject: [PATCH 021/462] feat: fix import --- .../modules/observability/domain/task/service/task_service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index a2fc7f6a1..eec440749 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -6,9 +6,9 @@ package service import ( "context" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/Task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" ) type CreateTaskReq struct { From 239a6df2bf164283fd69bc63b7fc8ecb4009e40a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 29 Aug 2025 11:28:41 +0800 Subject: [PATCH 022/462] feat: git add backend/kitex_gen/coze/loop/observability/domain/task/k-consts.go --- .../kitex_gen/coze/loop/observability/domain/task/k-consts.go | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 backend/kitex_gen/coze/loop/observability/domain/task/k-consts.go diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-consts.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-consts.go new file mode 100644 index 000000000..658fe4b5e --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-consts.go @@ -0,0 +1,4 @@ +package task + +// KitexUnusedProtection is used to prevent 'imported and not used' error. +var KitexUnusedProtection = struct{}{} From 6f7498ceb3f2ae5082310de2150a035c16abd2be Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 29 Aug 2025 12:08:37 +0800 Subject: [PATCH 023/462] feat:fix wire --- .../modules/observability/application/trace.go | 2 ++ .../modules/observability/application/wire_gen.go | 3 +++ .../domain/trace/service/trace_service.go | 15 +++++++-------- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index aea86a4e7..478db8560 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -838,6 +838,7 @@ func (t *TraceApplication) ChangeEvaluatorScore(ctx context.Context, req *trace. } sResp, err := t.traceService.ChangeEvaluatorScore(ctx, &service.ChangeEvaluatorScoreRequest{ + EvalSvc: t.evalSvc, WorkspaceID: req.WorkspaceID, EvaluatorRecordID: req.EvaluatorRecordID, SpanID: req.SpanID, @@ -880,6 +881,7 @@ func (t *TraceApplication) ListAnnotationEvaluators(ctx context.Context, req *tr return nil, err } sResp, err := t.traceService.ListAnnotationEvaluators(ctx, &service.ListAnnotationEvaluatorsRequest{ + EvalSvc: t.evalSvc, WorkspaceID: req.WorkspaceID, Name: req.Name, }) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index edb6f8f41..2398908cd 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -193,6 +193,9 @@ var ( openApiSet = wire.NewSet( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) + taskSet = wire.NewSet( + NewTaskApplication, auth.NewAuthProvider, traceDomainSet, + ) ) func NewTraceProcessorBuilder( diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index bfa2683b4..5546d922f 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -201,6 +201,7 @@ type ListAnnotationsResp struct { } type ChangeEvaluatorScoreRequest struct { + EvalSvc rpc.IEvaluatorRPCAdapter WorkspaceID int64 EvaluatorRecordID int64 SpanID string @@ -213,6 +214,7 @@ type ChangeEvaluatorScoreResp struct { Annotation *annotation.Annotation } type ListAnnotationEvaluatorsRequest struct { + EvalSvc rpc.IEvaluatorRPCAdapter WorkspaceID int64 Name *string } @@ -265,7 +267,6 @@ func NewTraceServiceImpl( metrics metrics.ITraceMetrics, buildHelper TraceFilterProcessorBuilder, tenantProvider tenant.ITenantProvider, - evalServiceAdaptor rpc.IEvaluatorRPCAdapter, ) (ITraceService, error) { return &TraceServiceImpl{ traceRepo: tRepo, @@ -275,7 +276,6 @@ func NewTraceServiceImpl( buildHelper: buildHelper, tenantProvider: tenantProvider, metrics: metrics, - evalServiceAdaptor: evalServiceAdaptor, }, nil } @@ -287,7 +287,6 @@ type TraceServiceImpl struct { metrics metrics.ITraceMetrics buildHelper TraceFilterProcessorBuilder tenantProvider tenant.ITenantProvider - evalServiceAdaptor rpc.IEvaluatorRPCAdapter } func (r *TraceServiceImpl) GetTrace(ctx context.Context, req *GetTraceReq) (*GetTraceResp, error) { @@ -1069,7 +1068,7 @@ func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *Change } annotation.CorrectAutoEvaluateScore(req.Correction.GetScore(), req.Correction.GetExplain(), updateBy) // 以评估数据为主数据,优先修改评估数据,异常则直接返回失败 - if err = r.correctEvaluatorRecords(ctx, annotation); err != nil { + if err = r.correctEvaluatorRecords(ctx, req.EvalSvc, annotation); err != nil { return resp, err } // 再同步修改观测数据 @@ -1091,7 +1090,7 @@ func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *Change return resp, nil } -func (r *TraceServiceImpl) correctEvaluatorRecords(ctx context.Context, annotation *loop_span.Annotation) error { +func (r *TraceServiceImpl) correctEvaluatorRecords(ctx context.Context, evalSvc rpc.IEvaluatorRPCAdapter, annotation *loop_span.Annotation) error { if annotation == nil { return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("annotation is nil")) } @@ -1103,7 +1102,7 @@ func (r *TraceServiceImpl) correctEvaluatorRecords(ctx context.Context, annotati } correction := annotation.Corrections[len(annotation.Corrections)-1] - if err := r.evalServiceAdaptor.UpdateEvaluatorRecord(ctx, &rpc.UpdateEvaluatorRecordParam{ + if err := evalSvc.UpdateEvaluatorRecord(ctx, &rpc.UpdateEvaluatorRecordParam{ WorkspaceID: annotation.WorkspaceID, EvaluatorRecordID: annotation.GetAutoEvaluateMetadata().EvaluatorRecordID, Score: correction.Value.FloatValue, @@ -1123,7 +1122,7 @@ func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *Li var err error if req.Name != nil { // 有name直接模糊查询 - evaluators, err = r.evalServiceAdaptor.ListEvaluators(ctx, &rpc.ListEvaluatorsParam{ + evaluators, err = req.EvalSvc.ListEvaluators(ctx, &rpc.ListEvaluatorsParam{ WorkspaceID: req.WorkspaceID, Name: req.Name, }) @@ -1156,7 +1155,7 @@ func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *Li for k := range evaluatorVersionIDS { evaluatorVersionIDList = append(evaluatorVersionIDList, k) } - evaluators, _, err = r.evalServiceAdaptor.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ + evaluators, _, err = req.EvalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ WorkspaceID: req.WorkspaceID, EvaluatorVersionIds: evaluatorVersionIDList, }) From 474661613d76ba297f8cecede10612ccf2033090 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 29 Aug 2025 13:14:33 +0800 Subject: [PATCH 024/462] feat:git add backend/kitex_gen/coze/loop/observability/task/k-consts.go --- backend/kitex_gen/coze/loop/observability/task/k-consts.go | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 backend/kitex_gen/coze/loop/observability/task/k-consts.go diff --git a/backend/kitex_gen/coze/loop/observability/task/k-consts.go b/backend/kitex_gen/coze/loop/observability/task/k-consts.go new file mode 100644 index 000000000..658fe4b5e --- /dev/null +++ b/backend/kitex_gen/coze/loop/observability/task/k-consts.go @@ -0,0 +1,4 @@ +package task + +// KitexUnusedProtection is used to prevent 'imported and not used' error. +var KitexUnusedProtection = struct{}{} From 32518a55b0d0e88aa37db630eb970233a520dbf8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 29 Aug 2025 14:50:07 +0800 Subject: [PATCH 025/462] feat:add task frame --- .../task/coze.loop.observability.task.go | 89 ++--------- .../coze.loop.observability.task_validator.go | 5 + .../task/k-coze.loop.observability.task.go | 26 +-- .../modules/observability/application/task.go | 148 +++++++++--------- .../domain/task/service/task_service.go | 32 +++- .../coze.loop.observability.task.thrift | 9 +- 6 files changed, 137 insertions(+), 172 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go b/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go index 19ea4f89f..0a81b7a6e 100644 --- a/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go +++ b/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go @@ -4,63 +4,15 @@ package task import ( "context" - "database/sql" - "database/sql/driver" "fmt" "github.com/apache/thrift/lib/go/thrift" "github.com/coze-dev/coze-loop/backend/kitex_gen/base" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "strings" ) -type OrderType int64 - -const ( - OrderType_Unknown OrderType = 0 - OrderType_Asc OrderType = 1 - OrderType_Desc OrderType = 2 -) - -func (p OrderType) String() string { - switch p { - case OrderType_Unknown: - return "Unknown" - case OrderType_Asc: - return "Asc" - case OrderType_Desc: - return "Desc" - } - return "" -} - -func OrderTypeFromString(s string) (OrderType, error) { - switch s { - case "Unknown": - return OrderType_Unknown, nil - case "Asc": - return OrderType_Asc, nil - case "Desc": - return OrderType_Desc, nil - } - return OrderType(0), fmt.Errorf("not a valid OrderType string") -} - -func OrderTypePtr(v OrderType) *OrderType { return &v } -func (p *OrderType) Scan(value interface{}) (err error) { - var result sql.NullInt64 - err = result.Scan(value) - *p = OrderType(result.Int64) - return -} - -func (p *OrderType) Value() (driver.Value, error) { - if p == nil { - return nil, nil - } - return int64(*p), nil -} - type CreateTaskRequest struct { Task *task.Task `thrift:"task,1,required" frugal:"1,required,task.Task" form:"task,required" json:"task,required"` Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` @@ -1346,10 +1298,10 @@ type ListTasksRequest struct { WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` TaskFilters *filter.TaskFilterFields `thrift:"task_filters,2,optional" frugal:"2,optional,filter.TaskFilterFields" form:"task_filters" json:"task_filters,omitempty"` /* default 20 max 200 */ - Limit *int32 `thrift:"limit,101,optional" frugal:"101,optional,i32" form:"limit" json:"limit,omitempty"` - Offset *int32 `thrift:"offset,102,optional" frugal:"102,optional,i32" form:"offset" json:"offset,omitempty"` - OrderBy *OrderType `thrift:"order_by,103,optional" frugal:"103,optional,OrderType" form:"order_by" json:"order_by,omitempty"` - Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` + Limit *int32 `thrift:"limit,101,optional" frugal:"101,optional,i32" form:"limit" json:"limit,omitempty"` + Offset *int32 `thrift:"offset,102,optional" frugal:"102,optional,i32" form:"offset" json:"offset,omitempty"` + OrderBy *common.OrderBy `thrift:"order_by,103,optional" frugal:"103,optional,common.OrderBy" form:"order_by" json:"order_by,omitempty"` + Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` } func NewListTasksRequest() *ListTasksRequest { @@ -1402,16 +1354,16 @@ func (p *ListTasksRequest) GetOffset() (v int32) { return *p.Offset } -var ListTasksRequest_OrderBy_DEFAULT OrderType +var ListTasksRequest_OrderBy_DEFAULT *common.OrderBy -func (p *ListTasksRequest) GetOrderBy() (v OrderType) { +func (p *ListTasksRequest) GetOrderBy() (v *common.OrderBy) { if p == nil { return } if !p.IsSetOrderBy() { return ListTasksRequest_OrderBy_DEFAULT } - return *p.OrderBy + return p.OrderBy } var ListTasksRequest_Base_DEFAULT *base.Base @@ -1437,7 +1389,7 @@ func (p *ListTasksRequest) SetLimit(val *int32) { func (p *ListTasksRequest) SetOffset(val *int32) { p.Offset = val } -func (p *ListTasksRequest) SetOrderBy(val *OrderType) { +func (p *ListTasksRequest) SetOrderBy(val *common.OrderBy) { p.OrderBy = val } func (p *ListTasksRequest) SetBase(val *base.Base) { @@ -1526,7 +1478,7 @@ func (p *ListTasksRequest) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 103: - if fieldTypeId == thrift.I32 { + if fieldTypeId == thrift.STRUCT { if err = p.ReadField103(iprot); err != nil { goto ReadFieldError } @@ -1618,13 +1570,9 @@ func (p *ListTasksRequest) ReadField102(iprot thrift.TProtocol) error { return nil } func (p *ListTasksRequest) ReadField103(iprot thrift.TProtocol) error { - - var _field *OrderType - if v, err := iprot.ReadI32(); err != nil { + _field := common.NewOrderBy() + if err := _field.Read(iprot); err != nil { return err - } else { - tmp := OrderType(v) - _field = &tmp } p.OrderBy = _field return nil @@ -1758,10 +1706,10 @@ WriteFieldEndError: } func (p *ListTasksRequest) writeField103(oprot thrift.TProtocol) (err error) { if p.IsSetOrderBy() { - if err = oprot.WriteFieldBegin("order_by", thrift.I32, 103); err != nil { + if err = oprot.WriteFieldBegin("order_by", thrift.STRUCT, 103); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI32(int32(*p.OrderBy)); err != nil { + if err := p.OrderBy.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -1866,14 +1814,9 @@ func (p *ListTasksRequest) Field102DeepEqual(src *int32) bool { } return true } -func (p *ListTasksRequest) Field103DeepEqual(src *OrderType) bool { +func (p *ListTasksRequest) Field103DeepEqual(src *common.OrderBy) bool { - if p.OrderBy == src { - return true - } else if p.OrderBy == nil || src == nil { - return false - } - if *p.OrderBy != *src { + if !p.OrderBy.DeepEqual(src) { return false } return true diff --git a/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task_validator.go b/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task_validator.go index c525077dc..94ddf6901 100644 --- a/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task_validator.go +++ b/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task_validator.go @@ -75,6 +75,11 @@ func (p *ListTasksRequest) IsValid() error { return fmt.Errorf("field TaskFilters not valid, %w", err) } } + if p.OrderBy != nil { + if err := p.OrderBy.IsValid(); err != nil { + return fmt.Errorf("field OrderBy not valid, %w", err) + } + } if p.Base != nil { if err := p.Base.IsValid(); err != nil { return fmt.Errorf("field Base not valid, %w", err) diff --git a/backend/kitex_gen/coze/loop/observability/task/k-coze.loop.observability.task.go b/backend/kitex_gen/coze/loop/observability/task/k-coze.loop.observability.task.go index 2cfd0cc51..3732777b3 100644 --- a/backend/kitex_gen/coze/loop/observability/task/k-coze.loop.observability.task.go +++ b/backend/kitex_gen/coze/loop/observability/task/k-coze.loop.observability.task.go @@ -12,12 +12,14 @@ import ( kutils "github.com/cloudwego/kitex/pkg/utils" "github.com/coze-dev/coze-loop/backend/kitex_gen/base" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" ) var ( _ = base.KitexUnusedProtection + _ = common.KitexUnusedProtection _ = filter.KitexUnusedProtection _ = task.KitexUnusedProtection ) @@ -1019,7 +1021,7 @@ func (p *ListTasksRequest) FastRead(buf []byte) (int, error) { } } case 103: - if fieldTypeId == thrift.I32 { + if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField103(buf[offset:]) offset += l if err != nil { @@ -1126,15 +1128,11 @@ func (p *ListTasksRequest) FastReadField102(buf []byte) (int, error) { func (p *ListTasksRequest) FastReadField103(buf []byte) (int, error) { offset := 0 - - var _field *OrderType - if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + _field := common.NewOrderBy() + if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { offset += l - - tmp := OrderType(v) - _field = &tmp } p.OrderBy = _field return offset, nil @@ -1221,8 +1219,8 @@ func (p *ListTasksRequest) fastWriteField102(buf []byte, w thrift.NocopyWriter) func (p *ListTasksRequest) fastWriteField103(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetOrderBy() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 103) - offset += thrift.Binary.WriteI32(buf[offset:], int32(*p.OrderBy)) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 103) + offset += p.OrderBy.FastWriteNocopy(buf[offset:], w) } return offset } @@ -1274,7 +1272,7 @@ func (p *ListTasksRequest) field103Length() int { l := 0 if p.IsSetOrderBy() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I32Length() + l += p.OrderBy.BLength() } return l } @@ -1315,10 +1313,14 @@ func (p *ListTasksRequest) DeepCopy(s interface{}) error { p.Offset = &tmp } + var _orderBy *common.OrderBy if src.OrderBy != nil { - tmp := *src.OrderBy - p.OrderBy = &tmp + _orderBy = &common.OrderBy{} + if err := _orderBy.DeepCopy(src.OrderBy); err != nil { + return err + } } + p.OrderBy = _orderBy var _base *base.Base if src.Base != nil { diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 54f83abff..8d8a52721 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -8,14 +8,9 @@ import ( "strconv" "time" - "github.com/coze-dev/coze-loop/backend/infra/external/benefit" - "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/metrics" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/logs" @@ -26,82 +21,66 @@ type ITaskApplication interface { } func NewTaskApplication( - traceService service.ITraceService, - viewRepo repo.IViewRepo, - benefitService benefit.IBenefitService, - traceMetrics metrics.ITraceMetrics, - traceConfig config.ITraceConfig, + taskService service.ITaskService, authService rpc.IAuthProvider, evalService rpc.IEvaluatorRPCAdapter, userService rpc.IUserProvider, - tagService rpc.ITagRPCAdapter, -) (ITraceApplication, error) { - return &TraceApplication{ - traceService: traceService, - viewRepo: viewRepo, - traceConfig: traceConfig, - metrics: traceMetrics, - benefit: benefitService, - authSvc: authService, - evalSvc: evalService, - userSvc: userService, - tagSvc: tagService, +) (ITaskApplication, error) { + return &TaskApplication{ + taskSvc: taskService, + authSvc: authService, + evalSvc: evalService, + userSvc: userService, }, nil } type TaskApplication struct { - traceService service.ITraceService - viewRepo repo.IViewRepo - traceConfig config.ITraceConfig - metrics metrics.ITraceMetrics - benefit benefit.IBenefitService - authSvc rpc.IAuthProvider - evalSvc rpc.IEvaluatorRPCAdapter - userSvc rpc.IUserProvider - tagSvc rpc.ITagRPCAdapter + taskSvc service.ITaskService + authSvc rpc.IAuthProvider + evalSvc rpc.IEvaluatorRPCAdapter + userSvc rpc.IUserProvider } func (t *TaskApplication) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest) (*task.CheckTaskNameResponse, error) { + resp := task.NewCheckTaskNameResponse() if req == nil { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) } else if req.GetWorkspaceID() <= 0 { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } if err := t.authSvc.CheckWorkspacePermission(ctx, rpc.AuthActionTraceTaskList, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { return nil, err } - userID := session.UserIDInCtxOrEmpty(ctx) - if userID == "" { - return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + sResp, err := t.taskSvc.CheckTaskName(ctx, &service.CheckTaskNameReq{ + WorkspaceID: req.GetWorkspaceID(), + Name: req.GetName(), + }) + if err != nil { + return resp, err } + resp.Pass = sResp.Pass - return &task.CheckTaskNameResponse{ - BaseResp: nil, - }, nil + return resp, nil } func (t *TaskApplication) CreateTask(ctx context.Context, req *task.CreateTaskRequest) (*task.CreateTaskResponse, error) { + resp := task.NewCreateTaskResponse() if err := t.validateCreateTaskReq(ctx, req); err != nil { - return nil, err + return resp, err } if err := t.authSvc.CheckWorkspacePermission(ctx, rpc.AuthActionTraceTaskCreate, strconv.FormatInt(req.GetTask().GetWorkspaceID(), 10)); err != nil { - return nil, err + return resp, err } - userID := session.UserIDInCtxOrEmpty(ctx) - if userID == "" { - return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + sResp, err := t.taskSvc.CreateTask(ctx, &service.CreateTaskReq{Task: req.GetTask()}) + if err != nil { + return resp, err } - //taskPO := tconv.CreateTaskDTO2PO(req, userID) - // - //id, err := t.taskRepo.CreateTask(ctx, taskPO) - //if err != nil { - // return nil, err - //} + resp.TaskID = sResp.TaskID - return nil, nil + return resp, nil } func (t *TaskApplication) validateCreateTaskReq(ctx context.Context, req *task.CreateTaskRequest) error { @@ -145,6 +124,7 @@ func (t *TaskApplication) validateCreateTaskReq(ctx context.Context, req *task.C return nil } func (t *TaskApplication) UpdateTask(ctx context.Context, req *task.UpdateTaskRequest) (*task.UpdateTaskResponse, error) { + resp := task.NewUpdateTaskResponse() if req == nil { return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) } else if req.GetWorkspaceID() <= 0 { @@ -156,50 +136,66 @@ func (t *TaskApplication) UpdateTask(ctx context.Context, req *task.UpdateTaskRe strconv.FormatInt(req.GetTaskID(), 10)); err != nil { return nil, err } - userID := session.UserIDInCtxOrEmpty(ctx) - if userID == "" { - return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + err := t.taskSvc.UpdateTask(ctx, &service.UpdateTaskReq{ + TaskID: req.GetTaskID(), + WorkspaceID: req.GetWorkspaceID(), + TaskStatus: req.GetTaskStatus(), + Description: req.GetDescription(), + EffectiveTime: req.GetEffectiveTime(), + SampleRate: req.GetSampleRate(), + }) + if err != nil { + return resp, err } - return task.NewUpdateTaskResponse(), nil + return resp, nil } func (t *TaskApplication) ListTasks(ctx context.Context, req *task.ListTasksRequest) (*task.ListTasksResponse, error) { + resp := task.NewListTasksResponse() if req == nil { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) } else if req.GetWorkspaceID() <= 0 { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } if err := t.authSvc.CheckWorkspacePermission(ctx, rpc.AuthActionTraceTaskList, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - return nil, err - } - userID := session.UserIDInCtxOrEmpty(ctx) - if userID == "" { - return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + return resp, err + } + sResp, err := t.taskSvc.ListTasks(ctx, &service.ListTasksReq{ + WorkspaceID: req.GetWorkspaceID(), + TaskFilters: req.GetTaskFilters(), + Limit: req.GetLimit(), + Offset: req.GetOffset(), + OrderBy: req.GetOrderBy(), + }) + if err != nil { + return resp, err } - - return &task.ListTasksResponse{ - BaseResp: nil, - }, nil + resp.Tasks = sResp.Tasks + resp.Total = sResp.Total + return resp, nil } func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) (*task.GetTaskResponse, error) { + resp := task.NewGetTaskResponse() if req == nil { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) } else if req.GetWorkspaceID() <= 0 { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } if err := t.authSvc.CheckWorkspacePermission(ctx, rpc.AuthActionTraceTaskList, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - return nil, err + return resp, err } - userID := session.UserIDInCtxOrEmpty(ctx) - if userID == "" { - return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + sResp, err := t.taskSvc.GetTask(ctx, &service.GetTaskReq{ + TaskID: req.GetTaskID(), + WorkspaceID: req.GetWorkspaceID(), + }) + if err != nil { + return resp, err } + resp.Task = sResp.Task - return &task.GetTaskResponse{ - BaseResp: nil, - }, nil + return resp, nil } diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index eec440749..d55a3837d 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -6,36 +6,58 @@ package service import ( "context" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" ) type CreateTaskReq struct { + Task *task.Task } type CreateTaskResp struct { + TaskID *int64 } type UpdateTaskReq struct { -} -type UpdateTaskResp struct { + TaskID int64 + WorkspaceID int64 + TaskStatus task.TaskStatus + Description string + EffectiveTime *task.EffectiveTime + SampleRate float64 } type ListTasksReq struct { + WorkspaceID int64 + TaskFilters *filter.TaskFilterFields + Limit int32 + Offset int32 + OrderBy *common.OrderBy } type ListTasksResp struct { + Tasks []*task.Task + Total *int64 } type GetTaskReq struct { + TaskID int64 + WorkspaceID int64 } type GetTaskResp struct { + Task *task.Task } type CheckTaskNameReq struct { + WorkspaceID int64 + Name string } type CheckTaskNameResp struct { + Pass *bool } //go:generate mockgen -destination=mocks/task_service.go -package=mocks . ITaskService type ITaskService interface { CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) - UpdateTask(ctx context.Context, req *UpdateTaskReq) (resp *UpdateTaskResp, err error) + UpdateTask(ctx context.Context, req *UpdateTaskReq) (err error) ListTasks(ctx context.Context, req *ListTasksReq) (resp *ListTasksResp, err error) GetTask(ctx context.Context, req *GetTaskReq) (resp *GetTaskResp, err error) CheckTaskName(ctx context.Context, req *CheckTaskNameReq) (resp *CheckTaskNameResp, err error) @@ -62,8 +84,8 @@ type TaskServiceImpl struct { func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) { return nil, nil } -func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (resp *UpdateTaskResp, err error) { - return nil, nil +func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (err error) { + return nil } func (t *TaskServiceImpl) ListTasks(ctx context.Context, req *ListTasksReq) (resp *ListTasksResp, err error) { return nil, nil diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift index caed6a014..876ca052e 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift @@ -3,6 +3,7 @@ namespace go coze.loop.observability.task include "../../../base.thrift" include "./domain/filter.thrift" include "./domain/task.thrift" +include "./domain/common.thrift" struct CreateTaskRequest { 1: required task.Task task (api.body = "task"), @@ -30,18 +31,14 @@ struct UpdateTaskRequest { struct UpdateTaskResponse { 255: optional base.BaseResp BaseResp } -enum OrderType { - Unknown = 0 - Asc = 1 - Desc = 2 -} + struct ListTasksRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") 2: optional filter.TaskFilterFields task_filters (api.body = "task_filters"), 101: optional i32 limit (api.body = "limit") /* default 20 max 200 */ 102: optional i32 offset (api.body = "offset") - 103: optional OrderType order_by (api.body = "order_by") + 103: optional common.OrderBy order_by (api.body = "order_by") 255: optional base.Base base, } From 332c738b21ae149deddbbaf4a357963ca4b8054d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 29 Aug 2025 15:01:06 +0800 Subject: [PATCH 026/462] feat:add task mysql dao --- .../modules/observability/application/wire.go | 2 + .../observability/infra/repo/mysql/task.go | 9 +-- .../observability/infra/repo/redis/task.go | 38 +++++++++++ .../modules/observability/infra/repo/task.go | 65 +++++++++++++++++++ 4 files changed, 107 insertions(+), 7 deletions(-) create mode 100644 backend/modules/observability/infra/repo/redis/task.go create mode 100644 backend/modules/observability/infra/repo/task.go diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index e08e7995a..76d97022c 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -99,6 +99,8 @@ var ( taskSet = wire.NewSet( NewTaskApplication, auth.NewAuthProvider, + obrepo.NewTaskRepoImpl, + mysqldao.NewTaskDaoImpl, traceDomainSet, ) ) diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index de6063643..b74958e51 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -8,8 +8,8 @@ import ( "errors" "github.com/coze-dev/coze-loop/backend/infra/db" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" genquery "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" @@ -30,7 +30,7 @@ type ListTaskParam struct { TaskFilters *filter.TaskFilterFields ReqLimit int32 ReqOffset int32 - OrderBy task.OrderType + OrderBy common.OrderBy } //go:generate mockgen -destination=mocks/task.go -package=mocks . ITaskDao @@ -138,11 +138,6 @@ func (v *TaskDaoImpl) ListTask(ctx context.Context, param ListTaskParam) ([]*mod // 计算分页参数 limit, offset := calculatePagination(param.ReqLimit, param.ReqOffset) - if param.OrderBy == task.OrderType_Asc { - qd = qd.Order(q.CreatedAt.Asc()) - } else { - qd = qd.Order(q.CreatedAt.Desc()) - } results, err := qd.Limit(limit).Offset(offset).Find() if err != nil { return nil, total, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) diff --git a/backend/modules/observability/infra/repo/redis/task.go b/backend/modules/observability/infra/repo/redis/task.go new file mode 100644 index 000000000..1f46d2be0 --- /dev/null +++ b/backend/modules/observability/infra/repo/redis/task.go @@ -0,0 +1,38 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package redis + +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" +) + +//go:generate mockgen -destination=mocks/Task_dao.go -package=mocks . ITaskDAO +type ITaskDAO interface { + MSet(ctx context.Context, Tasks []*entity.ObservabilityTask) error + MGet(ctx context.Context, queries []TaskQuery) (TaskMap map[TaskQuery]*entity.ObservabilityTask, err error) +} + +type TaskQuery struct { + TaskID int64 + + WithCommit bool + CommitVersion string +} + +type TaskDAOImpl struct{} + +// NewTaskDAO noop impl +func NewTaskDAO() ITaskDAO { + return &TaskDAOImpl{} +} + +func (p *TaskDAOImpl) MSet(ctx context.Context, Tasks []*entity.ObservabilityTask) error { + return nil +} + +func (p *TaskDAOImpl) MGet(ctx context.Context, queries []TaskQuery) (TaskMap map[TaskQuery]*entity.ObservabilityTask, err error) { + return nil, nil +} diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go new file mode 100644 index 000000000..4783d30ea --- /dev/null +++ b/backend/modules/observability/infra/repo/task.go @@ -0,0 +1,65 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package repo + +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/infra/idgen" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/convertor" +) + +func NewTaskRepoImpl(TaskDao mysql.ITaskDao, idGenerator idgen.IIDGenerator) repo.ITaskRepo { + return &TaskRepoImpl{ + TaskDao: TaskDao, + idGenerator: idGenerator, + } +} + +type TaskRepoImpl struct { + TaskDao mysql.ITaskDao + idGenerator idgen.IIDGenerator +} + +func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityTask, error) { + TaskPo, err := v.TaskDao.GetTask(ctx, id, workspaceID, userID) + if err != nil { + return nil, err + } + return convertor.TaskPO2DO(TaskPo), nil +} + +func (v *TaskRepoImpl) ListTasks(ctx context.Context, workspaceID int64, userID string) ([]*entity.ObservabilityTask, error) { + results, err := v.TaskDao.ListTasks(ctx, workspaceID, userID) + if err != nil { + return nil, err + } + resp := make([]*entity.ObservabilityTask, len(results)) + for i, result := range results { + resp[i] = convertor.TaskPO2DO(result) + } + return resp, nil +} + +func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) { + id, err := v.idGenerator.GenID(ctx) + if err != nil { + return 0, err + } + TaskPo := convertor.TaskDO2PO(do) + TaskPo.ID = id + return v.TaskDao.CreateTask(ctx, TaskPo) +} + +func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error { + TaskPo := convertor.TaskDO2PO(do) + return v.TaskDao.UpdateTask(ctx, TaskPo) +} + +func (v *TaskRepoImpl) DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error { + return v.TaskDao.DeleteTask(ctx, id, workspaceID, userID) +} From 8c51a1ebfc82cdda6b415834c450c51cab371b79 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 29 Aug 2025 17:27:12 +0800 Subject: [PATCH 027/462] feat:add task handler --- .../observability/domain/filter/filter.go | 331 +++++++++++++++++ .../domain/filter/filter_validator.go | 8 + .../observability/domain/filter/k-filter.go | 231 ++++++++++++ .../loop/observability/domain/task/k-task.go | 6 +- .../loop/observability/domain/task/task.go | 12 +- .../application/convertor/task/task.go | 333 ++++++++++++++++++ .../observability/domain/task/entity/task.go | 12 +- .../observability/domain/task/repo/task.go | 3 +- .../domain/task/service/task_service.go | 147 +++++++- .../observability/infra/repo/mysql/task.go | 23 +- .../modules/observability/infra/repo/task.go | 8 +- .../loop/observability/domain/filter.thrift | 7 + .../loop/observability/domain/task.thrift | 2 +- 13 files changed, 1082 insertions(+), 41 deletions(-) create mode 100644 backend/modules/observability/application/convertor/task/task.go diff --git a/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go b/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go index 4215c2eb3..56a284e7d 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go +++ b/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go @@ -5,6 +5,7 @@ package filter import ( "fmt" "github.com/apache/thrift/lib/go/thrift" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "strings" ) @@ -2169,3 +2170,333 @@ func (p *TaskFilterField) Field6DeepEqual(src *TaskFilterField) bool { } return true } + +type SpanFilterFields struct { + // Span 过滤条件 + Filters *FilterFields `thrift:"filters,1,optional" frugal:"1,optional,FilterFields" form:"filters" json:"filters,omitempty" query:"filters"` + // 平台类型,不填默认是fornax + PlatformType *common.PlatformType `thrift:"platform_type,2,optional" frugal:"2,optional,string" form:"platform_type" json:"platform_type,omitempty" query:"platform_type"` + // 查询的 span 标签页类型,不填默认是 root span + SpanListType *common.SpanListType `thrift:"span_list_type,3,optional" frugal:"3,optional,string" form:"span_list_type" json:"span_list_type,omitempty" query:"span_list_type"` +} + +func NewSpanFilterFields() *SpanFilterFields { + return &SpanFilterFields{} +} + +func (p *SpanFilterFields) InitDefault() { +} + +var SpanFilterFields_Filters_DEFAULT *FilterFields + +func (p *SpanFilterFields) GetFilters() (v *FilterFields) { + if p == nil { + return + } + if !p.IsSetFilters() { + return SpanFilterFields_Filters_DEFAULT + } + return p.Filters +} + +var SpanFilterFields_PlatformType_DEFAULT common.PlatformType + +func (p *SpanFilterFields) GetPlatformType() (v common.PlatformType) { + if p == nil { + return + } + if !p.IsSetPlatformType() { + return SpanFilterFields_PlatformType_DEFAULT + } + return *p.PlatformType +} + +var SpanFilterFields_SpanListType_DEFAULT common.SpanListType + +func (p *SpanFilterFields) GetSpanListType() (v common.SpanListType) { + if p == nil { + return + } + if !p.IsSetSpanListType() { + return SpanFilterFields_SpanListType_DEFAULT + } + return *p.SpanListType +} +func (p *SpanFilterFields) SetFilters(val *FilterFields) { + p.Filters = val +} +func (p *SpanFilterFields) SetPlatformType(val *common.PlatformType) { + p.PlatformType = val +} +func (p *SpanFilterFields) SetSpanListType(val *common.SpanListType) { + p.SpanListType = val +} + +var fieldIDToName_SpanFilterFields = map[int16]string{ + 1: "filters", + 2: "platform_type", + 3: "span_list_type", +} + +func (p *SpanFilterFields) IsSetFilters() bool { + return p.Filters != nil +} + +func (p *SpanFilterFields) IsSetPlatformType() bool { + return p.PlatformType != nil +} + +func (p *SpanFilterFields) IsSetSpanListType() bool { + return p.SpanListType != nil +} + +func (p *SpanFilterFields) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanFilterFields[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *SpanFilterFields) ReadField1(iprot thrift.TProtocol) error { + _field := NewFilterFields() + if err := _field.Read(iprot); err != nil { + return err + } + p.Filters = _field + return nil +} +func (p *SpanFilterFields) ReadField2(iprot thrift.TProtocol) error { + + var _field *common.PlatformType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.PlatformType = _field + return nil +} +func (p *SpanFilterFields) ReadField3(iprot thrift.TProtocol) error { + + var _field *common.SpanListType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.SpanListType = _field + return nil +} + +func (p *SpanFilterFields) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("SpanFilterFields"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *SpanFilterFields) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetFilters() { + if err = oprot.WriteFieldBegin("filters", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Filters.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *SpanFilterFields) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetPlatformType() { + if err = oprot.WriteFieldBegin("platform_type", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.PlatformType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *SpanFilterFields) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetSpanListType() { + if err = oprot.WriteFieldBegin("span_list_type", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.SpanListType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *SpanFilterFields) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("SpanFilterFields(%+v)", *p) + +} + +func (p *SpanFilterFields) DeepEqual(ano *SpanFilterFields) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Filters) { + return false + } + if !p.Field2DeepEqual(ano.PlatformType) { + return false + } + if !p.Field3DeepEqual(ano.SpanListType) { + return false + } + return true +} + +func (p *SpanFilterFields) Field1DeepEqual(src *FilterFields) bool { + + if !p.Filters.DeepEqual(src) { + return false + } + return true +} +func (p *SpanFilterFields) Field2DeepEqual(src *common.PlatformType) bool { + + if p.PlatformType == src { + return true + } else if p.PlatformType == nil || src == nil { + return false + } + if strings.Compare(*p.PlatformType, *src) != 0 { + return false + } + return true +} +func (p *SpanFilterFields) Field3DeepEqual(src *common.SpanListType) bool { + + if p.SpanListType == src { + return true + } else if p.SpanListType == nil || src == nil { + return false + } + if strings.Compare(*p.SpanListType, *src) != 0 { + return false + } + return true +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/filter/filter_validator.go b/backend/kitex_gen/coze/loop/observability/domain/filter/filter_validator.go index 974d72217..0cf259ee4 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/filter/filter_validator.go +++ b/backend/kitex_gen/coze/loop/observability/domain/filter/filter_validator.go @@ -46,3 +46,11 @@ func (p *TaskFilterField) IsValid() error { } return nil } +func (p *SpanFilterFields) IsValid() error { + if p.Filters != nil { + if err := p.Filters.IsValid(); err != nil { + return fmt.Errorf("field Filters not valid, %w", err) + } + } + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/filter/k-filter.go b/backend/kitex_gen/coze/loop/observability/domain/filter/k-filter.go index 95b29ed63..4e4867186 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/filter/k-filter.go +++ b/backend/kitex_gen/coze/loop/observability/domain/filter/k-filter.go @@ -10,6 +10,12 @@ import ( "github.com/cloudwego/gopkg/protocol/thrift" kutils "github.com/cloudwego/kitex/pkg/utils" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" +) + +var ( + _ = common.KitexUnusedProtection ) // unused protection @@ -1553,3 +1559,228 @@ func (p *TaskFilterField) DeepCopy(s interface{}) error { return nil } + +func (p *SpanFilterFields) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanFilterFields[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *SpanFilterFields) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewFilterFields() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Filters = _field + return offset, nil +} + +func (p *SpanFilterFields) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *common.PlatformType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.PlatformType = _field + return offset, nil +} + +func (p *SpanFilterFields) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *common.SpanListType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SpanListType = _field + return offset, nil +} + +func (p *SpanFilterFields) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *SpanFilterFields) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *SpanFilterFields) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *SpanFilterFields) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFilters() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Filters.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *SpanFilterFields) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetPlatformType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.PlatformType) + } + return offset +} + +func (p *SpanFilterFields) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSpanListType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.SpanListType) + } + return offset +} + +func (p *SpanFilterFields) field1Length() int { + l := 0 + if p.IsSetFilters() { + l += thrift.Binary.FieldBeginLength() + l += p.Filters.BLength() + } + return l +} + +func (p *SpanFilterFields) field2Length() int { + l := 0 + if p.IsSetPlatformType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.PlatformType) + } + return l +} + +func (p *SpanFilterFields) field3Length() int { + l := 0 + if p.IsSetSpanListType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.SpanListType) + } + return l +} + +func (p *SpanFilterFields) DeepCopy(s interface{}) error { + src, ok := s.(*SpanFilterFields) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _filters *FilterFields + if src.Filters != nil { + _filters = &FilterFields{} + if err := _filters.DeepCopy(src.Filters); err != nil { + return err + } + } + p.Filters = _filters + + if src.PlatformType != nil { + tmp := *src.PlatformType + p.PlatformType = &tmp + } + + if src.SpanListType != nil { + tmp := *src.SpanListType + p.SpanListType = &tmp + } + + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index 3c396494c..b73ac524a 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -718,7 +718,7 @@ SkipFieldError: func (p *Rule) FastReadField1(buf []byte) (int, error) { offset := 0 - _field := filter.NewFilterFields() + _field := filter.NewSpanFilterFields() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -838,9 +838,9 @@ func (p *Rule) DeepCopy(s interface{}) error { return fmt.Errorf("%T's type not matched %T", s, p) } - var _spanFilters *filter.FilterFields + var _spanFilters *filter.SpanFilterFields if src.SpanFilters != nil { - _spanFilters = &filter.FilterFields{} + _spanFilters = &filter.SpanFilterFields{} if err := _spanFilters.DeepCopy(src.SpanFilters); err != nil { return err } diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 60337f966..cd81fd6af 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -876,7 +876,7 @@ func (p *Task) Field100DeepEqual(src *common.BaseInfo) bool { // Rule type Rule struct { // Span 过滤条件 - SpanFilters *filter.FilterFields `thrift:"span_filters,1,optional" frugal:"1,optional,filter.FilterFields" form:"span_filters" json:"span_filters,omitempty" query:"span_filters"` + SpanFilters *filter.SpanFilterFields `thrift:"span_filters,1,optional" frugal:"1,optional,filter.SpanFilterFields" form:"span_filters" json:"span_filters,omitempty" query:"span_filters"` // 采样配置 Sampler *Sampler `thrift:"sampler,2,optional" frugal:"2,optional,Sampler" form:"sampler" json:"sampler,omitempty" query:"sampler"` // 生效时间窗口 @@ -890,9 +890,9 @@ func NewRule() *Rule { func (p *Rule) InitDefault() { } -var Rule_SpanFilters_DEFAULT *filter.FilterFields +var Rule_SpanFilters_DEFAULT *filter.SpanFilterFields -func (p *Rule) GetSpanFilters() (v *filter.FilterFields) { +func (p *Rule) GetSpanFilters() (v *filter.SpanFilterFields) { if p == nil { return } @@ -925,7 +925,7 @@ func (p *Rule) GetEffectiveTime() (v *EffectiveTime) { } return p.EffectiveTime } -func (p *Rule) SetSpanFilters(val *filter.FilterFields) { +func (p *Rule) SetSpanFilters(val *filter.SpanFilterFields) { p.SpanFilters = val } func (p *Rule) SetSampler(val *Sampler) { @@ -1025,7 +1025,7 @@ ReadStructEndError: } func (p *Rule) ReadField1(iprot thrift.TProtocol) error { - _field := filter.NewFilterFields() + _field := filter.NewSpanFilterFields() if err := _field.Read(iprot); err != nil { return err } @@ -1166,7 +1166,7 @@ func (p *Rule) DeepEqual(ano *Rule) bool { return true } -func (p *Rule) Field1DeepEqual(src *filter.FilterFields) bool { +func (p *Rule) Field1DeepEqual(src *filter.SpanFilterFields) bool { if !p.SpanFilters.DeepEqual(src) { return false diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go new file mode 100644 index 000000000..f068227ee --- /dev/null +++ b/backend/modules/observability/application/convertor/task/task.go @@ -0,0 +1,333 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package task + +import ( + "context" + "fmt" + "strings" + "time" + + "github.com/bytedance/gg/gptr" + "github.com/bytedance/sonic" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/trace" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" + entity_common "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/common" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" + "github.com/coze-dev/coze-loop/backend/pkg/lang/slices" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +func TaskPOs2DOs(ctx context.Context, taskPOs []*entity.ObservabilityTask, userInfos map[string]*entity_common.UserInfo) ([]*task.Task, error) { + var taskList []*task.Task + if len(taskPOs) == 0 { + return taskList, nil + } + for _, v := range taskPOs { + taskDO := TaskPO2DTO(ctx, v, userInfos) + taskList = append(taskList, taskDO) + } + return taskList, nil +} +func TaskPO2DTO(ctx context.Context, v *entity.ObservabilityTask, userMap map[string]*entity_common.UserInfo) *task.Task { + if v == nil { + return nil + } + taskInfo := &task.Task{ + ID: ptr.Of(v.ID), + Name: v.Name, + Description: v.Description, + WorkspaceID: ptr.Of(v.WorkspaceID), + TaskType: v.TaskType, + TaskStatus: ptr.Of(v.TaskStatus), + Rule: RulePO2DO(ctx, v.SpanFilter, v.EffectiveTime, v.Sampler), + TaskConfig: TaskConfigPO2DO(ctx, v.TaskConfig), + TaskDetail: TaskDetailsPO2DO(ctx, v.TaskDetail), + BaseInfo: &common.BaseInfo{ + CreatedAt: gptr.Of(v.CreatedAt.UnixMilli()), + UpdatedAt: gptr.Of(v.UpdatedAt.UnixMilli()), + CreatedBy: UserInfoPO2DO(userMap[v.CreatedBy], v.CreatedBy), + UpdatedBy: UserInfoPO2DO(userMap[v.UpdatedBy], v.UpdatedBy), + }, + } + return taskInfo +} +func UserInfoPO2DO(userInfo *entity_common.UserInfo, userID string) *common.UserInfo { + if userInfo == nil { + return &common.UserInfo{ + UserID: gptr.Of(userID), + } + } + return &common.UserInfo{ + Name: ptr.Of(userInfo.Name), + EnName: ptr.Of(userInfo.EnName), + AvatarURL: ptr.Of(userInfo.AvatarURL), + AvatarThumb: ptr.Of(userInfo.AvatarThumb), + OpenID: ptr.Of(userInfo.OpenID), + UnionID: ptr.Of(userInfo.UnionID), + UserID: ptr.Of(userInfo.UserID), + Email: ptr.Of(userInfo.Email), + } +} +func TaskDetailsPO2DO(ctx context.Context, taskDetails *string) *task.TaskDetail { + if taskDetails == nil { + return nil + } + var taskDetailsDO *task.TaskDetail + if err := sonic.Unmarshal([]byte(*taskDetails), &taskDetailsDO); err != nil { + logs.CtxError(ctx, "TaskDetailsPO2DO sonic.Unmarshal err:%v", err) + return nil + } + return taskDetailsDO +} +func RulePO2DO(ctx context.Context, spanFilter, effectiveTime, sampler *string) *task.Rule { + var spanFilterDO *filter.SpanFilterFields + if spanFilter != nil { + spanFilterDO = SpanFilterPO2DO(ctx, spanFilter) + } + rule := &task.Rule{ + SpanFilters: spanFilterDO, + EffectiveTime: EffectiveTimePO2DO(ctx, effectiveTime), + Sampler: SamplerPO2DO(ctx, sampler), + } + return rule +} +func SamplerPO2DO(ctx context.Context, sampler *string) *task.Sampler { + if sampler == nil { + return nil + } + var samplerDO task.Sampler + if err := sonic.Unmarshal([]byte(*sampler), &samplerDO); err != nil { + logs.CtxError(ctx, "SamplerPO2DO sonic.Unmarshal err:%v", err) + return nil + } + return &samplerDO +} +func SpanFilterPO2DO(ctx context.Context, spanFilter *string) *filter.SpanFilterFields { + if spanFilter == nil { + return nil + } + var spanFilterDO filter.SpanFilterFields + if err := sonic.Unmarshal([]byte(*spanFilter), &spanFilterDO); err != nil { + logs.CtxError(ctx, "SpanFilterPO2DO sonic.Unmarshal err:%v", err) + return nil + } + return &spanFilterDO +} + +func TaskConfigPO2DO(ctx context.Context, taskConfig *string) *task.TaskConfig { + if taskConfig == nil { + return nil + } + var taskConfigDO task.TaskConfig + if err := sonic.Unmarshal([]byte(*taskConfig), &taskConfigDO); err != nil { + logs.CtxError(ctx, "TaskConfigPO2DO sonic.Unmarshal err:%v", err) + return nil + } + return &taskConfigDO +} + +func BatchTaskPO2DTO(ctx context.Context, Tasks []*entity.ObservabilityTask) []*task.Task { + ret := make([]*task.Task, len(Tasks)) + for i, v := range Tasks { + ret[i] = TaskPO2DTO(ctx, v, nil) + } + return ret +} +func EffectiveTimePO2DO(ctx context.Context, effectiveTime *string) *task.EffectiveTime { + if effectiveTime == nil { + return nil + } + var effectiveTimeDO task.EffectiveTime + if err := sonic.Unmarshal([]byte(*effectiveTime), &effectiveTimeDO); err != nil { + logs.CtxError(ctx, "EffectiveTimePO2DO sonic.Unmarshal err:%v", err) + return nil + } + return &effectiveTimeDO +} +func CheckEffectiveTime(ctx context.Context, effectiveTime *task.EffectiveTime, taskStatus task.TaskStatus, effectiveTimePO *string) (*task.EffectiveTime, error) { + effectiveTimeDO := EffectiveTimePO2DO(ctx, effectiveTimePO) + if effectiveTimeDO == nil { + logs.CtxError(ctx, "EffectiveTimePO2DO error") + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("effective time is nil")) + } + var validEffectiveTime task.EffectiveTime + // 开始时间不能大于结束时间 + if effectiveTime.GetStartAt() >= effectiveTime.GetEndAt() { + logs.CtxError(ctx, "Start time must be less than end time") + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("start time must be less than end time")) + } + // 开始、结束时间不能小于当前时间 + if effectiveTimeDO.GetStartAt() != effectiveTime.GetStartAt() && effectiveTime.GetStartAt() < time.Now().UnixMilli() { + logs.CtxError(ctx, "update time must be greater than current time") + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("start time must be greater than current time")) + } + if effectiveTimeDO.GetEndAt() != effectiveTime.GetEndAt() && effectiveTime.GetEndAt() < time.Now().UnixMilli() { + logs.CtxError(ctx, "update time must be greater than current time") + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("start time must be greater than current time")) + } + validEffectiveTime.StartAt = effectiveTimeDO.StartAt + validEffectiveTime.EndAt = effectiveTimeDO.EndAt + switch taskStatus { + case task.TaskStatusUnstarted: + if validEffectiveTime.StartAt != nil { + validEffectiveTime.StartAt = effectiveTime.StartAt + } + if validEffectiveTime.EndAt != nil { + validEffectiveTime.EndAt = effectiveTime.EndAt + } + case task.TaskStatusRunning, task.TaskStatusPending: + if validEffectiveTime.EndAt != nil { + validEffectiveTime.EndAt = effectiveTime.EndAt + } + default: + logs.CtxError(ctx, "Invalid task status:%s", taskStatus) + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid task status")) + } + return &validEffectiveTime, nil +} + +func CheckTaskStatus(ctx context.Context, taskStatus task.TaskStatus, currentTaskStatus task.TaskStatus) (task.TaskStatus, error) { + var validTaskStatus task.TaskStatus + // [0530]todo: 任务状态校验 + switch taskStatus { + case task.TaskStatusUnstarted: + if currentTaskStatus == task.TaskStatusUnstarted { + validTaskStatus = taskStatus + } else { + logs.CtxError(ctx, "Invalid task status:%s", taskStatus) + return "", errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid task status")) + } + case task.TaskStatusRunning: + if currentTaskStatus == task.TaskStatusUnstarted || currentTaskStatus == task.TaskStatusPending { + validTaskStatus = taskStatus + } else { + logs.CtxError(ctx, "Invalid task status:%s,currentTaskStatus:%s", taskStatus, currentTaskStatus) + return "", errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid task status")) + } + case task.TaskStatusPending: + if currentTaskStatus == task.TaskStatusRunning { + validTaskStatus = task.TaskStatusPending + } + case task.TaskStatusDisabled: + if currentTaskStatus == task.TaskStatusUnstarted || currentTaskStatus == task.TaskStatusPending { + validTaskStatus = task.TaskStatusDisabled + } + case task.TaskStatusSuccess: + if currentTaskStatus != task.TaskStatusSuccess { + validTaskStatus = task.TaskStatusSuccess + } + } + + return validTaskStatus, nil +} + +func CreateTaskDTO2PO(ctx context.Context, req *service.CreateTaskReq, userID string) *entity.ObservabilityTask { + if req == nil { + return nil + } + return &entity.ObservabilityTask{ + WorkspaceID: req.Task.GetWorkspaceID(), + Name: req.Task.GetName(), + Description: ptr.Of(req.Task.GetDescription()), + TaskType: req.Task.GetTaskType(), + TaskStatus: task.TaskStatusUnstarted, + TaskDetail: ptr.Of(ToJSONString(ctx, req.Task.GetTaskDetail())), + SpanFilter: SpanFilterDTO2PO(ctx, req.Task.GetRule().GetSpanFilters(), req.Task.GetWorkspaceID()), + EffectiveTime: ptr.Of(ToJSONString(ctx, req.Task.GetRule().GetEffectiveTime())), + Sampler: ptr.Of(ToJSONString(ctx, req.Task.GetRule().GetSampler())), + TaskConfig: TaskConfigDTO2PO(ctx, req.Task.GetTaskConfig()), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + CreatedBy: userID, + UpdatedBy: userID, + } +} +func SpanFilterDTO2PO(ctx context.Context, filters *filter.SpanFilterFields, workspaceID int64) *string { + var filtersDO *loop_span.FilterFields + if filters.GetFilters() != nil { + filtersDO = tconv.FilterFieldsDTO2DO(filters.GetFilters()) + } + filterDO := entity.SpanFilter{ + PlatformType: filters.GetPlatformType(), + SpanListType: filters.GetSpanListType(), + Filters: *filtersDO, + } + + //todo[xun]:coze数据处理 + + return ptr.Of(ToJSONString(ctx, filterDO)) +} + +func TaskConfigDTO2PO(ctx context.Context, taskConfig *task.TaskConfig) *string { + if taskConfig == nil { + return nil + } + var evalSetNames []string + jspnPathMapping := make(map[string]string) + for _, autoEvaluateConfig := range taskConfig.GetAutoEvaluateConfigs() { + for _, mapping := range autoEvaluateConfig.GetFieldMappings() { + jspnPath := fmt.Sprintf("%s.%s", mapping.TraceFieldKey, mapping.TraceFieldJsonpath) + if _, exits := jspnPathMapping[jspnPath]; exits { + mapping.EvalSetName = gptr.Of(jspnPathMapping[jspnPath]) + continue + } + evalSetName := getLastPartAfterDot(jspnPath) + for exists := slices.Contains(evalSetNames, evalSetName); exists; exists = slices.Contains(evalSetNames, evalSetName) { + evalSetName += "_" + } + mapping.EvalSetName = gptr.Of(evalSetName) + evalSetNames = append(evalSetNames, evalSetName) + jspnPathMapping[jspnPath] = evalSetName + } + } + + return gptr.Of(ToJSONString(ctx, taskConfig)) +} +func getLastPartAfterDot(s string) string { + s = strings.TrimRight(s, ".") + lastDotIndex := strings.LastIndex(s, ".") + if lastDotIndex == -1 { + lastPart := s + return processBracket(lastPart) + } + lastPart := s[lastDotIndex+1:] + return processBracket(lastPart) +} + +// processBracket 处理字符串中的方括号,将其转换为下划线连接的形式 +func processBracket(s string) string { + openBracketIndex := strings.Index(s, "[") + if openBracketIndex == -1 { + return s + } + closeBracketIndex := strings.Index(s, "]") + if closeBracketIndex == -1 { + return s + } + base := s[:openBracketIndex] + index := s[openBracketIndex+1 : closeBracketIndex] + return base + "_" + index +} + +// ToJSONString 通用函数,将对象转换为 JSON 字符串指针 +func ToJSONString(ctx context.Context, obj interface{}) string { + if obj == nil { + return "" + } + jsonData, err := sonic.Marshal(obj) + if err != nil { + logs.CtxError(ctx, "JSON marshal error: %v", err) + return "" + } + jsonStr := string(jsonData) + return jsonStr +} diff --git a/backend/modules/observability/domain/task/entity/task.go b/backend/modules/observability/domain/task/entity/task.go index ec66218f8..1160ec7f8 100644 --- a/backend/modules/observability/domain/task/entity/task.go +++ b/backend/modules/observability/domain/task/entity/task.go @@ -3,7 +3,12 @@ package entity -import "time" +import ( + "time" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" +) type ObservabilityTask struct { ID int64 // Task ID @@ -22,3 +27,8 @@ type ObservabilityTask struct { CreatedBy string // 创建人 UpdatedBy string // 更新人 } +type SpanFilter struct { + Filters loop_span.FilterFields `json:"filters,omitempty"` + PlatformType common.PlatformType `json:"platform_type,omitempty"` + SpanListType common.SpanListType `json:"span_list_type,omitempty"` +} diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index 6dbf5e439..af717d38a 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -7,12 +7,13 @@ import ( "context" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" ) //go:generate mockgen -destination=mocks/Task.go -package=mocks . ITaskRepo type ITaskRepo interface { GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityTask, error) - ListTasks(ctx context.Context, workspaceID int64, userID string) ([]*entity.ObservabilityTask, error) + ListTasks(ctx context.Context, param mysql.ListTaskParam) ([]*entity.ObservabilityTask, int64, error) UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index d55a3837d..ebde27974 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -5,13 +5,22 @@ package service import ( "context" + "time" + "github.com/bytedance/gg/gptr" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" + "github.com/coze-dev/coze-loop/backend/pkg/logs" ) type CreateTaskReq struct { @@ -33,7 +42,7 @@ type ListTasksReq struct { TaskFilters *filter.TaskFilterFields Limit int32 Offset int32 - OrderBy *common.OrderBy + OrderBy common.OrderBy } type ListTasksResp struct { Tasks []*task.Task @@ -67,11 +76,13 @@ func NewTaskServiceImpl( tRepo repo.ITaskRepo, tenantProvider tenant.ITenantProvider, evalServiceAdaptor rpc.IEvaluatorRPCAdapter, + userProvider rpc.IUserProvider, ) (ITaskService, error) { return &TaskServiceImpl{ TaskRepo: tRepo, tenantProvider: tenantProvider, evalServiceAdaptor: evalServiceAdaptor, + userProvider: userProvider, }, nil } @@ -79,20 +90,146 @@ type TaskServiceImpl struct { TaskRepo repo.ITaskRepo tenantProvider tenant.ITenantProvider evalServiceAdaptor rpc.IEvaluatorRPCAdapter + userProvider rpc.IUserProvider } func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) { - return nil, nil + userID := session.UserIDInCtxOrEmpty(ctx) + if userID == "" { + return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) + } + taskPO := tconv.CreateTaskDTO2PO(ctx, req, userID) + id, err := t.TaskRepo.CreateTask(ctx, taskPO) + if err != nil { + return nil, err + } + resp.TaskID = &id + //todo[xun]:历史回溯数据发mq + return resp, nil } func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (err error) { + taskPO, err := t.TaskRepo.GetTask(ctx, req.TaskID, &req.WorkspaceID, nil) + if err != nil { + return err + } + if taskPO == nil { + logs.CtxError(ctx, "task not found") + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("task not found")) + } + userID := session.UserIDInCtxOrEmpty(ctx) + if userID == "" { + return errorx.NewByCode(obErrorx.UserParseFailedCode) + } + if req.Description != "" { + taskPO.Description = &req.Description + } + if req.EffectiveTime != nil { + validEffectiveTime, err := tconv.CheckEffectiveTime(ctx, req.EffectiveTime, taskPO.TaskStatus, taskPO.EffectiveTime) + if err != nil { + return err + } + taskPO.EffectiveTime = ptr.Of(tconv.ToJSONString(ctx, validEffectiveTime)) + } + if req.SampleRate != 0 { + taskPO.Sampler = ptr.Of(tconv.ToJSONString(ctx, req.SampleRate)) + } + if req.TaskStatus != "" { + validTaskStatus, err := tconv.CheckTaskStatus(ctx, req.TaskStatus, taskPO.TaskStatus) + if err != nil { + return err + } + if validTaskStatus != "" { + if validTaskStatus == task.TaskStatusDisabled { + //todo[xun]:禁用操作处理 + } + taskPO.TaskStatus = req.TaskStatus + } + } + taskPO.UpdatedBy = userID + taskPO.UpdatedAt = time.Now() + if err = t.TaskRepo.UpdateTask(ctx, taskPO); err != nil { + return err + } return nil } func (t *TaskServiceImpl) ListTasks(ctx context.Context, req *ListTasksReq) (resp *ListTasksResp, err error) { - return nil, nil + taskPOs, _, err := t.TaskRepo.ListTasks(ctx, mysql.ListTaskParam{ + WorkspaceIDs: []int64{req.WorkspaceID}, + TaskFilters: req.TaskFilters, + ReqLimit: req.Limit, + ReqOffset: req.Offset, + OrderBy: req.OrderBy, + }) + if len(taskPOs) == 0 { + logs.CtxInfo(ctx, "GetTasks tasks is nil") + return resp, nil + } + userMap := make(map[string]bool) + users := make([]string, 0) + for _, tp := range taskPOs { + userMap[tp.CreatedBy] = true + userMap[tp.UpdatedBy] = true + } + for u := range userMap { + users = append(users, u) + } + _, userInfoMap, err := t.userProvider.GetUserInfo(ctx, users) + if err != nil { + logs.CtxError(ctx, "MGetUserInfo err:%v", err) + } + tasks, err := tconv.TaskPOs2DOs(ctx, taskPOs, userInfoMap) + if err != nil { + logs.CtxError(ctx, "TaskPOs2DOs err:%v", err) + return resp, err + } + resp.Tasks = tasks + return resp, nil } func (t *TaskServiceImpl) GetTask(ctx context.Context, req *GetTaskReq) (resp *GetTaskResp, err error) { - return nil, nil + userID := session.UserIDInCtxOrEmpty(ctx) + if userID == "" { + return resp, errorx.NewByCode(obErrorx.UserParseFailedCode) + } + taskPO, err := t.TaskRepo.GetTask(ctx, req.TaskID, &req.WorkspaceID, &userID) + if err != nil { + logs.CtxError(ctx, "GetTasks err:%v", err) + return resp, err + } + if taskPO == nil { + logs.CtxError(ctx, "GetTasks tasks is nil") + return resp, nil + } + _, userInfoMap, err := t.userProvider.GetUserInfo(ctx, []string{taskPO.CreatedBy, taskPO.UpdatedBy}) + if err != nil { + logs.CtxError(ctx, "MGetUserInfo err:%v", err) + } + resp.Task = tconv.TaskPO2DTO(ctx, taskPO, userInfoMap) + return resp, nil } func (t *TaskServiceImpl) CheckTaskName(ctx context.Context, req *CheckTaskNameReq) (resp *CheckTaskNameResp, err error) { - return nil, nil + taskPOs, _, err := t.TaskRepo.ListTasks(ctx, mysql.ListTaskParam{ + WorkspaceIDs: []int64{req.WorkspaceID}, + TaskFilters: &filter.TaskFilterFields{ + FilterFields: []*filter.TaskFilterField{ + { + FieldName: gptr.Of(filter.TaskFieldNameTaskName), + FieldType: gptr.Of(filter.FieldTypeString), + Values: []string{req.Name}, + QueryType: gptr.Of(filter.QueryTypeMatch), + }, + }, + }, + ReqLimit: 10, + ReqOffset: 0, + }) + if err != nil { + logs.CtxError(ctx, "GetTasks err:%v", err) + return nil, err + } + if len(taskPOs) > 0 { + resp.Pass = gptr.Of(false) + } else { + resp.Pass = gptr.Of(true) + } + return resp, nil } diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index b74958e51..dd16f818c 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -8,7 +8,7 @@ import ( "errors" "github.com/coze-dev/coze-loop/backend/infra/db" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" genquery "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" @@ -36,11 +36,10 @@ type ListTaskParam struct { //go:generate mockgen -destination=mocks/task.go -package=mocks . ITaskDao type ITaskDao interface { GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTask, error) - ListTasks(ctx context.Context, workspaceID int64, userID string) ([]*model.ObservabilityTask, error) CreateTask(ctx context.Context, po *model.ObservabilityTask) (int64, error) UpdateTask(ctx context.Context, po *model.ObservabilityTask) error DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error - ListTask(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) + ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) } func NewTaskDaoImpl(db db.Provider) ITaskDao { @@ -73,22 +72,6 @@ func (v *TaskDaoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64, return TaskPo, nil } -func (v *TaskDaoImpl) ListTasks(ctx context.Context, workspaceID int64, userID string) ([]*model.ObservabilityTask, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask - qd := q.WithContext(ctx) - if workspaceID != 0 { - qd = qd.Where(q.WorkspaceID.Eq(workspaceID)) - } - if userID != "" { - qd = qd.Where(q.CreatedBy.Eq(userID)) - } - results, err := qd.Limit(100).Find() - if err != nil { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return results, nil -} - func (v *TaskDaoImpl) CreateTask(ctx context.Context, po *model.ObservabilityTask) (int64, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask if err := q.WithContext(ctx).Create(po); err != nil { @@ -122,7 +105,7 @@ func (v *TaskDaoImpl) DeleteTask(ctx context.Context, id int64, workspaceID int6 return nil } -func (v *TaskDaoImpl) ListTask(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) { +func (v *TaskDaoImpl) ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask var total int64 qd := q.WithContext(ctx) diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 4783d30ea..9f3a8f876 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -33,16 +33,16 @@ func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64 return convertor.TaskPO2DO(TaskPo), nil } -func (v *TaskRepoImpl) ListTasks(ctx context.Context, workspaceID int64, userID string) ([]*entity.ObservabilityTask, error) { - results, err := v.TaskDao.ListTasks(ctx, workspaceID, userID) +func (v *TaskRepoImpl) ListTasks(ctx context.Context, param mysql.ListTaskParam) ([]*entity.ObservabilityTask, int64, error) { + results, total, err := v.TaskDao.ListTasks(ctx, param) if err != nil { - return nil, err + return nil, 0, err } resp := make([]*entity.ObservabilityTask, len(results)) for i, result := range results { resp[i] = convertor.TaskPO2DO(result) } - return resp, nil + return resp, total, nil } func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) { diff --git a/idl/thrift/coze/loop/observability/domain/filter.thrift b/idl/thrift/coze/loop/observability/domain/filter.thrift index fb9bf3dcb..68ec03e6e 100644 --- a/idl/thrift/coze/loop/observability/domain/filter.thrift +++ b/idl/thrift/coze/loop/observability/domain/filter.thrift @@ -1,5 +1,7 @@ namespace go coze.loop.observability.domain.filter +include "common.thrift" + typedef string QueryType (ts.enum="true") const QueryType QueryType_Match = "match" const QueryType QueryType_Eq = "eq" @@ -63,4 +65,9 @@ struct TaskFilterField { 4: optional QueryType query_type 5: optional QueryRelation query_and_or 6: optional TaskFilterField sub_filter +} +struct SpanFilterFields { + 1: optional FilterFields filters // Span 过滤条件 + 2: optional common.PlatformType platform_type // 平台类型,不填默认是fornax + 3: optional common.SpanListType span_list_type // 查询的 span 标签页类型,不填默认是 root span } \ No newline at end of file diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 6d7375473..008ddad54 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -36,7 +36,7 @@ struct Task { // Rule struct Rule { - 1: optional filter.FilterFields span_filters // Span 过滤条件 + 1: optional filter.SpanFilterFields span_filters // Span 过滤条件 2: optional Sampler sampler // 采样配置 3: optional EffectiveTime effective_time // 生效时间窗口 } From 461309d90586913744c9444d1a339eeec1c6587c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 1 Sep 2025 14:13:59 +0800 Subject: [PATCH 028/462] feat:add listtasks with filter --- .../observability/infra/repo/mysql/task.go | 159 ++++++++++++++++-- 1 file changed, 143 insertions(+), 16 deletions(-) diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index dd16f818c..c40f82358 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -6,15 +6,19 @@ package mysql import ( "context" "errors" + "fmt" + "strconv" "github.com/coze-dev/coze-loop/backend/infra/db" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" genquery "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/logs" + "gorm.io/gen/field" "gorm.io/gorm" ) @@ -106,19 +110,22 @@ func (v *TaskDaoImpl) DeleteTask(ctx context.Context, id int64, workspaceID int6 } func (v *TaskDaoImpl) ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + q := genquery.Use(v.dbMgr.NewSession(ctx)) + qd := q.WithContext(ctx).ObservabilityTask var total int64 - qd := q.WithContext(ctx) if len(param.WorkspaceIDs) != 0 { - qd = qd.Where(q.WorkspaceID.In(param.WorkspaceIDs...)) + qd = qd.Where(q.ObservabilityTask.WorkspaceID.In(param.WorkspaceIDs...)) } // 应用过滤条件 - //var err error - //qd, err = applyTaskFilters(qd, param.TaskFilters) - //if err != nil { - // return nil, 0, err - //} - + qdf, err := v.applyTaskFilters(q, param.TaskFilters) + if err != nil { + return nil, 0, err + } + if qdf != nil { + qd = qd.Where(qdf) + } + // order by + qd = qd.Order(v.order(q, param.OrderBy.String(), *param.OrderBy.IsAsc)) // 计算分页参数 limit, offset := calculatePagination(param.ReqLimit, param.ReqOffset) results, err := qd.Limit(limit).Offset(offset).Find() @@ -129,13 +136,119 @@ func (v *TaskDaoImpl) ListTasks(ctx context.Context, param ListTaskParam) ([]*mo } // 处理任务过滤条件 -//func applyTaskFilters(db *query.observabilityTaskDo, taskFilters *filter.TaskFilterFields) (*query.observabilityTaskDo, error) { -// if taskFilters == nil { -// return db, nil -// } -// -// return db, nil -//} +func (v *TaskDaoImpl) applyTaskFilters(q *query.Query, taskFilters *filter.TaskFilterFields) (field.Expr, error) { + var filterExpr field.Expr + if taskFilters == nil { + return nil, nil + } + for _, f := range taskFilters.FilterFields { + if f.FieldName == nil || f.QueryType == nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("field name or query type is nil")) + } + + switch *f.FieldName { + case filter.TaskFieldNameTaskName: + switch *f.QueryType { + case filter.QueryTypeEq: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg(("no value provided for query"))) + } + filterExpr = q.ObservabilityTask.Name.Eq(f.Values[0]) + case filter.QueryTypeMatch: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for query")) + } + filterExpr = q.ObservabilityTask.Name.Like(fmt.Sprintf("%%%s%%", f.Values[0])) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task name")) + } + case filter.TaskFieldNameTaskType: + switch *f.QueryType { + case filter.QueryTypeIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) + } + filterExpr = q.ObservabilityTask.TaskType.In(f.Values...) + case filter.QueryTypeNotIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) + } + filterExpr = q.ObservabilityTask.TaskType.NotIn(f.Values...) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task type")) + } + case filter.TaskFieldNameTaskStatus: + switch *f.QueryType { + case filter.QueryTypeIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) + } + filterExpr = q.ObservabilityTask.TaskStatus.In(f.Values...) + case filter.QueryTypeNotIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) + } + filterExpr = q.ObservabilityTask.TaskStatus.NotIn(f.Values...) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task status")) + } + case filter.TaskFieldNameCreatedBy: + switch *f.QueryType { + case filter.QueryTypeIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) + } + filterExpr = q.ObservabilityTask.CreatedBy.In(f.Values...) + case filter.QueryTypeNotIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) + } + filterExpr = q.ObservabilityTask.CreatedBy.NotIn(f.Values...) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for created_by")) + } + case filter.TaskFieldNameSampleRate: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for sample rate")) + } + //sampleRate, err := strconv.ParseFloat(f.Values[0], 64) + //if err != nil { + // return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid sample rate: %v", err.Error())) + //} + switch *f.QueryType { + case filter.QueryTypeGte: + //filterExpr = q.ObservabilityTask.Sampler.Gte(sampleRate) + //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') >= ?", sampleRate) + case filter.QueryTypeLte: + //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') <= ?", sampleRate) + case filter.QueryTypeEq: + //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') = ?", sampleRate) + case filter.QueryTypeNotEq: + //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') !=?", sampleRate) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for sample rate")) + } + case "task_id": + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for task id")) + } + var taskIDs []int64 + for _, value := range f.Values { + taskID, err := strconv.ParseInt(value, 10, 64) + if err != nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid task id: %v", err.Error())) + } + taskIDs = append(taskIDs, taskID) + } + + filterExpr = q.ObservabilityTask.ID.In(taskIDs...) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid filter field name: %s", *f.FieldName)) + } + } + + return filterExpr, nil +} // 计算分页参数 func calculatePagination(reqLimit, reqOffset int32) (int, int) { @@ -151,3 +264,17 @@ func calculatePagination(reqLimit, reqOffset int32) (int, int) { return limit, offset } + +func (d *TaskDaoImpl) order(q *query.Query, orderBy string, asc bool) field.Expr { + var orderExpr field.OrderExpr + switch orderBy { + case "created_at": + orderExpr = q.ObservabilityTask.CreatedAt + default: + orderExpr = q.ObservabilityTask.CreatedAt + } + if asc { + return orderExpr.Asc() + } + return orderExpr.Desc() +} From 6dc2f13f432bd30c878d7c7e74dc03b7a8736b89 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 1 Sep 2025 15:14:47 +0800 Subject: [PATCH 029/462] feat:fix import cycle --- .../application/convertor/task/task.go | 23 +++++++++---------- .../domain/task/service/task_service.go | 2 +- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index f068227ee..6fdba1f8c 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -16,7 +16,6 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/trace" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" entity_common "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/common" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" @@ -230,21 +229,21 @@ func CheckTaskStatus(ctx context.Context, taskStatus task.TaskStatus, currentTas return validTaskStatus, nil } -func CreateTaskDTO2PO(ctx context.Context, req *service.CreateTaskReq, userID string) *entity.ObservabilityTask { - if req == nil { +func CreateTaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.ObservabilityTask { + if taskDO == nil { return nil } return &entity.ObservabilityTask{ - WorkspaceID: req.Task.GetWorkspaceID(), - Name: req.Task.GetName(), - Description: ptr.Of(req.Task.GetDescription()), - TaskType: req.Task.GetTaskType(), + WorkspaceID: taskDO.GetWorkspaceID(), + Name: taskDO.GetName(), + Description: ptr.Of(taskDO.GetDescription()), + TaskType: taskDO.GetTaskType(), TaskStatus: task.TaskStatusUnstarted, - TaskDetail: ptr.Of(ToJSONString(ctx, req.Task.GetTaskDetail())), - SpanFilter: SpanFilterDTO2PO(ctx, req.Task.GetRule().GetSpanFilters(), req.Task.GetWorkspaceID()), - EffectiveTime: ptr.Of(ToJSONString(ctx, req.Task.GetRule().GetEffectiveTime())), - Sampler: ptr.Of(ToJSONString(ctx, req.Task.GetRule().GetSampler())), - TaskConfig: TaskConfigDTO2PO(ctx, req.Task.GetTaskConfig()), + TaskDetail: ptr.Of(ToJSONString(ctx, taskDO.GetTaskDetail())), + SpanFilter: SpanFilterDTO2PO(ctx, taskDO.GetRule().GetSpanFilters(), taskDO.GetWorkspaceID()), + EffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetEffectiveTime())), + Sampler: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetSampler())), + TaskConfig: TaskConfigDTO2PO(ctx, taskDO.GetTaskConfig()), CreatedAt: time.Now(), UpdatedAt: time.Now(), CreatedBy: userID, diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index ebde27974..367465d82 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -98,7 +98,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if userID == "" { return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) } - taskPO := tconv.CreateTaskDTO2PO(ctx, req, userID) + taskPO := tconv.CreateTaskDTO2PO(ctx, req.Task, userID) id, err := t.TaskRepo.CreateTask(ctx, taskPO) if err != nil { return nil, err From 832466875fdd7b24caadbbc3bc19e57f9af2a70a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 1 Sep 2025 15:19:46 +0800 Subject: [PATCH 030/462] feat:fix --- .../modules/observability/domain/task/service/task_service.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 367465d82..54e2a6738 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -42,7 +42,7 @@ type ListTasksReq struct { TaskFilters *filter.TaskFilterFields Limit int32 Offset int32 - OrderBy common.OrderBy + OrderBy *common.OrderBy } type ListTasksResp struct { Tasks []*task.Task @@ -158,7 +158,7 @@ func (t *TaskServiceImpl) ListTasks(ctx context.Context, req *ListTasksReq) (res TaskFilters: req.TaskFilters, ReqLimit: req.Limit, ReqOffset: req.Offset, - OrderBy: req.OrderBy, + OrderBy: *req.OrderBy, }) if len(taskPOs) == 0 { logs.CtxInfo(ctx, "GetTasks tasks is nil") From 7a448ef68c3b11a840ab3ed6835bec97cf516543 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 1 Sep 2025 19:31:04 +0800 Subject: [PATCH 031/462] feat:Use idgen to generate task IDs --- .../application/convertor/task/task.go | 3 ++- backend/modules/observability/application/wire.go | 14 ++++++++++++++ .../domain/task/service/task_service.go | 10 +++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 6fdba1f8c..05f688792 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -229,11 +229,12 @@ func CheckTaskStatus(ctx context.Context, taskStatus task.TaskStatus, currentTas return validTaskStatus, nil } -func CreateTaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.ObservabilityTask { +func CreateTaskDTO2PO(ctx context.Context, genID int64, taskDO *task.Task, userID string) *entity.ObservabilityTask { if taskDO == nil { return nil } return &entity.ObservabilityTask{ + ID: genID, WorkspaceID: taskDO.GetWorkspaceID(), Name: taskDO.GetName(), Description: ptr.Of(taskDO.GetDescription()), diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 76d97022c..b49b3a4ec 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -23,6 +23,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/user/userservice" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + taskSvc "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/exporter" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/processor" @@ -97,6 +98,7 @@ var ( traceDomainSet, ) taskSet = wire.NewSet( + taskSvc.NewTaskServiceImpl, NewTaskApplication, auth.NewAuthProvider, obrepo.NewTaskRepoImpl, @@ -216,3 +218,15 @@ func InitTraceIngestionApplication( wire.Build(traceIngestionSet) return nil, nil } + +func InitTaskApplication( + db db.Provider, + idgen idgen.IIDGenerator, + authClient authservice.Client, + userClient userservice.Client, + evalService evaluatorservice.Client, + evalSetService evaluationsetservice.Client, + datasetService datasetservice.Client) (ITaskApplication, error) { + wire.Build(taskSet) + return nil, nil +} diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 54e2a6738..0335b542a 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -8,6 +8,7 @@ import ( "time" "github.com/bytedance/gg/gptr" + "github.com/coze-dev/coze-loop/backend/infra/idgen" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" @@ -77,12 +78,14 @@ func NewTaskServiceImpl( tenantProvider tenant.ITenantProvider, evalServiceAdaptor rpc.IEvaluatorRPCAdapter, userProvider rpc.IUserProvider, + idGenerator idgen.IIDGenerator, ) (ITaskService, error) { return &TaskServiceImpl{ TaskRepo: tRepo, tenantProvider: tenantProvider, evalServiceAdaptor: evalServiceAdaptor, userProvider: userProvider, + idGenerator: idGenerator, }, nil } @@ -91,6 +94,7 @@ type TaskServiceImpl struct { tenantProvider tenant.ITenantProvider evalServiceAdaptor rpc.IEvaluatorRPCAdapter userProvider rpc.IUserProvider + idGenerator idgen.IIDGenerator } func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) { @@ -98,7 +102,11 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if userID == "" { return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) } - taskPO := tconv.CreateTaskDTO2PO(ctx, req.Task, userID) + genID, err := t.idGenerator.GenID(ctx) + if err != nil { + return resp, err + } + taskPO := tconv.CreateTaskDTO2PO(ctx, genID, req.Task, userID) id, err := t.TaskRepo.CreateTask(ctx, taskPO) if err != nil { return nil, err From a5e904b0747f49df83c2b9a34da3e755c33f007c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 1 Sep 2025 20:15:27 +0800 Subject: [PATCH 032/462] feat:fix idl --- backend/api/router/coze/loop/apis/coze.loop.apis.go | 2 +- .../loop/observability/coze.loop.observability.trace.thrift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index 65828d129..b43c32e5d 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -268,7 +268,7 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _annotations.DELETE("/:annotation_id", append(_deletemanualannotationMw(handler), apis.DeleteManualAnnotation)...) _annotations.PUT("/:annotation_id", append(_updatemanualannotationMw(handler), apis.UpdateManualAnnotation)...) _annotations.POST("/change_eEvaluator_sScore", append(_changeevaluatorscoreMw(handler), apis.ChangeEvaluatorScore)...) - _annotations.POST("/lis_annotation_evaluators", append(_listannotationevaluatorsMw(handler), apis.ListAnnotationEvaluators)...) + _annotations.GET("/lis_annotation_evaluators", append(_listannotationevaluatorsMw(handler), apis.ListAnnotationEvaluators)...) _annotations.POST("/list", append(_listannotationsMw(handler), apis.ListAnnotations)...) _v14.POST("/tasks", append(_tasksMw(handler), apis.CreateTask)...) _tasks := _v14.Group("/tasks", _tasksMw(handler)...) diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index 6164c3778..c050b66d9 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -361,6 +361,6 @@ service TraceService { ExportTracesToDatasetResponse ExportTracesToDataset(1: ExportTracesToDatasetRequest Req)(api.post = '/api/observability/v1/traces/export_to_dataset') PreviewExportTracesToDatasetResponse PreviewExportTracesToDataset(1: PreviewExportTracesToDatasetRequest Req)(api.post = '/api/observability/v1/traces/preview_export_to_dataset') ChangeEvaluatorScoreResponse ChangeEvaluatorScore(1: ChangeEvaluatorScoreRequest req) (api.post = '/api/observability/v1/annotations/change_eEvaluator_sScore') - ListAnnotationEvaluatorsResponse ListAnnotationEvaluators(1: ListAnnotationEvaluatorsRequest req) (api.post = '/api/observability/v1/annotations/lis_annotation_evaluators') + ListAnnotationEvaluatorsResponse ListAnnotationEvaluators(1: ListAnnotationEvaluatorsRequest req) (api.get = '/api/observability/v1/annotations/lis_annotation_evaluators') ExtractSpanInfoResponse ExtractSpanInfo(1: ExtractSpanInfoRequest req) (api.post = '/api/observability/v1/traces/extract_span_info') } From e12d4b20e6da0147805ba3d67d4bd314847e5419 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 1 Sep 2025 20:43:40 +0800 Subject: [PATCH 033/462] feat:fix idl --- backend/api/router/coze/loop/apis/coze.loop.apis.go | 2 +- .../loop/observability/coze.loop.observability.trace.thrift | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index b43c32e5d..9b92c6543 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -267,7 +267,7 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _annotations := _v14.Group("/annotations", _annotationsMw(handler)...) _annotations.DELETE("/:annotation_id", append(_deletemanualannotationMw(handler), apis.DeleteManualAnnotation)...) _annotations.PUT("/:annotation_id", append(_updatemanualannotationMw(handler), apis.UpdateManualAnnotation)...) - _annotations.POST("/change_eEvaluator_sScore", append(_changeevaluatorscoreMw(handler), apis.ChangeEvaluatorScore)...) + _annotations.POST("/change_eval_score", append(_changeevaluatorscoreMw(handler), apis.ChangeEvaluatorScore)...) _annotations.GET("/lis_annotation_evaluators", append(_listannotationevaluatorsMw(handler), apis.ListAnnotationEvaluators)...) _annotations.POST("/list", append(_listannotationsMw(handler), apis.ListAnnotations)...) _v14.POST("/tasks", append(_tasksMw(handler), apis.CreateTask)...) diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index c050b66d9..34e9e31e4 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -360,7 +360,7 @@ service TraceService { ListAnnotationsResponse ListAnnotations(1: ListAnnotationsRequest req) (api.post = '/api/observability/v1/annotations/list') ExportTracesToDatasetResponse ExportTracesToDataset(1: ExportTracesToDatasetRequest Req)(api.post = '/api/observability/v1/traces/export_to_dataset') PreviewExportTracesToDatasetResponse PreviewExportTracesToDataset(1: PreviewExportTracesToDatasetRequest Req)(api.post = '/api/observability/v1/traces/preview_export_to_dataset') - ChangeEvaluatorScoreResponse ChangeEvaluatorScore(1: ChangeEvaluatorScoreRequest req) (api.post = '/api/observability/v1/annotations/change_eEvaluator_sScore') - ListAnnotationEvaluatorsResponse ListAnnotationEvaluators(1: ListAnnotationEvaluatorsRequest req) (api.get = '/api/observability/v1/annotations/lis_annotation_evaluators') - ExtractSpanInfoResponse ExtractSpanInfo(1: ExtractSpanInfoRequest req) (api.post = '/api/observability/v1/traces/extract_span_info') + ChangeEvaluatorScoreResponse ChangeEvaluatorScore(1: ChangeEvaluatorScoreRequest req) (api.post = '/api/observability/v1/traces/change_eval_score') + ListAnnotationEvaluatorsResponse ListAnnotationEvaluators(1: ListAnnotationEvaluatorsRequest req) (api.get = '/api/observability/v1/annotation/list_evaluators') + ExtractSpanInfoResponse ExtractSpanInfo(1: ExtractSpanInfoRequest req) (api.post = '/api/observability/v1/trace/extract_span_info') } From 484643c9de1c03af1adea7304c7e08f5e124b5b1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 1 Sep 2025 20:43:53 +0800 Subject: [PATCH 034/462] feat:fix idl --- backend/api/router/coze/loop/apis/coze.loop.apis.go | 12 +++++++++--- backend/api/router/coze/loop/apis/middleware.go | 10 ++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index 9b92c6543..10129fc8f 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -267,8 +267,6 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _annotations := _v14.Group("/annotations", _annotationsMw(handler)...) _annotations.DELETE("/:annotation_id", append(_deletemanualannotationMw(handler), apis.DeleteManualAnnotation)...) _annotations.PUT("/:annotation_id", append(_updatemanualannotationMw(handler), apis.UpdateManualAnnotation)...) - _annotations.POST("/change_eval_score", append(_changeevaluatorscoreMw(handler), apis.ChangeEvaluatorScore)...) - _annotations.GET("/lis_annotation_evaluators", append(_listannotationevaluatorsMw(handler), apis.ListAnnotationEvaluators)...) _annotations.POST("/list", append(_listannotationsMw(handler), apis.ListAnnotations)...) _v14.POST("/tasks", append(_tasksMw(handler), apis.CreateTask)...) _tasks := _v14.Group("/tasks", _tasksMw(handler)...) @@ -280,6 +278,10 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _views.POST("/list", append(_listviewsMw(handler), apis.ListViews)...) _views.DELETE("/:view_id", append(_deleteviewMw(handler), apis.DeleteView)...) _views.PUT("/:view_id", append(_updateviewMw(handler), apis.UpdateView)...) + { + _annotation := _v14.Group("/annotation", _annotationMw(handler)...) + _annotation.GET("/list_evaluators", append(_listannotationevaluatorsMw(handler), apis.ListAnnotationEvaluators)...) + } { _spans := _v14.Group("/spans", _spansMw(handler)...) _spans.POST("/list", append(_listspansMw(handler), apis.ListSpans)...) @@ -288,11 +290,15 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _tasks0 := _v14.Group("/tasks", _tasks0Mw(handler)...) _tasks0.GET("/check_name", append(_checktasknameMw(handler), apis.CheckTaskName)...) } + { + _trace := _v14.Group("/trace", _traceMw(handler)...) + _trace.POST("/extract_span_info", append(_extractspaninfoMw(handler), apis.ExtractSpanInfo)...) + } { _traces := _v14.Group("/traces", _tracesMw(handler)...) _traces.POST("/batch_get_advance_info", append(_batchgettracesadvanceinfoMw(handler), apis.BatchGetTracesAdvanceInfo)...) + _traces.POST("/change_eval_score", append(_changeevaluatorscoreMw(handler), apis.ChangeEvaluatorScore)...) _traces.POST("/export_to_dataset", append(_exporttracestodatasetMw(handler), apis.ExportTracesToDataset)...) - _traces.POST("/extract_span_info", append(_extractspaninfoMw(handler), apis.ExtractSpanInfo)...) _traces.GET("/meta_info", append(_gettracesmetainfoMw(handler), apis.GetTracesMetaInfo)...) _traces.POST("/preview_export_to_dataset", append(_previewexporttracestodatasetMw(handler), apis.PreviewExportTracesToDataset)...) _traces.GET("/:trace_id", append(_gettraceMw(handler), apis.GetTrace)...) diff --git a/backend/api/router/coze/loop/apis/middleware.go b/backend/api/router/coze/loop/apis/middleware.go index 30d71943c..1a5c1a5e7 100644 --- a/backend/api/router/coze/loop/apis/middleware.go +++ b/backend/api/router/coze/loop/apis/middleware.go @@ -1275,3 +1275,13 @@ func _updatetaskMw(handler *apis.APIHandler) []app.HandlerFunc { // your code... return nil } + +func _annotationMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _traceMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} From 5e7fea5610f47f250724aef08ac1e806bbabf8f1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 14:51:56 +0800 Subject: [PATCH 035/462] feat:fix idl --- .../loop/observability/trace/coze.loop.observability.trace.go | 2 +- .../loop/observability/coze.loop.observability.trace.thrift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index 053b5be11..81402fe09 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -14567,7 +14567,7 @@ func (p *PreviewExportTracesToDatasetResponse) Field257DeepEqual(src *string) bo type ChangeEvaluatorScoreRequest struct { WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - EvaluatorRecordID int64 `thrift:"evaluator_record_id,2,required" frugal:"2,required,i64" json:"evaluator_record_id,required" query:"evaluator_record_id,required"` + EvaluatorRecordID int64 `thrift:"evaluator_record_id,2,required" frugal:"2,required,i64" json:"evaluator_record_id,string,required" query:"evaluator_record_id,required"` SpanID string `thrift:"span_id,3,required" frugal:"3,required,string" json:"span_id,required" query:"span_id,required"` StartTime int64 `thrift:"start_time,4,required" frugal:"4,required,i64" json:"start_time" query:"start_time,required" ` Correction *annotation.Correction `thrift:"correction,5,required" frugal:"5,required,annotation.Correction" json:"correction,required" query:"correction,required"` diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index 34e9e31e4..b090b49b3 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -292,7 +292,7 @@ struct PreviewExportTracesToDatasetResponse { struct ChangeEvaluatorScoreRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") - 2: required i64 evaluator_record_id (api.query="evaluator_record_id", vt.gt="0") + 2: required i64 evaluator_record_id (api.js_conv='true', api.query="evaluator_record_id", vt.gt="0") 3: required string span_id (api.query="span_id", vt.min_size="1") 4: required i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.query="start_time", vt.gt="0") 5: required annotation.Correction correction (api.query="correction") From 8abb930659385da1d609c58982927019ce626feb Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 15:07:02 +0800 Subject: [PATCH 036/462] feat:fix idl --- .../trace/coze.loop.observability.trace.go | 18 +++++++++--------- .../coze.loop.observability.trace.thrift | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index 81402fe09..dcd1cb785 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -14567,10 +14567,10 @@ func (p *PreviewExportTracesToDatasetResponse) Field257DeepEqual(src *string) bo type ChangeEvaluatorScoreRequest struct { WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - EvaluatorRecordID int64 `thrift:"evaluator_record_id,2,required" frugal:"2,required,i64" json:"evaluator_record_id,string,required" query:"evaluator_record_id,required"` - SpanID string `thrift:"span_id,3,required" frugal:"3,required,string" json:"span_id,required" query:"span_id,required"` - StartTime int64 `thrift:"start_time,4,required" frugal:"4,required,i64" json:"start_time" query:"start_time,required" ` - Correction *annotation.Correction `thrift:"correction,5,required" frugal:"5,required,annotation.Correction" json:"correction,required" query:"correction,required"` + EvaluatorRecordID int64 `thrift:"evaluator_record_id,2,required" frugal:"2,required,i64" form:"evaluator_record_id,required" json:"evaluator_record_id,string,required"` + SpanID string `thrift:"span_id,3,required" frugal:"3,required,string" form:"span_id,required" json:"span_id,required"` + StartTime int64 `thrift:"start_time,4,required" frugal:"4,required,i64" json:"start_time" form:"start_time,required" ` + Correction *annotation.Correction `thrift:"correction,5,required" frugal:"5,required,annotation.Correction" form:"correction,required" json:"correction,required"` Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } @@ -15335,7 +15335,7 @@ func (p *ChangeEvaluatorScoreResponse) Field255DeepEqual(src *base.BaseResp) boo type ListAnnotationEvaluatorsRequest struct { WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - Name *string `thrift:"name,2,optional" frugal:"2,optional,string" json:"name,omitempty" query:"name"` + Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty"` Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` } @@ -15922,10 +15922,10 @@ func (p *ListAnnotationEvaluatorsResponse) Field255DeepEqual(src *base.BaseResp) type ExtractSpanInfoRequest struct { WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" json:"trace_id,required" query:"trace_id,required"` - SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" json:"span_ids,required" query:"span_ids,required"` - StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" query:"start_time" ` - EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" query:"end_time" ` + TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" form:"trace_id,required" json:"trace_id,required"` + SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" form:"span_ids,required" json:"span_ids,required"` + StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" form:"start_time" ` + EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" form:"end_time" ` PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` FieldMappings []*task.FieldMapping `thrift:"field_mappings,7,optional" frugal:"7,optional,list" form:"field_mappings" json:"field_mappings,omitempty" query:"field_mappings"` Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index b090b49b3..6f2631db0 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -292,10 +292,10 @@ struct PreviewExportTracesToDatasetResponse { struct ChangeEvaluatorScoreRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") - 2: required i64 evaluator_record_id (api.js_conv='true', api.query="evaluator_record_id", vt.gt="0") - 3: required string span_id (api.query="span_id", vt.min_size="1") - 4: required i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.query="start_time", vt.gt="0") - 5: required annotation.Correction correction (api.query="correction") + 2: required i64 evaluator_record_id (api.js_conv='true', api.body="evaluator_record_id", vt.gt="0") + 3: required string span_id (api.body="span_id", vt.min_size="1") + 4: required i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.body="start_time", vt.gt="0") + 5: required annotation.Correction correction (api.body="correction") 255: optional base.Base Base } @@ -310,7 +310,7 @@ struct ChangeEvaluatorScoreResponse { struct ListAnnotationEvaluatorsRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") - 2: optional string name (api.query = "name") + 2: optional string name (api.body = "name") 255: optional base.Base Base (api.none="true") } @@ -323,10 +323,10 @@ struct ListAnnotationEvaluatorsResponse { struct ExtractSpanInfoRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") - 2: required string trace_id (api.query = "trace_id" vt.min_size = "1") - 3: required list span_ids (api.query="span_ids", vt.min_size="1", vt.max_size="500") - 4: optional i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.query="start_time", vt.gt="0") - 5: optional i64 end_time (api.js_conv='true', go.tag='json:"end_time"', api.query="end_time", vt.gt="0") + 2: required string trace_id (api.body = "trace_id" vt.min_size = "1") + 3: required list span_ids (api.body="span_ids", vt.min_size="1", vt.max_size="500") + 4: optional i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.body="start_time", vt.gt="0") + 5: optional i64 end_time (api.js_conv='true', go.tag='json:"end_time"', api.body="end_time", vt.gt="0") 6: optional common.PlatformType platform_type (api.body="platform_type") 7: optional list field_mappings (vt.min_size="1", vt.max_size="100") From 4727f65cf72f046dc0ce766c3fe892af9e1f1e72 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 15:27:34 +0800 Subject: [PATCH 037/462] =?UTF-8?q?feat=EF=BC=9Afix=20ChangeEvaluatorScore?= =?UTF-8?q?=20idl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trace/coze.loop.observability.trace.go | 77 +++++++++++++++++++ .../trace/k-coze.loop.observability.trace.go | 53 +++++++++++++ .../observability/application/trace.go | 1 + .../coze.loop.observability.trace.thrift | 1 + 4 files changed, 132 insertions(+) diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index dcd1cb785..4dc48c5e9 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -14571,6 +14571,7 @@ type ChangeEvaluatorScoreRequest struct { SpanID string `thrift:"span_id,3,required" frugal:"3,required,string" form:"span_id,required" json:"span_id,required"` StartTime int64 `thrift:"start_time,4,required" frugal:"4,required,i64" json:"start_time" form:"start_time,required" ` Correction *annotation.Correction `thrift:"correction,5,required" frugal:"5,required,annotation.Correction" form:"correction,required" json:"correction,required"` + PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } @@ -14621,6 +14622,18 @@ func (p *ChangeEvaluatorScoreRequest) GetCorrection() (v *annotation.Correction) return p.Correction } +var ChangeEvaluatorScoreRequest_PlatformType_DEFAULT common.PlatformType + +func (p *ChangeEvaluatorScoreRequest) GetPlatformType() (v common.PlatformType) { + if p == nil { + return + } + if !p.IsSetPlatformType() { + return ChangeEvaluatorScoreRequest_PlatformType_DEFAULT + } + return *p.PlatformType +} + var ChangeEvaluatorScoreRequest_Base_DEFAULT *base.Base func (p *ChangeEvaluatorScoreRequest) GetBase() (v *base.Base) { @@ -14647,6 +14660,9 @@ func (p *ChangeEvaluatorScoreRequest) SetStartTime(val int64) { func (p *ChangeEvaluatorScoreRequest) SetCorrection(val *annotation.Correction) { p.Correction = val } +func (p *ChangeEvaluatorScoreRequest) SetPlatformType(val *common.PlatformType) { + p.PlatformType = val +} func (p *ChangeEvaluatorScoreRequest) SetBase(val *base.Base) { p.Base = val } @@ -14657,6 +14673,7 @@ var fieldIDToName_ChangeEvaluatorScoreRequest = map[int16]string{ 3: "span_id", 4: "start_time", 5: "correction", + 6: "platform_type", 255: "Base", } @@ -14664,6 +14681,10 @@ func (p *ChangeEvaluatorScoreRequest) IsSetCorrection() bool { return p.Correction != nil } +func (p *ChangeEvaluatorScoreRequest) IsSetPlatformType() bool { + return p.PlatformType != nil +} + func (p *ChangeEvaluatorScoreRequest) IsSetBase() bool { return p.Base != nil } @@ -14736,6 +14757,14 @@ func (p *ChangeEvaluatorScoreRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 6: + if fieldTypeId == thrift.STRING { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -14851,6 +14880,17 @@ func (p *ChangeEvaluatorScoreRequest) ReadField5(iprot thrift.TProtocol) error { p.Correction = _field return nil } +func (p *ChangeEvaluatorScoreRequest) ReadField6(iprot thrift.TProtocol) error { + + var _field *common.PlatformType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.PlatformType = _field + return nil +} func (p *ChangeEvaluatorScoreRequest) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBase() if err := _field.Read(iprot); err != nil { @@ -14886,6 +14926,10 @@ func (p *ChangeEvaluatorScoreRequest) Write(oprot thrift.TProtocol) (err error) fieldId = 5 goto WriteFieldError } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -14988,6 +15032,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) } +func (p *ChangeEvaluatorScoreRequest) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetPlatformType() { + if err = oprot.WriteFieldBegin("platform_type", thrift.STRING, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.PlatformType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} func (p *ChangeEvaluatorScoreRequest) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBase() { if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { @@ -15036,6 +15098,9 @@ func (p *ChangeEvaluatorScoreRequest) DeepEqual(ano *ChangeEvaluatorScoreRequest if !p.Field5DeepEqual(ano.Correction) { return false } + if !p.Field6DeepEqual(ano.PlatformType) { + return false + } if !p.Field255DeepEqual(ano.Base) { return false } @@ -15077,6 +15142,18 @@ func (p *ChangeEvaluatorScoreRequest) Field5DeepEqual(src *annotation.Correction } return true } +func (p *ChangeEvaluatorScoreRequest) Field6DeepEqual(src *common.PlatformType) bool { + + if p.PlatformType == src { + return true + } else if p.PlatformType == nil || src == nil { + return false + } + if strings.Compare(*p.PlatformType, *src) != 0 { + return false + } + return true +} func (p *ChangeEvaluatorScoreRequest) Field255DeepEqual(src *base.Base) bool { if !p.Base.DeepEqual(src) { diff --git a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go index 5378141cc..79e86a814 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go @@ -10922,6 +10922,20 @@ func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 6: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 255: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField255(buf[offset:]) @@ -11048,6 +11062,20 @@ func (p *ChangeEvaluatorScoreRequest) FastReadField5(buf []byte) (int, error) { return offset, nil } +func (p *ChangeEvaluatorScoreRequest) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field *common.PlatformType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.PlatformType = _field + return offset, nil +} + func (p *ChangeEvaluatorScoreRequest) FastReadField255(buf []byte) (int, error) { offset := 0 _field := base.NewBase() @@ -11072,6 +11100,7 @@ func (p *ChangeEvaluatorScoreRequest) FastWriteNocopy(buf []byte, w thrift.Nocop offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) @@ -11086,6 +11115,7 @@ func (p *ChangeEvaluatorScoreRequest) BLength() int { l += p.field3Length() l += p.field4Length() l += p.field5Length() + l += p.field6Length() l += p.field255Length() } l += thrift.Binary.FieldStopLength() @@ -11127,6 +11157,15 @@ func (p *ChangeEvaluatorScoreRequest) fastWriteField5(buf []byte, w thrift.Nocop return offset } +func (p *ChangeEvaluatorScoreRequest) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetPlatformType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 6) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.PlatformType) + } + return offset +} + func (p *ChangeEvaluatorScoreRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetBase() { @@ -11171,6 +11210,15 @@ func (p *ChangeEvaluatorScoreRequest) field5Length() int { return l } +func (p *ChangeEvaluatorScoreRequest) field6Length() int { + l := 0 + if p.IsSetPlatformType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.PlatformType) + } + return l +} + func (p *ChangeEvaluatorScoreRequest) field255Length() int { l := 0 if p.IsSetBase() { @@ -11205,6 +11253,11 @@ func (p *ChangeEvaluatorScoreRequest) DeepCopy(s interface{}) error { } p.Correction = _correction + if src.PlatformType != nil { + tmp := *src.PlatformType + p.PlatformType = &tmp + } + var _base *base.Base if src.Base != nil { _base = &base.Base{} diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index 478db8560..60f68ff84 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -844,6 +844,7 @@ func (t *TraceApplication) ChangeEvaluatorScore(ctx context.Context, req *trace. SpanID: req.SpanID, StartTime: req.StartTime, Correction: req.Correction, + PlatformType: loop_span.PlatformType(req.GetPlatformType()), }) if err != nil { return nil, err diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index 6f2631db0..175a9d28d 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -296,6 +296,7 @@ struct ChangeEvaluatorScoreRequest { 3: required string span_id (api.body="span_id", vt.min_size="1") 4: required i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.body="start_time", vt.gt="0") 5: required annotation.Correction correction (api.body="correction") + 6: optional common.PlatformType platform_type (api.body="platform_type") 255: optional base.Base Base } From a9256d70e6600c2208746ceacae1a6cc31ee8631 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 15:39:39 +0800 Subject: [PATCH 038/462] feat:fix getspan without traceid --- .../domain/trace/service/trace_service.go | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index 5546d922f..1b858f793 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -912,32 +912,34 @@ func (r *TraceServiceImpl) Send(ctx context.Context, event *entity.AnnotationEve } func (r *TraceServiceImpl) getSpan(ctx context.Context, tenants []string, spanIds []string, traceId, workspaceId string, startAt, endAt int64) ([]*loop_span.Span, error) { - if len(spanIds) == 0 || traceId == "" || workspaceId == "" { + if len(spanIds) == 0 || workspaceId == "" { return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) } + var filterFields []*loop_span.FilterField + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldSpanId, + FieldType: loop_span.FieldTypeString, + Values: spanIds, + QueryType: ptr.Of(loop_span.QueryTypeEnumIn), + }) + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldSpaceId, + FieldType: loop_span.FieldTypeString, + Values: []string{workspaceId}, + QueryType: ptr.Of(loop_span.QueryTypeEnumEq), + }) + if traceId != "" { + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldTraceId, + FieldType: loop_span.FieldTypeString, + Values: []string{traceId}, + QueryType: ptr.Of(loop_span.QueryTypeEnumEq), + }) + } res, err := r.traceRepo.ListSpans(ctx, &repo.ListSpansParam{ Tenants: tenants, Filters: &loop_span.FilterFields{ - FilterFields: []*loop_span.FilterField{ - { - FieldName: loop_span.SpanFieldSpanId, - FieldType: loop_span.FieldTypeString, - Values: spanIds, - QueryType: ptr.Of(loop_span.QueryTypeEnumEq), - }, - { - FieldName: loop_span.SpanFieldSpaceId, - FieldType: loop_span.FieldTypeString, - Values: []string{workspaceId}, - QueryType: ptr.Of(loop_span.QueryTypeEnumEq), - }, - { - FieldName: loop_span.SpanFieldTraceId, - FieldType: loop_span.FieldTypeString, - Values: []string{traceId}, - QueryType: ptr.Of(loop_span.QueryTypeEnumEq), - }, - }, + FilterFields: filterFields, }, StartAt: startAt, EndAt: endAt, From 4e96ab76c72218655a149a9e5196277de97bcb69 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 16:05:04 +0800 Subject: [PATCH 039/462] feat:fix idl --- .../loop/observability/trace/coze.loop.observability.trace.go | 2 +- .../loop/observability/coze.loop.observability.trace.thrift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index 4dc48c5e9..4c587674a 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -15411,7 +15411,7 @@ func (p *ChangeEvaluatorScoreResponse) Field255DeepEqual(src *base.BaseResp) boo } type ListAnnotationEvaluatorsRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" query:"workspace_id,required" ` Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty"` Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` } diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index 175a9d28d..91fefa84f 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -310,7 +310,7 @@ struct ChangeEvaluatorScoreResponse { struct ListAnnotationEvaluatorsRequest { - 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.query="workspace_id", vt.gt="0") 2: optional string name (api.body = "name") 255: optional base.Base Base (api.none="true") From b5d90542f1e18514f459bd7f52e582280cada958 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 16:28:25 +0800 Subject: [PATCH 040/462] feat add handler --- backend/api/handler/coze/loop/apis/handler.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/api/handler/coze/loop/apis/handler.go b/backend/api/handler/coze/loop/apis/handler.go index 8e493d9bd..d09835653 100644 --- a/backend/api/handler/coze/loop/apis/handler.go +++ b/backend/api/handler/coze/loop/apis/handler.go @@ -13,6 +13,8 @@ import ( "github.com/cloudwego/kitex/client/callopt" "github.com/cloudwego/kitex/pkg/endpoint" "github.com/cloudwego/kitex/pkg/kerrors" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" + "github.com/coze-dev/coze-loop/backend/loop_gen/coze/loop/observability/lotask" "github.com/coze-dev/coze-loop/backend/infra/i18n" cachemw "github.com/coze-dev/coze-loop/backend/infra/middleware/ctxcache" @@ -194,6 +196,7 @@ type ObservabilityHandler struct { obapp.ITraceApplication obapp.ITraceIngestionApplication obapp.IObservabilityOpenAPIApplication + obapp.ITaskApplication } func NewObservabilityHandler( @@ -208,6 +211,7 @@ func NewObservabilityHandler( } bindLocalCallClient(trace.TraceService(h), &observabilityClient, lotrace.NewLocalTraceService) bindLocalCallClient(traceopenapi.OpenAPIService(h), &observabilityOpenAPIClient, looptraceopenapi.NewLocalOpenAPIService) + bindLocalCallClient(task.TaskService(h), &observabilityTaskClient, lotask.NewLocalTaskService) return h } From 937d2b035d766fb480d670b609e245cf81c34da0 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 16:59:19 +0800 Subject: [PATCH 041/462] feat:add task wire --- backend/api/handler/coze/loop/apis/handler.go | 2 ++ backend/api/handler/coze/loop/apis/wire.go | 1 + .../api/handler/coze/loop/apis/wire_gen.go | 9 ++++++--- .../modules/observability/application/wire.go | 14 ++++++------- .../observability/application/wire_gen.go | 20 ++++++++++++++++++- .../domain/task/service/task_service.go | 19 ++++++------------ 6 files changed, 41 insertions(+), 24 deletions(-) diff --git a/backend/api/handler/coze/loop/apis/handler.go b/backend/api/handler/coze/loop/apis/handler.go index d09835653..6ef4f617b 100644 --- a/backend/api/handler/coze/loop/apis/handler.go +++ b/backend/api/handler/coze/loop/apis/handler.go @@ -203,11 +203,13 @@ func NewObservabilityHandler( traceApp obapp.ITraceApplication, ingestApp obapp.ITraceIngestionApplication, openAPIApp obapp.IObservabilityOpenAPIApplication, + taskApp obapp.ITaskApplication, ) *ObservabilityHandler { h := &ObservabilityHandler{ ITraceApplication: traceApp, ITraceIngestionApplication: ingestApp, IObservabilityOpenAPIApplication: openAPIApp, + ITaskApplication: taskApp, } bindLocalCallClient(trace.TraceService(h), &observabilityClient, lotrace.NewLocalTraceService) bindLocalCallClient(traceopenapi.OpenAPIService(h), &observabilityOpenAPIClient, looptraceopenapi.NewLocalOpenAPIService) diff --git a/backend/api/handler/coze/loop/apis/wire.go b/backend/api/handler/coze/loop/apis/wire.go index bca7afb64..5847aa8f6 100644 --- a/backend/api/handler/coze/loop/apis/wire.go +++ b/backend/api/handler/coze/loop/apis/wire.go @@ -92,6 +92,7 @@ var ( obapp.InitTraceApplication, obapp.InitTraceIngestionApplication, obapp.InitOpenAPIApplication, + obapp.InitTaskApplication, ) ) diff --git a/backend/api/handler/coze/loop/apis/wire_gen.go b/backend/api/handler/coze/loop/apis/wire_gen.go index 28bfd2879..a2526dc9f 100644 --- a/backend/api/handler/coze/loop/apis/wire_gen.go +++ b/backend/api/handler/coze/loop/apis/wire_gen.go @@ -8,7 +8,6 @@ package apis import ( "context" - "github.com/cloudwego/kitex/pkg/endpoint" "github.com/coze-dev/coze-loop/backend/infra/ck" "github.com/coze-dev/coze-loop/backend/infra/db" @@ -162,7 +161,11 @@ func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Prov if err != nil { return nil, err } - observabilityHandler := NewObservabilityHandler(iTraceApplication, iTraceIngestionApplication, iObservabilityOpenAPIApplication) + iTaskApplication, err := application6.InitTaskApplication(db2, idgen2, configFactory, userClient, authCli, evalClient) + if err != nil { + return nil, err + } + observabilityHandler := NewObservabilityHandler(iTraceApplication, iTraceIngestionApplication, iObservabilityOpenAPIApplication, iTaskApplication) return observabilityHandler, nil } @@ -185,6 +188,6 @@ var ( NewDataHandler, application5.InitDatasetApplication, application5.InitTagApplication, foundation.NewAuthRPCProvider, conf2.NewConfigerFactory, ) observabilitySet = wire.NewSet( - NewObservabilityHandler, application6.InitTraceApplication, application6.InitTraceIngestionApplication, application6.InitOpenAPIApplication, + NewObservabilityHandler, application6.InitTraceApplication, application6.InitTraceIngestionApplication, application6.InitOpenAPIApplication, application6.InitTaskApplication, ) ) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index b49b3a4ec..afbcb7b3a 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -98,12 +98,13 @@ var ( traceDomainSet, ) taskSet = wire.NewSet( - taskSvc.NewTaskServiceImpl, NewTaskApplication, - auth.NewAuthProvider, + taskSvc.NewTaskServiceImpl, obrepo.NewTaskRepoImpl, mysqldao.NewTaskDaoImpl, - traceDomainSet, + auth.NewAuthProvider, + user.NewUserRPCProvider, + evaluator.NewEvaluatorRPCProvider, ) ) @@ -222,11 +223,10 @@ func InitTraceIngestionApplication( func InitTaskApplication( db db.Provider, idgen idgen.IIDGenerator, - authClient authservice.Client, + configFactory conf.IConfigLoaderFactory, userClient userservice.Client, - evalService evaluatorservice.Client, - evalSetService evaluationsetservice.Client, - datasetService datasetservice.Client) (ITaskApplication, error) { + authClient authservice.Client, + evalService evaluatorservice.Client) (ITaskApplication, error) { wire.Build(taskSet) return nil, nil } diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 2398908cd..7decd15f6 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -23,6 +23,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/user/userservice" config2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + service2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/exporter" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/processor" @@ -177,6 +178,23 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb return iTraceIngestionApplication, nil } +func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client) (ITaskApplication, error) { + iTaskDao := mysql.NewTaskDaoImpl(db2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2) + iUserProvider := user.NewUserRPCProvider(userClient) + iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iUserProvider, idgen2) + if err != nil { + return nil, err + } + iAuthProvider := auth.NewAuthProvider(authClient) + iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) + iTaskApplication, err := NewTaskApplication(iTaskService, iAuthProvider, iEvaluatorRPCAdapter, iUserProvider) + if err != nil { + return nil, err + } + return iTaskApplication, nil +} + // wire.go: var ( @@ -194,7 +212,7 @@ var ( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) taskSet = wire.NewSet( - NewTaskApplication, auth.NewAuthProvider, traceDomainSet, + NewTaskApplication, service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, ) ) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 0335b542a..e31505725 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -15,7 +15,6 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" @@ -75,26 +74,20 @@ type ITaskService interface { func NewTaskServiceImpl( tRepo repo.ITaskRepo, - tenantProvider tenant.ITenantProvider, - evalServiceAdaptor rpc.IEvaluatorRPCAdapter, userProvider rpc.IUserProvider, idGenerator idgen.IIDGenerator, ) (ITaskService, error) { return &TaskServiceImpl{ - TaskRepo: tRepo, - tenantProvider: tenantProvider, - evalServiceAdaptor: evalServiceAdaptor, - userProvider: userProvider, - idGenerator: idGenerator, + TaskRepo: tRepo, + userProvider: userProvider, + idGenerator: idGenerator, }, nil } type TaskServiceImpl struct { - TaskRepo repo.ITaskRepo - tenantProvider tenant.ITenantProvider - evalServiceAdaptor rpc.IEvaluatorRPCAdapter - userProvider rpc.IUserProvider - idGenerator idgen.IIDGenerator + TaskRepo repo.ITaskRepo + userProvider rpc.IUserProvider + idGenerator idgen.IIDGenerator } func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) { From d65f8c07421baf76b7d07c07fede11badea1c0fd Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 17:50:53 +0800 Subject: [PATCH 042/462] feat:fix wire --- backend/modules/observability/application/wire.go | 1 - backend/modules/observability/application/wire_gen.go | 2 +- .../observability/domain/trace/service/trace_service.go | 5 ++--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index afbcb7b3a..99412c2b9 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -223,7 +223,6 @@ func InitTraceIngestionApplication( func InitTaskApplication( db db.Provider, idgen idgen.IIDGenerator, - configFactory conf.IConfigLoaderFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client) (ITaskApplication, error) { diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 7decd15f6..aff68afde 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -178,7 +178,7 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb return iTraceIngestionApplication, nil } -func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client) (ITaskApplication, error) { +func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client) (ITaskApplication, error) { iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2) iUserProvider := user.NewUserRPCProvider(userClient) diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index 1b858f793..60a8819c8 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -205,7 +205,6 @@ type ChangeEvaluatorScoreRequest struct { WorkspaceID int64 EvaluatorRecordID int64 SpanID string - TraceID string StartTime int64 PlatformType loop_span.PlatformType Correction *annotation.Correction @@ -1041,7 +1040,7 @@ func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *Change spans, err := r.getSpan(ctx, tenants, []string{req.SpanID}, - req.TraceID, + "", strconv.FormatInt(req.WorkspaceID, 10), req.StartTime-time.Second.Milliseconds(), req.StartTime+time.Second.Milliseconds(), @@ -1049,7 +1048,7 @@ func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *Change if err != nil { return resp, err } else if len(spans) == 0 { - logs.CtxWarn(ctx, "no span found for span_id %s trace_id %s", req.SpanID, req.TraceID) + logs.CtxWarn(ctx, "no span found for span_id %s", req.SpanID) return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) } span := spans[0] From b00e567eedfe5baac78717e81a329816c3574ef8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 17:58:03 +0800 Subject: [PATCH 043/462] fix :CreateTask resp --- .../modules/observability/domain/task/service/task_service.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index e31505725..f10ebd885 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -100,11 +100,11 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r return resp, err } taskPO := tconv.CreateTaskDTO2PO(ctx, genID, req.Task, userID) - id, err := t.TaskRepo.CreateTask(ctx, taskPO) + _, err = t.TaskRepo.CreateTask(ctx, taskPO) if err != nil { return nil, err } - resp.TaskID = &id + resp.TaskID = &genID //todo[xun]:历史回溯数据发mq return resp, nil } From 52e4f326d2b9e21cc3e13899877f02a461bba9f8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 18:10:38 +0800 Subject: [PATCH 044/462] feat:fix task --- .../modules/observability/application/task.go | 6 +++--- .../domain/task/service/task_service.go | 20 +++++++++---------- .../observability/infra/repo/mysql/task.go | 2 +- .../coze.loop.observability.task.thrift | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 8d8a52721..842a9ad31 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -139,10 +139,10 @@ func (t *TaskApplication) UpdateTask(ctx context.Context, req *task.UpdateTaskRe err := t.taskSvc.UpdateTask(ctx, &service.UpdateTaskReq{ TaskID: req.GetTaskID(), WorkspaceID: req.GetWorkspaceID(), - TaskStatus: req.GetTaskStatus(), - Description: req.GetDescription(), + TaskStatus: req.TaskStatus, + Description: req.Description, EffectiveTime: req.GetEffectiveTime(), - SampleRate: req.GetSampleRate(), + SampleRate: req.SampleRate, }) if err != nil { return resp, err diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index f10ebd885..880965ab8 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -32,10 +32,10 @@ type CreateTaskResp struct { type UpdateTaskReq struct { TaskID int64 WorkspaceID int64 - TaskStatus task.TaskStatus - Description string + TaskStatus *task.TaskStatus + Description *string EffectiveTime *task.EffectiveTime - SampleRate float64 + SampleRate *float64 } type ListTasksReq struct { WorkspaceID int64 @@ -121,8 +121,8 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e if userID == "" { return errorx.NewByCode(obErrorx.UserParseFailedCode) } - if req.Description != "" { - taskPO.Description = &req.Description + if req.Description != nil { + taskPO.Description = req.Description } if req.EffectiveTime != nil { validEffectiveTime, err := tconv.CheckEffectiveTime(ctx, req.EffectiveTime, taskPO.TaskStatus, taskPO.EffectiveTime) @@ -131,11 +131,11 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e } taskPO.EffectiveTime = ptr.Of(tconv.ToJSONString(ctx, validEffectiveTime)) } - if req.SampleRate != 0 { + if req.SampleRate != nil { taskPO.Sampler = ptr.Of(tconv.ToJSONString(ctx, req.SampleRate)) } - if req.TaskStatus != "" { - validTaskStatus, err := tconv.CheckTaskStatus(ctx, req.TaskStatus, taskPO.TaskStatus) + if req.TaskStatus != nil { + validTaskStatus, err := tconv.CheckTaskStatus(ctx, *req.TaskStatus, taskPO.TaskStatus) if err != nil { return err } @@ -143,7 +143,7 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e if validTaskStatus == task.TaskStatusDisabled { //todo[xun]:禁用操作处理 } - taskPO.TaskStatus = req.TaskStatus + taskPO.TaskStatus = *req.TaskStatus } } taskPO.UpdatedBy = userID @@ -159,7 +159,7 @@ func (t *TaskServiceImpl) ListTasks(ctx context.Context, req *ListTasksReq) (res TaskFilters: req.TaskFilters, ReqLimit: req.Limit, ReqOffset: req.Offset, - OrderBy: *req.OrderBy, + OrderBy: req.OrderBy, }) if len(taskPOs) == 0 { logs.CtxInfo(ctx, "GetTasks tasks is nil") diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index c40f82358..35073e9fb 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -34,7 +34,7 @@ type ListTaskParam struct { TaskFilters *filter.TaskFilterFields ReqLimit int32 ReqOffset int32 - OrderBy common.OrderBy + OrderBy *common.OrderBy } //go:generate mockgen -destination=mocks/task.go -package=mocks . ITaskDao diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift index 876ca052e..4f6758d10 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift @@ -51,7 +51,7 @@ struct ListTasksResponse { struct GetTaskRequest { 1: required i64 task_id (api.path = "task_id" api.js_conv="true"), - 2: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") + 2: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.query="workspace_id", vt.gt="0") 255: optional base.Base base, } From 67c4381e4db552eded40d983ce478144d9aba78e Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 18:11:55 +0800 Subject: [PATCH 045/462] feat:fix idl --- backend/api/handler/coze/loop/apis/wire_gen.go | 1 + .../loop/observability/task/coze.loop.observability.task.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/api/handler/coze/loop/apis/wire_gen.go b/backend/api/handler/coze/loop/apis/wire_gen.go index a2526dc9f..78d41e064 100644 --- a/backend/api/handler/coze/loop/apis/wire_gen.go +++ b/backend/api/handler/coze/loop/apis/wire_gen.go @@ -8,6 +8,7 @@ package apis import ( "context" + "github.com/cloudwego/kitex/pkg/endpoint" "github.com/coze-dev/coze-loop/backend/infra/ck" "github.com/coze-dev/coze-loop/backend/infra/db" diff --git a/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go b/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go index 0a81b7a6e..6d21a1664 100644 --- a/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go +++ b/backend/kitex_gen/coze/loop/observability/task/coze.loop.observability.task.go @@ -2179,7 +2179,7 @@ func (p *ListTasksResponse) Field255DeepEqual(src *base.BaseResp) bool { type GetTaskRequest struct { TaskID int64 `thrift:"task_id,1,required" frugal:"1,required,i64" json:"task_id,string,required" path:"task_id,required"` - WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" json:"workspace_id" form:"workspace_id,required" ` + WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" json:"workspace_id" query:"workspace_id,required" ` Base *base.Base `thrift:"base,255,optional" frugal:"255,optional,base.Base" form:"base" json:"base,omitempty" query:"base"` } From 2d17174ef6851cd6091f24ab6fb4ccb61b30b98d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 19:25:01 +0800 Subject: [PATCH 046/462] feat:fix listtasks orderby --- backend/modules/observability/infra/repo/mysql/task.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index 35073e9fb..22002a7bb 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -125,7 +125,7 @@ func (v *TaskDaoImpl) ListTasks(ctx context.Context, param ListTaskParam) ([]*mo qd = qd.Where(qdf) } // order by - qd = qd.Order(v.order(q, param.OrderBy.String(), *param.OrderBy.IsAsc)) + qd = qd.Order(v.order(q, param.OrderBy.GetField(), param.OrderBy.GetIsAsc())) // 计算分页参数 limit, offset := calculatePagination(param.ReqLimit, param.ReqOffset) results, err := qd.Limit(limit).Offset(offset).Find() From 6b3a37a9d8af9c323302127b1306e2dbd6bc10de Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 19:35:53 +0800 Subject: [PATCH 047/462] feat:fix listtasks --- .../application/convertor/task/task.go | 6 +++--- .../domain/task/service/task_service.go | 13 +++++-------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 05f688792..611034966 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -25,16 +25,16 @@ import ( "github.com/coze-dev/coze-loop/backend/pkg/logs" ) -func TaskPOs2DOs(ctx context.Context, taskPOs []*entity.ObservabilityTask, userInfos map[string]*entity_common.UserInfo) ([]*task.Task, error) { +func TaskPOs2DOs(ctx context.Context, taskPOs []*entity.ObservabilityTask, userInfos map[string]*entity_common.UserInfo) []*task.Task { var taskList []*task.Task if len(taskPOs) == 0 { - return taskList, nil + return taskList } for _, v := range taskPOs { taskDO := TaskPO2DTO(ctx, v, userInfos) taskList = append(taskList, taskDO) } - return taskList, nil + return taskList } func TaskPO2DTO(ctx context.Context, v *entity.ObservabilityTask, userMap map[string]*entity_common.UserInfo) *task.Task { if v == nil { diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 880965ab8..467009de4 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -154,7 +154,7 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e return nil } func (t *TaskServiceImpl) ListTasks(ctx context.Context, req *ListTasksReq) (resp *ListTasksResp, err error) { - taskPOs, _, err := t.TaskRepo.ListTasks(ctx, mysql.ListTaskParam{ + taskPOs, total, err := t.TaskRepo.ListTasks(ctx, mysql.ListTaskParam{ WorkspaceIDs: []int64{req.WorkspaceID}, TaskFilters: req.TaskFilters, ReqLimit: req.Limit, @@ -178,13 +178,10 @@ func (t *TaskServiceImpl) ListTasks(ctx context.Context, req *ListTasksReq) (res if err != nil { logs.CtxError(ctx, "MGetUserInfo err:%v", err) } - tasks, err := tconv.TaskPOs2DOs(ctx, taskPOs, userInfoMap) - if err != nil { - logs.CtxError(ctx, "TaskPOs2DOs err:%v", err) - return resp, err - } - resp.Tasks = tasks - return resp, nil + return &ListTasksResp{ + Tasks: tconv.TaskPOs2DOs(ctx, taskPOs, userInfoMap), + Total: ptr.Of(total), + }, nil } func (t *TaskServiceImpl) GetTask(ctx context.Context, req *GetTaskReq) (resp *GetTaskResp, err error) { userID := session.UserIDInCtxOrEmpty(ctx) From 90a81571a4ccb4682982eef563b9befb5637ae72 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 19:42:14 +0800 Subject: [PATCH 048/462] feat:fix panic --- .../observability/domain/task/service/task_service.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 467009de4..3668de7d5 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -100,13 +100,12 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r return resp, err } taskPO := tconv.CreateTaskDTO2PO(ctx, genID, req.Task, userID) - _, err = t.TaskRepo.CreateTask(ctx, taskPO) + id, err := t.TaskRepo.CreateTask(ctx, taskPO) if err != nil { return nil, err } - resp.TaskID = &genID //todo[xun]:历史回溯数据发mq - return resp, nil + return &CreateTaskResp{TaskID: &id}, nil } func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (err error) { taskPO, err := t.TaskRepo.GetTask(ctx, req.TaskID, &req.WorkspaceID, nil) @@ -201,8 +200,7 @@ func (t *TaskServiceImpl) GetTask(ctx context.Context, req *GetTaskReq) (resp *G if err != nil { logs.CtxError(ctx, "MGetUserInfo err:%v", err) } - resp.Task = tconv.TaskPO2DTO(ctx, taskPO, userInfoMap) - return resp, nil + return &GetTaskResp{Task: tconv.TaskPO2DTO(ctx, taskPO, userInfoMap)}, nil } func (t *TaskServiceImpl) CheckTaskName(ctx context.Context, req *CheckTaskNameReq) (resp *CheckTaskNameResp, err error) { taskPOs, _, err := t.TaskRepo.ListTasks(ctx, mysql.ListTaskParam{ From e13405b01eeb391404a3274826bf21e2394ada85 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 19:54:34 +0800 Subject: [PATCH 049/462] feat:add CheckTaskPermission --- .../coze/loop/foundation/domain/auth/auth.go | 2 + .../modules/observability/application/task.go | 2 +- .../domain/component/rpc/auth.go | 7 +-- .../observability/infra/rpc/auth/auth.go | 46 +++++++++++++++++++ 4 files changed, 53 insertions(+), 4 deletions(-) diff --git a/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go b/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go index 801faa54f..c79d5c6e9 100644 --- a/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go +++ b/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go @@ -28,6 +28,8 @@ const ( AuthEntityTypeModel = "Model" AuthEntityTypeAnnotation = "Annotation" + + AuthEntityTypeTraceTask = "Task" ) // 主体类型 diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 842a9ad31..527591e75 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -130,7 +130,7 @@ func (t *TaskApplication) UpdateTask(ctx context.Context, req *task.UpdateTaskRe } else if req.GetWorkspaceID() <= 0 { return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } - if err := t.authSvc.CheckViewPermission(ctx, + if err := t.authSvc.CheckTaskPermission(ctx, rpc.AuthActionTraceTaskEdit, strconv.FormatInt(req.GetWorkspaceID(), 10), strconv.FormatInt(req.GetTaskID(), 10)); err != nil { diff --git a/backend/modules/observability/domain/component/rpc/auth.go b/backend/modules/observability/domain/component/rpc/auth.go index 089de1b7c..c897d1e59 100644 --- a/backend/modules/observability/domain/component/rpc/auth.go +++ b/backend/modules/observability/domain/component/rpc/auth.go @@ -14,9 +14,9 @@ const ( AuthActionAnnotationCreate = "createLoopTraceAnnotation" AuthActionTraceExport = "exportLoopTrace" AuthActionTracePreviewExport = "previewExportLoopTrace" - AuthActionTraceTaskCreate = "createLoopTask" - AuthActionTraceTaskList = "listLoopTask" - AuthActionTraceTaskEdit = "edit" + AuthActionTraceTaskCreate = "createLoopTask" + AuthActionTraceTaskList = "listLoopTask" + AuthActionTraceTaskEdit = "edit" ) //go:generate mockgen -destination=mocks/auth_provider.go -package=mocks . IAuthProvider @@ -25,4 +25,5 @@ type IAuthProvider interface { CheckViewPermission(ctx context.Context, action, workspaceId, viewId string) error CheckIngestPermission(ctx context.Context, workspaceId string) error CheckQueryPermission(ctx context.Context, workspaceId, platformType string) error + CheckTaskPermission(ctx context.Context, action, workspaceId, taskId string) error } diff --git a/backend/modules/observability/infra/rpc/auth/auth.go b/backend/modules/observability/infra/rpc/auth/auth.go index d8b8c58c2..d052afdb7 100644 --- a/backend/modules/observability/infra/rpc/auth/auth.go +++ b/backend/modules/observability/infra/rpc/auth/auth.go @@ -121,6 +121,52 @@ func (a *AuthProviderImpl) CheckQueryPermission(ctx context.Context, workspaceId return a.CheckWorkspacePermission(ctx, rpc.AuthActionTraceRead, workspaceId) } +func (a *AuthProviderImpl) CheckTaskPermission(ctx context.Context, action, workspaceId, taskId string) error { + authInfos := make([]*authentity.SubjectActionObjects, 0) + authInfos = append(authInfos, &authentity.SubjectActionObjects{ + Subject: &authentity.AuthPrincipal{ + AuthPrincipalType: ptr.Of(authentity.AuthPrincipalType_CozeIdentifier), + AuthCozeIdentifier: &authentity.AuthCozeIdentifier{ + IdentityTicket: nil, + }, + }, + Action: ptr.Of(action), + Objects: []*authentity.AuthEntity{ + { + ID: ptr.Of(taskId), + EntityType: ptr.Of(authentity.AuthEntityTypeTraceTask), + }, + }, + }) + + // 将workspaceId字符串转换为int64 + spaceID, err := strconv.ParseInt(workspaceId, 10, 64) + if err != nil { + return errorx.NewByCode(obErrorx.CommonInternalErrorCode) + } + + req := &auth.MCheckPermissionRequest{ + Auths: authInfos, + SpaceID: ptr.Of(spaceID), + } + resp, err := a.cli.MCheckPermission(ctx, req) + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommercialCommonRPCErrorCodeCode) + } else if resp == nil { + logs.CtxWarn(ctx, "MCheckPermission returned nil response") + return errorx.NewByCode(obErrorx.CommercialCommonRPCErrorCodeCode) + } else if resp.BaseResp != nil && resp.BaseResp.StatusCode != 0 { + logs.CtxWarn(ctx, "MCheckPermission returned non-zero status code %d", resp.BaseResp.StatusCode) + return errorx.NewByCode(obErrorx.CommercialCommonRPCErrorCodeCode) + } + for _, r := range resp.AuthRes { + if r != nil && !r.GetIsAllowed() { + return errorx.NewByCode(obErrorx.CommonNoPermissionCode) + } + } + return nil +} + func NewAuthProvider(cli authservice.Client) rpc.IAuthProvider { return &AuthProviderImpl{ cli: cli, From 073ea74a7e9e13ac534ccdfff7f35a4ecb01e97c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 20:11:04 +0800 Subject: [PATCH 050/462] feat:fix task process --- .../application/convertor/task/task.go | 3 +- .../modules/observability/application/task.go | 2 +- .../domain/task/service/task_service.go | 8 +-- .../infra/repo/mysql/convertor/task.go | 54 +++++++++---------- 4 files changed, 30 insertions(+), 37 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 611034966..7db4b9d4e 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -229,12 +229,11 @@ func CheckTaskStatus(ctx context.Context, taskStatus task.TaskStatus, currentTas return validTaskStatus, nil } -func CreateTaskDTO2PO(ctx context.Context, genID int64, taskDO *task.Task, userID string) *entity.ObservabilityTask { +func CreateTaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.ObservabilityTask { if taskDO == nil { return nil } return &entity.ObservabilityTask{ - ID: genID, WorkspaceID: taskDO.GetWorkspaceID(), Name: taskDO.GetName(), Description: ptr.Of(taskDO.GetDescription()), diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 527591e75..7e7bed924 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -141,7 +141,7 @@ func (t *TaskApplication) UpdateTask(ctx context.Context, req *task.UpdateTaskRe WorkspaceID: req.GetWorkspaceID(), TaskStatus: req.TaskStatus, Description: req.Description, - EffectiveTime: req.GetEffectiveTime(), + EffectiveTime: req.EffectiveTime, SampleRate: req.SampleRate, }) if err != nil { diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 3668de7d5..403730aaf 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -95,11 +95,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if userID == "" { return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) } - genID, err := t.idGenerator.GenID(ctx) - if err != nil { - return resp, err - } - taskPO := tconv.CreateTaskDTO2PO(ctx, genID, req.Task, userID) + taskPO := tconv.CreateTaskDTO2PO(ctx, req.Task, userID) id, err := t.TaskRepo.CreateTask(ctx, taskPO) if err != nil { return nil, err @@ -219,7 +215,7 @@ func (t *TaskServiceImpl) CheckTaskName(ctx context.Context, req *CheckTaskNameR ReqOffset: 0, }) if err != nil { - logs.CtxError(ctx, "GetTasks err:%v", err) + logs.CtxError(ctx, "ListTasks err:%v", err) return nil, err } if len(taskPOs) > 0 { diff --git a/backend/modules/observability/infra/repo/mysql/convertor/task.go b/backend/modules/observability/infra/repo/mysql/convertor/task.go index 47ec51e31..83a618e21 100644 --- a/backend/modules/observability/infra/repo/mysql/convertor/task.go +++ b/backend/modules/observability/infra/repo/mysql/convertor/task.go @@ -4,8 +4,6 @@ package convertor import ( - "time" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" ) @@ -16,36 +14,36 @@ func TaskDO2PO(task *entity.ObservabilityTask) *model.ObservabilityTask { WorkspaceID: task.WorkspaceID, Name: task.Name, Description: task.Description, - TaskType: "", - TaskStatus: "", - TaskDetail: nil, - SpanFilter: nil, - EffectiveTime: nil, - Sampler: nil, - TaskConfig: nil, - CreatedAt: time.Time{}, - UpdatedAt: time.Time{}, - CreatedBy: "", - UpdatedBy: "", + TaskType: task.TaskType, + TaskStatus: task.TaskStatus, + TaskDetail: task.TaskDetail, + SpanFilter: task.SpanFilter, + EffectiveTime: task.EffectiveTime, + Sampler: task.Sampler, + TaskConfig: task.TaskConfig, + CreatedAt: task.CreatedAt, + UpdatedAt: task.UpdatedAt, + CreatedBy: task.CreatedBy, + UpdatedBy: task.UpdatedBy, } } func TaskPO2DO(task *model.ObservabilityTask) *entity.ObservabilityTask { return &entity.ObservabilityTask{ - ID: 0, - WorkspaceID: 0, - Name: "", - Description: nil, - TaskType: "", - TaskStatus: "", - TaskDetail: nil, - SpanFilter: nil, - EffectiveTime: nil, - Sampler: nil, - TaskConfig: nil, - CreatedAt: time.Time{}, - UpdatedAt: time.Time{}, - CreatedBy: "", - UpdatedBy: "", + ID: task.ID, + WorkspaceID: task.WorkspaceID, + Name: task.Name, + Description: task.Description, + TaskType: task.TaskType, + TaskStatus: task.TaskStatus, + TaskDetail: task.TaskDetail, + SpanFilter: task.SpanFilter, + EffectiveTime: task.EffectiveTime, + Sampler: task.Sampler, + TaskConfig: task.TaskConfig, + CreatedAt: task.CreatedAt, + UpdatedAt: task.UpdatedAt, + CreatedBy: task.CreatedBy, + UpdatedBy: task.UpdatedBy, } } From ed819002829e5ae71e994b5c973e335f8a60a2e7 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 2 Sep 2025 21:33:19 +0800 Subject: [PATCH 051/462] feat:wire gen --- .../observability/application/trace.go | 2 - .../modules/observability/application/wire.go | 8 ++- .../observability/application/wire_gen.go | 19 ++++-- .../domain/trace/service/trace_service.go | 65 ++++++++++++------- 4 files changed, 59 insertions(+), 35 deletions(-) diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index 60f68ff84..3fe0bc070 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -838,7 +838,6 @@ func (t *TraceApplication) ChangeEvaluatorScore(ctx context.Context, req *trace. } sResp, err := t.traceService.ChangeEvaluatorScore(ctx, &service.ChangeEvaluatorScoreRequest{ - EvalSvc: t.evalSvc, WorkspaceID: req.WorkspaceID, EvaluatorRecordID: req.EvaluatorRecordID, SpanID: req.SpanID, @@ -882,7 +881,6 @@ func (t *TraceApplication) ListAnnotationEvaluators(ctx context.Context, req *tr return nil, err } sResp, err := t.traceService.ListAnnotationEvaluators(ctx, &service.ListAnnotationEvaluatorsRequest{ - EvalSvc: t.evalSvc, WorkspaceID: req.WorkspaceID, Name: req.Name, }) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 99412c2b9..b72cc7c55 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -58,6 +58,9 @@ var ( traceDomainSet = wire.NewSet( service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, + taskSvc.NewTaskServiceImpl, + obrepo.NewTaskRepoImpl, + mysqldao.NewTaskDaoImpl, obrepo.NewTraceCKRepoImpl, ckdao.NewSpansCkDaoImpl, ckdao.NewAnnotationCkDaoImpl, @@ -71,6 +74,7 @@ var ( tenant.NewTenantProvider, workspace.NewWorkspaceProvider, NewDatasetServiceAdapter, + evaluator.NewEvaluatorRPCProvider, ) traceSet = wire.NewSet( NewTraceApplication, @@ -79,7 +83,6 @@ var ( auth.NewAuthProvider, user.NewUserRPCProvider, tag.NewTagRPCProvider, - evaluator.NewEvaluatorRPCProvider, traceDomainSet, ) traceIngestionSet = wire.NewSet( @@ -207,6 +210,9 @@ func InitOpenAPIApplication( limiterFactory limiter.IRateLimiterFactory, authClient authservice.Client, meter metrics.Meter, + evalService evaluatorservice.Client, + db db.Provider, + idgen idgen.IIDGenerator, ) (IObservabilityOpenAPIApplication, error) { wire.Build(openApiSet) return nil, nil diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index aff68afde..c0682f42e 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -86,7 +86,10 @@ func InitTraceApplication(db2 db.Provider, ckDb ck.Provider, meter metrics.Meter iFileProvider := file.NewFileRPCProvider(fileClient) traceFilterProcessorBuilder := NewTraceProcessorBuilder(iTraceConfig, iFileProvider, benefit2) iTenantProvider := tenant.NewTenantProvider(iTraceConfig) - iTraceService, err := service.NewTraceServiceImpl(iTraceRepo, iTraceConfig, iTraceProducer, iAnnotationProducer, iTraceMetrics, traceFilterProcessorBuilder, iTenantProvider) + iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) + iTaskDao := mysql.NewTaskDaoImpl(db2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2) + iTraceService, err := service.NewTraceServiceImpl(iTraceRepo, iTraceConfig, iTraceProducer, iAnnotationProducer, iTraceMetrics, traceFilterProcessorBuilder, iTenantProvider, iEvaluatorRPCAdapter, iTaskRepo) if err != nil { return nil, err } @@ -98,7 +101,6 @@ func InitTraceApplication(db2 db.Provider, ckDb ck.Provider, meter metrics.Meter iViewDao := mysql.NewViewDaoImpl(db2) iViewRepo := repo.NewViewRepoImpl(iViewDao, idgen2) iAuthProvider := auth.NewAuthProvider(authClient) - iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iUserProvider := user.NewUserRPCProvider(userClient) iTagRPCAdapter := tag.NewTagRPCProvider(tagService) iTraceApplication, err := NewTraceApplication(iTraceService, iTraceExportService, iViewRepo, benefit2, iTenantProvider, iTraceMetrics, iTraceConfig, iAuthProvider, iEvaluatorRPCAdapter, iUserProvider, iTagRPCAdapter) @@ -108,7 +110,7 @@ func InitTraceApplication(db2 db.Provider, ckDb ck.Provider, meter metrics.Meter return iTraceApplication, nil } -func InitOpenAPIApplication(mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, fileClient fileservice.Client, ckDb ck.Provider, benefit2 benefit.IBenefitService, limiterFactory limiter.IRateLimiterFactory, authClient authservice.Client, meter metrics.Meter) (IObservabilityOpenAPIApplication, error) { +func InitOpenAPIApplication(mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, fileClient fileservice.Client, ckDb ck.Provider, benefit2 benefit.IBenefitService, limiterFactory limiter.IRateLimiterFactory, authClient authservice.Client, meter metrics.Meter, evalService evaluatorservice.Client, db2 db.Provider, idgen2 idgen.IIDGenerator) (IObservabilityOpenAPIApplication, error) { iSpansDao, err := ck2.NewSpansCkDaoImpl(ckDb) if err != nil { return nil, err @@ -138,7 +140,10 @@ func InitOpenAPIApplication(mqFactory mq.IFactory, configFactory conf.IConfigLoa iFileProvider := file.NewFileRPCProvider(fileClient) traceFilterProcessorBuilder := NewTraceProcessorBuilder(iTraceConfig, iFileProvider, benefit2) iTenantProvider := tenant.NewTenantProvider(iTraceConfig) - iTraceService, err := service.NewTraceServiceImpl(iTraceRepo, iTraceConfig, iTraceProducer, iAnnotationProducer, iTraceMetrics, traceFilterProcessorBuilder, iTenantProvider) + iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) + iTaskDao := mysql.NewTaskDaoImpl(db2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2) + iTraceService, err := service.NewTraceServiceImpl(iTraceRepo, iTraceConfig, iTraceProducer, iAnnotationProducer, iTraceMetrics, traceFilterProcessorBuilder, iTenantProvider, iEvaluatorRPCAdapter, iTaskRepo) if err != nil { return nil, err } @@ -198,11 +203,11 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, userClient // wire.go: var ( - traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, - NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, NewDatasetServiceAdapter, + traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, + NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, NewDatasetServiceAdapter, evaluator.NewEvaluatorRPCProvider, ) traceSet = wire.NewSet( - NewTraceApplication, repo.NewViewRepoImpl, mysql.NewViewDaoImpl, auth.NewAuthProvider, user.NewUserRPCProvider, tag.NewTagRPCProvider, evaluator.NewEvaluatorRPCProvider, traceDomainSet, + NewTraceApplication, repo.NewViewRepoImpl, mysql.NewViewDaoImpl, auth.NewAuthProvider, user.NewUserRPCProvider, tag.NewTagRPCProvider, traceDomainSet, ) traceIngestionSet = wire.NewSet( NewIngestionApplication, service.NewIngestionServiceImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, config.NewTraceConfigCenter, NewTraceConfigLoader, diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index 60a8819c8..efb52d04d 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -10,6 +10,9 @@ import ( "sync" "time" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + taskRepo "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" "golang.org/x/sync/errgroup" "github.com/bytedance/gg/gptr" @@ -201,7 +204,6 @@ type ListAnnotationsResp struct { } type ChangeEvaluatorScoreRequest struct { - EvalSvc rpc.IEvaluatorRPCAdapter WorkspaceID int64 EvaluatorRecordID int64 SpanID string @@ -213,7 +215,6 @@ type ChangeEvaluatorScoreResp struct { Annotation *annotation.Annotation } type ListAnnotationEvaluatorsRequest struct { - EvalSvc rpc.IEvaluatorRPCAdapter WorkspaceID int64 Name *string } @@ -266,6 +267,8 @@ func NewTraceServiceImpl( metrics metrics.ITraceMetrics, buildHelper TraceFilterProcessorBuilder, tenantProvider tenant.ITenantProvider, + evalSvc rpc.IEvaluatorRPCAdapter, + taskRepo taskRepo.ITaskRepo, ) (ITraceService, error) { return &TraceServiceImpl{ traceRepo: tRepo, @@ -275,6 +278,8 @@ func NewTraceServiceImpl( buildHelper: buildHelper, tenantProvider: tenantProvider, metrics: metrics, + evalSvc: evalSvc, + taskRepo: taskRepo, }, nil } @@ -286,6 +291,8 @@ type TraceServiceImpl struct { metrics metrics.ITraceMetrics buildHelper TraceFilterProcessorBuilder tenantProvider tenant.ITenantProvider + evalSvc rpc.IEvaluatorRPCAdapter + taskRepo taskRepo.ITaskRepo } func (r *TraceServiceImpl) GetTrace(ctx context.Context, req *GetTraceReq) (*GetTraceResp, error) { @@ -1069,7 +1076,7 @@ func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *Change } annotation.CorrectAutoEvaluateScore(req.Correction.GetScore(), req.Correction.GetExplain(), updateBy) // 以评估数据为主数据,优先修改评估数据,异常则直接返回失败 - if err = r.correctEvaluatorRecords(ctx, req.EvalSvc, annotation); err != nil { + if err = r.correctEvaluatorRecords(ctx, r.evalSvc, annotation); err != nil { return resp, err } // 再同步修改观测数据 @@ -1087,8 +1094,9 @@ func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *Change annotation.SpanID, recordID, err) return resp, nil } - resp.Annotation = annotation.ToFornaxAnnotation(ctx) - return resp, nil + return &ChangeEvaluatorScoreResp{ + Annotation: annotation.ToFornaxAnnotation(ctx), + }, nil } func (r *TraceServiceImpl) correctEvaluatorRecords(ctx context.Context, evalSvc rpc.IEvaluatorRPCAdapter, annotation *loop_span.Annotation) error { @@ -1123,7 +1131,7 @@ func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *Li var err error if req.Name != nil { // 有name直接模糊查询 - evaluators, err = req.EvalSvc.ListEvaluators(ctx, &rpc.ListEvaluatorsParam{ + evaluators, err = r.evalSvc.ListEvaluators(ctx, &rpc.ListEvaluatorsParam{ WorkspaceID: req.WorkspaceID, Name: req.Name, }) @@ -1132,31 +1140,37 @@ func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *Li } } else { // 没有name先查task - //tasksResp, err := service.ListTasks(ctx, &taskservice.ListTasksRequest{ - // WorkspaceID: req.WorkspaceID, - // Limit: gptr.Of(int32(500)), - // Offset: gptr.Of(int32(0)), - //}) + taskPOs, _, err := r.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ + WorkspaceIDs: []int64{req.WorkspaceID}, + ReqLimit: int32(500), + ReqOffset: int32(0), + }) if err != nil { return nil, err } + if len(taskPOs) == 0 { + logs.CtxInfo(ctx, "GetTasks tasks is nil") + return resp, nil + } + evaluatorVersionIDS := make(map[int64]bool) - //for _, task := range tasksResp.Tasks { - // for _, evaluator := range task.TaskConfig.AutoEvaluateConfigs { - // evaluatorVersionIDS[evaluator.EvaluatorVersionID] = true - // if len(evaluatorVersionIDS) >= 30 { - // break - // } - // } - // if len(evaluatorVersionIDS) >= 30 { - // break - // } - //} + for _, taskPO := range taskPOs { + taskDO := tconv.TaskPO2DTO(ctx, taskPO, nil) + for _, evaluator := range taskDO.TaskConfig.AutoEvaluateConfigs { + evaluatorVersionIDS[evaluator.EvaluatorVersionID] = true + if len(evaluatorVersionIDS) >= 30 { + break + } + } + if len(evaluatorVersionIDS) >= 30 { + break + } + } evaluatorVersionIDList := make([]int64, 0) for k := range evaluatorVersionIDS { evaluatorVersionIDList = append(evaluatorVersionIDList, k) } - evaluators, _, err = req.EvalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ + evaluators, _, err = r.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ WorkspaceID: req.WorkspaceID, EvaluatorVersionIds: evaluatorVersionIDList, }) @@ -1227,8 +1241,9 @@ func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpan FieldList: fieldList, }) } - resp.SpanInfos = spanInfos - return resp, nil + return &ExtractSpanInfoResp{ + SpanInfos: spanInfos, + }, nil } func buildExtractSpanInfo(ctx context.Context, span *loop_span.Span, fieldMapping *task.FieldMapping) (string, error) { From 080b9382c058e28a98e0c4727dcbcccc75e8baec Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 11:06:29 +0800 Subject: [PATCH 052/462] feat:fix wire gen --- backend/modules/observability/application/wire.go | 15 ++++++++------- .../modules/observability/application/wire_gen.go | 9 +++++---- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index b72cc7c55..368ae596e 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -55,12 +55,14 @@ import ( ) var ( - traceDomainSet = wire.NewSet( - service.NewTraceServiceImpl, - service.NewTraceExportServiceImpl, + taskDomainSet = wire.NewSet( taskSvc.NewTaskServiceImpl, obrepo.NewTaskRepoImpl, mysqldao.NewTaskDaoImpl, + ) + traceDomainSet = wire.NewSet( + service.NewTraceServiceImpl, + service.NewTraceExportServiceImpl, obrepo.NewTraceCKRepoImpl, ckdao.NewSpansCkDaoImpl, ckdao.NewAnnotationCkDaoImpl, @@ -75,6 +77,7 @@ var ( workspace.NewWorkspaceProvider, NewDatasetServiceAdapter, evaluator.NewEvaluatorRPCProvider, + taskDomainSet, ) traceSet = wire.NewSet( NewTraceApplication, @@ -102,12 +105,10 @@ var ( ) taskSet = wire.NewSet( NewTaskApplication, - taskSvc.NewTaskServiceImpl, - obrepo.NewTaskRepoImpl, - mysqldao.NewTaskDaoImpl, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, + taskDomainSet, ) ) @@ -210,9 +211,9 @@ func InitOpenAPIApplication( limiterFactory limiter.IRateLimiterFactory, authClient authservice.Client, meter metrics.Meter, - evalService evaluatorservice.Client, db db.Provider, idgen idgen.IIDGenerator, + evalService evaluatorservice.Client, ) (IObservabilityOpenAPIApplication, error) { wire.Build(openApiSet) return nil, nil diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index c0682f42e..08607556f 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -110,7 +110,7 @@ func InitTraceApplication(db2 db.Provider, ckDb ck.Provider, meter metrics.Meter return iTraceApplication, nil } -func InitOpenAPIApplication(mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, fileClient fileservice.Client, ckDb ck.Provider, benefit2 benefit.IBenefitService, limiterFactory limiter.IRateLimiterFactory, authClient authservice.Client, meter metrics.Meter, evalService evaluatorservice.Client, db2 db.Provider, idgen2 idgen.IIDGenerator) (IObservabilityOpenAPIApplication, error) { +func InitOpenAPIApplication(mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, fileClient fileservice.Client, ckDb ck.Provider, benefit2 benefit.IBenefitService, limiterFactory limiter.IRateLimiterFactory, authClient authservice.Client, meter metrics.Meter, db2 db.Provider, idgen2 idgen.IIDGenerator, evalService evaluatorservice.Client) (IObservabilityOpenAPIApplication, error) { iSpansDao, err := ck2.NewSpansCkDaoImpl(ckDb) if err != nil { return nil, err @@ -203,8 +203,9 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, userClient // wire.go: var ( - traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, - NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, NewDatasetServiceAdapter, evaluator.NewEvaluatorRPCProvider, + taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl) + traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, + NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, NewDatasetServiceAdapter, evaluator.NewEvaluatorRPCProvider, taskDomainSet, ) traceSet = wire.NewSet( NewTraceApplication, repo.NewViewRepoImpl, mysql.NewViewDaoImpl, auth.NewAuthProvider, user.NewUserRPCProvider, tag.NewTagRPCProvider, traceDomainSet, @@ -217,7 +218,7 @@ var ( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) taskSet = wire.NewSet( - NewTaskApplication, service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, + NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, taskDomainSet, ) ) From 4986c87e50ced4f59f29e46412eb391c0e09d6a5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 11:43:09 +0800 Subject: [PATCH 053/462] feat:fix file --- .../application/convertor/filter.go | 53 +++++++++++++++++++ .../application/convertor/task/task.go | 4 +- .../application/convertor/trace/span.go | 44 --------------- .../observability/application/openapi.go | 3 +- .../observability/application/trace.go | 3 +- .../domain/trace/service/trace_service.go | 3 +- 6 files changed, 60 insertions(+), 50 deletions(-) create mode 100644 backend/modules/observability/application/convertor/filter.go diff --git a/backend/modules/observability/application/convertor/filter.go b/backend/modules/observability/application/convertor/filter.go new file mode 100644 index 000000000..59c7367a5 --- /dev/null +++ b/backend/modules/observability/application/convertor/filter.go @@ -0,0 +1,53 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package convertor + +import ( + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" +) + +func FilterFieldsDTO2DO(f *filter.FilterFields) *loop_span.FilterFields { + if f == nil { + return nil + } + ret := &loop_span.FilterFields{} + if f.QueryAndOr != nil { + ret.QueryAndOr = ptr.Of(loop_span.QueryAndOrEnum(*f.QueryAndOr)) + } + ret.FilterFields = make([]*loop_span.FilterField, 0) + for _, field := range f.GetFilterFields() { + if field == nil { + continue + } + fieldName := "" + if field.FieldName != nil { + fieldName = *field.FieldName + } + fField := &loop_span.FilterField{ + FieldName: fieldName, + Values: field.Values, + FieldType: fieldTypeDTO2DO(field.FieldType), + } + if field.QueryAndOr != nil { + fField.QueryAndOr = ptr.Of(loop_span.QueryAndOrEnum(*field.QueryAndOr)) + } + if field.QueryType != nil { + fField.QueryType = ptr.Of(loop_span.QueryTypeEnum(*field.QueryType)) + } + if field.SubFilter != nil { + fField.SubFilter = FilterFieldsDTO2DO(field.SubFilter) + } + ret.FilterFields = append(ret.FilterFields, fField) + } + return ret +} + +func fieldTypeDTO2DO(fieldType *filter.FieldType) loop_span.FieldType { + if fieldType == nil { + return loop_span.FieldTypeString + } + return loop_span.FieldType(*fieldType) +} diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 7db4b9d4e..9a960e327 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -14,7 +14,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" - tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/trace" + "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" entity_common "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/common" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" @@ -253,7 +253,7 @@ func CreateTaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *en func SpanFilterDTO2PO(ctx context.Context, filters *filter.SpanFilterFields, workspaceID int64) *string { var filtersDO *loop_span.FilterFields if filters.GetFilters() != nil { - filtersDO = tconv.FilterFieldsDTO2DO(filters.GetFilters()) + filtersDO = convertor.FilterFieldsDTO2DO(filters.GetFilters()) } filterDO := entity.SpanFilter{ PlatformType: filters.GetPlatformType(), diff --git a/backend/modules/observability/application/convertor/trace/span.go b/backend/modules/observability/application/convertor/trace/span.go index 9b1ac6a57..50f4485c1 100644 --- a/backend/modules/observability/application/convertor/trace/span.go +++ b/backend/modules/observability/application/convertor/trace/span.go @@ -6,7 +6,6 @@ package trace import ( "strconv" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/common" @@ -172,46 +171,3 @@ func SpanListDTO2DO(spans []*span.InputSpan) loop_span.SpanList { } return ret } - -func FilterFieldsDTO2DO(f *filter.FilterFields) *loop_span.FilterFields { - if f == nil { - return nil - } - ret := &loop_span.FilterFields{} - if f.QueryAndOr != nil { - ret.QueryAndOr = ptr.Of(loop_span.QueryAndOrEnum(*f.QueryAndOr)) - } - ret.FilterFields = make([]*loop_span.FilterField, 0) - for _, field := range f.GetFilterFields() { - if field == nil { - continue - } - fieldName := "" - if field.FieldName != nil { - fieldName = *field.FieldName - } - fField := &loop_span.FilterField{ - FieldName: fieldName, - Values: field.Values, - FieldType: fieldTypeDTO2DO(field.FieldType), - } - if field.QueryAndOr != nil { - fField.QueryAndOr = ptr.Of(loop_span.QueryAndOrEnum(*field.QueryAndOr)) - } - if field.QueryType != nil { - fField.QueryType = ptr.Of(loop_span.QueryTypeEnum(*field.QueryType)) - } - if field.SubFilter != nil { - fField.SubFilter = FilterFieldsDTO2DO(field.SubFilter) - } - ret.FilterFields = append(ret.FilterFields, fField) - } - return ret -} - -func fieldTypeDTO2DO(fieldType *filter.FieldType) loop_span.FieldType { - if fieldType == nil { - return loop_span.FieldTypeString - } - return loop_span.FieldType(*fieldType) -} diff --git a/backend/modules/observability/application/openapi.go b/backend/modules/observability/application/openapi.go index 487232bd3..9abd21022 100644 --- a/backend/modules/observability/application/openapi.go +++ b/backend/modules/observability/application/openapi.go @@ -16,6 +16,7 @@ import ( "github.com/bytedance/gg/gptr" "github.com/bytedance/sonic" + "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" coltracepb "go.opentelemetry.io/proto/otlp/collector/trace/v1" "google.golang.org/protobuf/proto" @@ -597,7 +598,7 @@ func (o *OpenAPIApplication) buildListSpansOApiReq(ctx context.Context, req *ope ret.SpanListType = loop_span.SpanListTypeRootSpan } if req.Filters != nil { - ret.Filters = tconv.FilterFieldsDTO2DO(req.Filters) + ret.Filters = convertor.FilterFieldsDTO2DO(req.Filters) if err := ret.Filters.Validate(); err != nil { return nil, err } diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index 3fe0bc070..1006f87d1 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -8,6 +8,7 @@ import ( "strconv" "time" + "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" "github.com/samber/lo" @@ -171,7 +172,7 @@ func (t *TraceApplication) buildListSpansSvcReq(req *trace.ListSpansRequest) (*s ret.SpanListType = loop_span.SpanListTypeRootSpan } if req.Filters != nil { - ret.Filters = tconv.FilterFieldsDTO2DO(req.Filters) + ret.Filters = convertor.FilterFieldsDTO2DO(req.Filters) if err := ret.Filters.Validate(); err != nil { return nil, err } diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index efb52d04d..e0406548b 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -1155,8 +1155,7 @@ func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *Li evaluatorVersionIDS := make(map[int64]bool) for _, taskPO := range taskPOs { - taskDO := tconv.TaskPO2DTO(ctx, taskPO, nil) - for _, evaluator := range taskDO.TaskConfig.AutoEvaluateConfigs { + for _, evaluator := range tconv.TaskConfigPO2DO(ctx, taskPO.TaskConfig).AutoEvaluateConfigs { evaluatorVersionIDS[evaluator.EvaluatorVersionID] = true if len(evaluatorVersionIDS) >= 30 { break From eef000190912b847479146e5df5dae41b6c54455 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 11:56:58 +0800 Subject: [PATCH 054/462] feat:fix panic --- .../observability/domain/trace/service/trace_service.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index e0406548b..8826acbd0 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -1155,7 +1155,11 @@ func (r *TraceServiceImpl) ListAnnotationEvaluators(ctx context.Context, req *Li evaluatorVersionIDS := make(map[int64]bool) for _, taskPO := range taskPOs { - for _, evaluator := range tconv.TaskConfigPO2DO(ctx, taskPO.TaskConfig).AutoEvaluateConfigs { + taskConfig := tconv.TaskConfigPO2DO(ctx, taskPO.TaskConfig) + if taskConfig == nil { + continue + } + for _, evaluator := range taskConfig.AutoEvaluateConfigs { evaluatorVersionIDS[evaluator.EvaluatorVersionID] = true if len(evaluatorVersionIDS) >= 30 { break From 35a2edd0d41c48ebee2da8852bc74e664ae291e4 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 12:01:59 +0800 Subject: [PATCH 055/462] feat:fix resp --- .../modules/observability/application/trace.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index 1006f87d1..8a18e101c 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -879,27 +879,26 @@ func (t *TraceApplication) ListAnnotationEvaluators(ctx context.Context, req *tr if err := t.authSvc.CheckWorkspacePermission(ctx, rpc.AuthActionTraceTaskList, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - return nil, err + return resp, err } sResp, err := t.traceService.ListAnnotationEvaluators(ctx, &service.ListAnnotationEvaluatorsRequest{ WorkspaceID: req.WorkspaceID, Name: req.Name, }) if err != nil { - return nil, err + return resp, err } - resp.Evaluators = sResp.Evaluators - return resp, nil + return &trace.ListAnnotationEvaluatorsResponse{Evaluators: sResp.Evaluators}, nil } func (t *TraceApplication) ExtractSpanInfo(ctx context.Context, req *trace.ExtractSpanInfoRequest) (*trace.ExtractSpanInfoResponse, error) { var resp *trace.ExtractSpanInfoResponse if err := t.validateExtractSpanInfoReq(ctx, req); err != nil { - return nil, err + return resp, err } if err := t.authSvc.CheckWorkspacePermission(ctx, rpc.AuthActionTraceRead, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - return nil, err + return resp, err } sResp, err := t.traceService.ExtractSpanInfo(ctx, &service.ExtractSpanInfoRequest{ WorkspaceID: req.WorkspaceID, @@ -911,10 +910,9 @@ func (t *TraceApplication) ExtractSpanInfo(ctx context.Context, req *trace.Extra FieldMappings: req.FieldMappings, }) if err != nil { - return nil, err + return resp, err } - resp.SpanInfos = sResp.SpanInfos - return resp, nil + return &trace.ExtractSpanInfoResponse{SpanInfos: sResp.SpanInfos}, nil } func (t *TraceApplication) validateExtractSpanInfoReq(ctx context.Context, req *trace.ExtractSpanInfoRequest) error { if req == nil { From 1c1817d1729e0694d2afaf6de409c498e1b8d154 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 12:09:31 +0800 Subject: [PATCH 056/462] feat:fix ChangeEvaluatorScoreRequest idl --- .../trace/coze.loop.observability.trace.go | 48 +++++++++---------- ...coze.loop.observability.trace_validator.go | 4 +- .../trace/k-coze.loop.observability.trace.go | 26 +++++----- .../observability/application/trace.go | 14 +++--- .../domain/trace/service/trace_service.go | 28 ++++++----- .../coze.loop.observability.trace.thrift | 2 +- 6 files changed, 63 insertions(+), 59 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index 4c587674a..08c83c9f3 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -14566,13 +14566,13 @@ func (p *PreviewExportTracesToDatasetResponse) Field257DeepEqual(src *string) bo } type ChangeEvaluatorScoreRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - EvaluatorRecordID int64 `thrift:"evaluator_record_id,2,required" frugal:"2,required,i64" form:"evaluator_record_id,required" json:"evaluator_record_id,string,required"` - SpanID string `thrift:"span_id,3,required" frugal:"3,required,string" form:"span_id,required" json:"span_id,required"` - StartTime int64 `thrift:"start_time,4,required" frugal:"4,required,i64" json:"start_time" form:"start_time,required" ` - Correction *annotation.Correction `thrift:"correction,5,required" frugal:"5,required,annotation.Correction" form:"correction,required" json:"correction,required"` - PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + AnnotationID string `thrift:"annotation_id,2,required" frugal:"2,required,string" form:"annotation_id,required" json:"annotation_id,required"` + SpanID string `thrift:"span_id,3,required" frugal:"3,required,string" form:"span_id,required" json:"span_id,required"` + StartTime int64 `thrift:"start_time,4,required" frugal:"4,required,i64" json:"start_time" form:"start_time,required" ` + Correction *annotation.Correction `thrift:"correction,5,required" frugal:"5,required,annotation.Correction" form:"correction,required" json:"correction,required"` + PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } func NewChangeEvaluatorScoreRequest() *ChangeEvaluatorScoreRequest { @@ -14589,9 +14589,9 @@ func (p *ChangeEvaluatorScoreRequest) GetWorkspaceID() (v int64) { return } -func (p *ChangeEvaluatorScoreRequest) GetEvaluatorRecordID() (v int64) { +func (p *ChangeEvaluatorScoreRequest) GetAnnotationID() (v string) { if p != nil { - return p.EvaluatorRecordID + return p.AnnotationID } return } @@ -14648,8 +14648,8 @@ func (p *ChangeEvaluatorScoreRequest) GetBase() (v *base.Base) { func (p *ChangeEvaluatorScoreRequest) SetWorkspaceID(val int64) { p.WorkspaceID = val } -func (p *ChangeEvaluatorScoreRequest) SetEvaluatorRecordID(val int64) { - p.EvaluatorRecordID = val +func (p *ChangeEvaluatorScoreRequest) SetAnnotationID(val string) { + p.AnnotationID = val } func (p *ChangeEvaluatorScoreRequest) SetSpanID(val string) { p.SpanID = val @@ -14669,7 +14669,7 @@ func (p *ChangeEvaluatorScoreRequest) SetBase(val *base.Base) { var fieldIDToName_ChangeEvaluatorScoreRequest = map[int16]string{ 1: "workspace_id", - 2: "evaluator_record_id", + 2: "annotation_id", 3: "span_id", 4: "start_time", 5: "correction", @@ -14693,7 +14693,7 @@ func (p *ChangeEvaluatorScoreRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 var issetWorkspaceID bool = false - var issetEvaluatorRecordID bool = false + var issetAnnotationID bool = false var issetSpanID bool = false var issetStartTime bool = false var issetCorrection bool = false @@ -14722,11 +14722,11 @@ func (p *ChangeEvaluatorScoreRequest) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 2: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } - issetEvaluatorRecordID = true + issetAnnotationID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -14791,7 +14791,7 @@ func (p *ChangeEvaluatorScoreRequest) Read(iprot thrift.TProtocol) (err error) { goto RequiredFieldNotSetError } - if !issetEvaluatorRecordID { + if !issetAnnotationID { fieldId = 2 goto RequiredFieldNotSetError } @@ -14841,13 +14841,13 @@ func (p *ChangeEvaluatorScoreRequest) ReadField1(iprot thrift.TProtocol) error { } func (p *ChangeEvaluatorScoreRequest) ReadField2(iprot thrift.TProtocol) error { - var _field int64 - if v, err := iprot.ReadI64(); err != nil { + var _field string + if v, err := iprot.ReadString(); err != nil { return err } else { _field = v } - p.EvaluatorRecordID = _field + p.AnnotationID = _field return nil } func (p *ChangeEvaluatorScoreRequest) ReadField3(iprot thrift.TProtocol) error { @@ -14969,10 +14969,10 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } func (p *ChangeEvaluatorScoreRequest) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluator_record_id", thrift.I64, 2); err != nil { + if err = oprot.WriteFieldBegin("annotation_id", thrift.STRING, 2); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.EvaluatorRecordID); err != nil { + if err := oprot.WriteString(p.AnnotationID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -15086,7 +15086,7 @@ func (p *ChangeEvaluatorScoreRequest) DeepEqual(ano *ChangeEvaluatorScoreRequest if !p.Field1DeepEqual(ano.WorkspaceID) { return false } - if !p.Field2DeepEqual(ano.EvaluatorRecordID) { + if !p.Field2DeepEqual(ano.AnnotationID) { return false } if !p.Field3DeepEqual(ano.SpanID) { @@ -15114,9 +15114,9 @@ func (p *ChangeEvaluatorScoreRequest) Field1DeepEqual(src int64) bool { } return true } -func (p *ChangeEvaluatorScoreRequest) Field2DeepEqual(src int64) bool { +func (p *ChangeEvaluatorScoreRequest) Field2DeepEqual(src string) bool { - if p.EvaluatorRecordID != src { + if strings.Compare(p.AnnotationID, src) != 0 { return false } return true diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go index 7b1ed400b..c8976cb21 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace_validator.go @@ -386,8 +386,8 @@ func (p *ChangeEvaluatorScoreRequest) IsValid() error { if p.WorkspaceID <= int64(0) { return fmt.Errorf("field WorkspaceID gt rule failed, current value: %v", p.WorkspaceID) } - if p.EvaluatorRecordID <= int64(0) { - return fmt.Errorf("field EvaluatorRecordID gt rule failed, current value: %v", p.EvaluatorRecordID) + if len(p.AnnotationID) < int(1) { + return fmt.Errorf("field AnnotationID min_len rule failed, current value: %d", len(p.AnnotationID)) } if len(p.SpanID) < int(1) { return fmt.Errorf("field SpanID min_len rule failed, current value: %d", len(p.SpanID)) diff --git a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go index 79e86a814..d9d4f8a68 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go @@ -10833,7 +10833,7 @@ func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { var fieldTypeId thrift.TType var fieldId int16 var issetWorkspaceID bool = false - var issetEvaluatorRecordID bool = false + var issetAnnotationID bool = false var issetSpanID bool = false var issetStartTime bool = false var issetCorrection bool = false @@ -10863,13 +10863,13 @@ func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { } } case 2: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { l, err = p.FastReadField2(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetEvaluatorRecordID = true + issetAnnotationID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -10964,7 +10964,7 @@ func (p *ChangeEvaluatorScoreRequest) FastRead(buf []byte) (int, error) { goto RequiredFieldNotSetError } - if !issetEvaluatorRecordID { + if !issetAnnotationID { fieldId = 2 goto RequiredFieldNotSetError } @@ -11011,14 +11011,14 @@ func (p *ChangeEvaluatorScoreRequest) FastReadField1(buf []byte) (int, error) { func (p *ChangeEvaluatorScoreRequest) FastReadField2(buf []byte) (int, error) { offset := 0 - var _field int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l _field = v } - p.EvaluatorRecordID = _field + p.AnnotationID = _field return offset, nil } @@ -11096,8 +11096,8 @@ func (p *ChangeEvaluatorScoreRequest) FastWriteNocopy(buf []byte, w thrift.Nocop offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) - offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) offset += p.fastWriteField6(buf[offset:], w) @@ -11131,8 +11131,8 @@ func (p *ChangeEvaluatorScoreRequest) fastWriteField1(buf []byte, w thrift.Nocop func (p *ChangeEvaluatorScoreRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) - offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorRecordID) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.AnnotationID) return offset } @@ -11185,7 +11185,7 @@ func (p *ChangeEvaluatorScoreRequest) field1Length() int { func (p *ChangeEvaluatorScoreRequest) field2Length() int { l := 0 l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() + l += thrift.Binary.StringLengthNocopy(p.AnnotationID) return l } @@ -11236,7 +11236,9 @@ func (p *ChangeEvaluatorScoreRequest) DeepCopy(s interface{}) error { p.WorkspaceID = src.WorkspaceID - p.EvaluatorRecordID = src.EvaluatorRecordID + if src.AnnotationID != "" { + p.AnnotationID = kutils.StringDeepCopy(src.AnnotationID) + } if src.SpanID != "" { p.SpanID = kutils.StringDeepCopy(src.SpanID) diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index 8a18e101c..81acea121 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -839,12 +839,12 @@ func (t *TraceApplication) ChangeEvaluatorScore(ctx context.Context, req *trace. } sResp, err := t.traceService.ChangeEvaluatorScore(ctx, &service.ChangeEvaluatorScoreRequest{ - WorkspaceID: req.WorkspaceID, - EvaluatorRecordID: req.EvaluatorRecordID, - SpanID: req.SpanID, - StartTime: req.StartTime, - Correction: req.Correction, - PlatformType: loop_span.PlatformType(req.GetPlatformType()), + WorkspaceID: req.WorkspaceID, + SpanID: req.SpanID, + StartTime: req.StartTime, + Correction: req.Correction, + PlatformType: loop_span.PlatformType(req.GetPlatformType()), + AnnotationID: req.AnnotationID, }) if err != nil { return nil, err @@ -860,7 +860,7 @@ func (t *TraceApplication) validateChangeEvaluatorScoreReq(ctx context.Context, return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("no request provided")) } else if req.GetWorkspaceID() <= 0 { return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) - } else if req.GetEvaluatorRecordID() <= 0 { + } else if len(req.GetAnnotationID()) <= 0 { return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid evaluator_record_id")) } else if req.GetStartTime() <= 0 { return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid start_time")) diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index 8826acbd0..e88a5ddc8 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -204,12 +204,12 @@ type ListAnnotationsResp struct { } type ChangeEvaluatorScoreRequest struct { - WorkspaceID int64 - EvaluatorRecordID int64 - SpanID string - StartTime int64 - PlatformType loop_span.PlatformType - Correction *annotation.Correction + WorkspaceID int64 + AnnotationID string + SpanID string + StartTime int64 + PlatformType loop_span.PlatformType + Correction *annotation.Correction } type ChangeEvaluatorScoreResp struct { Annotation *annotation.Annotation @@ -1059,13 +1059,15 @@ func (r *TraceServiceImpl) ChangeEvaluatorScore(ctx context.Context, req *Change return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) } span := spans[0] - var annotation *loop_span.Annotation - for _, anno := range span.Annotations { - meta := anno.GetAutoEvaluateMetadata() - if meta != nil && meta.EvaluatorRecordID == req.EvaluatorRecordID { - annotation = anno - break - } + annotation, err := r.traceRepo.GetAnnotation(ctx, &repo.GetAnnotationParam{ + Tenants: tenants, + ID: req.AnnotationID, + StartAt: time.UnixMicro(span.StartTime).Add(-time.Second).UnixMilli(), + EndAt: time.UnixMicro(span.StartTime).Add(time.Second).UnixMilli(), + }) + if err != nil { + logs.CtxError(ctx, "get annotation %s err %v", req.AnnotationID, err) + return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("get annotation error")) } if annotation == nil { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("annotation not found")) diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index 91fefa84f..b0e972efa 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -292,7 +292,7 @@ struct PreviewExportTracesToDatasetResponse { struct ChangeEvaluatorScoreRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") - 2: required i64 evaluator_record_id (api.js_conv='true', api.body="evaluator_record_id", vt.gt="0") + 2: required string annotation_id (api.body="annotation_id", vt.min_size="1") 3: required string span_id (api.body="span_id", vt.min_size="1") 4: required i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.body="start_time", vt.gt="0") 5: required annotation.Correction correction (api.body="correction") From 043abf52ec20dd26fccbdad1916dffe58686eeeb Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 12:49:33 +0800 Subject: [PATCH 057/462] feat:fix validateExtractSpanInfoReq --- backend/modules/observability/application/trace.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index 81acea121..bb3223941 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -923,8 +923,9 @@ func (t *TraceApplication) validateExtractSpanInfoReq(ctx context.Context, req * return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("span_ids length exceeds the limit")) } v := utils.DateValidator{ - Start: req.GetStartTime(), - End: req.GetEndTime(), + Start: req.GetStartTime(), + End: req.GetEndTime(), + EarliestDays: t.traceConfig.GetTraceDataMaxDurationDay(ctx, req.PlatformType), } if newStartTime, newEndTime, err := v.CorrectDate(); err != nil { From 14cd394ed60a3f701eb29d5ff96da571b5dfada9 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 14:06:25 +0800 Subject: [PATCH 058/462] feat:fix --- backend/modules/observability/application/trace.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index bb3223941..07c25ae3e 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -902,7 +902,7 @@ func (t *TraceApplication) ExtractSpanInfo(ctx context.Context, req *trace.Extra } sResp, err := t.traceService.ExtractSpanInfo(ctx, &service.ExtractSpanInfoRequest{ WorkspaceID: req.WorkspaceID, - TraceID: "", + TraceID: req.TraceID, SpanIds: req.SpanIds, StartTime: req.GetStartTime(), EndTime: req.GetEndTime(), From 22bcf48b61a327aa9c53dc9db048498d908c4349 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 14:16:48 +0800 Subject: [PATCH 059/462] feat:fix time --- .../modules/observability/domain/trace/service/trace_service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index e88a5ddc8..c6dd21e06 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -1211,7 +1211,7 @@ func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpan req.TraceID, strconv.FormatInt(req.WorkspaceID, 10), req.StartTime-time.Second.Milliseconds(), - req.StartTime+time.Second.Milliseconds(), + req.EndTime+time.Second.Milliseconds(), ) if err != nil { return resp, err From 90d377f8e77fb69272f2642dde81d2830ec549d9 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 15:08:32 +0800 Subject: [PATCH 060/462] feat:add buildExtractSpanInfo --- .../domain/trace/service/trace_service.go | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index c6dd21e06..2499bbe43 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -20,7 +20,6 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/annotation" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/trace" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/metrics" @@ -228,7 +227,7 @@ type ExtractSpanInfoRequest struct { StartTime int64 EndTime int64 PlatformType loop_span.PlatformType - FieldMappings []*task.FieldMapping + FieldMappings []*entity.FieldMapping } type ExtractSpanInfoResp struct { SpanInfos []*trace.SpanInfo @@ -1230,14 +1229,14 @@ func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpan return resp, err } // 前端传入的是Name,评测集需要的是key,需要做一下mapping - if mapping.FieldSchema.Name == nil { + if mapping.FieldSchema.Name == "" { logs.CtxInfo(ctx, "Evaluator field name is nil") continue } content := buildContent(value) fieldList = append(fieldList, &dataset.FieldData{ - Key: gptr.Of(mapping.GetFieldSchema().GetKey()), - Name: gptr.Of(mapping.GetFieldSchema().GetName()), + Key: mapping.FieldSchema.Key, + Name: gptr.Of(mapping.FieldSchema.Name), Content: content, }) } @@ -1250,9 +1249,22 @@ func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpan SpanInfos: spanInfos, }, nil } -func buildExtractSpanInfo(ctx context.Context, span *loop_span.Span, fieldMapping *task.FieldMapping) (string, error) { - - return "", nil +func buildExtractSpanInfo(ctx context.Context, span *loop_span.Span, fieldMapping *entity.FieldMapping) (string, error) { + value, err := span.ExtractByJsonpath(ctx, fieldMapping.TraceFieldKey, fieldMapping.TraceFieldJsonpath) + if err != nil { + // 非json但使用了jsonpath,也不报错,置空 + logs.CtxInfo(ctx, "Extract field failed, err:%v", err) + } + content, errCode := entity.GetContentInfo(ctx, fieldMapping.FieldSchema.ContentType, value) + if errCode == entity.DatasetErrorType_MismatchSchema { + logs.CtxInfo(ctx, "invalid multi part") + return "", errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid multi part")) + } + valueJSON, err := json.Marshal(content) + if err != nil { + return "", err + } + return string(valueJSON), nil } func buildContent(value string) *dataset.Content { From ca07823cd6495bad84dd4a32348bffc12d061a94 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 15:18:56 +0800 Subject: [PATCH 061/462] feat:fix idl --- .../trace/coze.loop.observability.trace.go | 29 +++++++++---------- .../trace/k-coze.loop.observability.trace.go | 10 +++---- .../convertor/trace/trace_export.go | 8 ++--- .../convertor/trace/trace_export_test.go | 2 +- .../observability/application/trace.go | 2 +- .../domain/trace/service/trace_service.go | 4 +-- .../coze.loop.observability.trace.thrift | 2 +- 7 files changed, 28 insertions(+), 29 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go index 08c83c9f3..99322c8a5 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/coze.loop.observability.trace.go @@ -13,7 +13,6 @@ import ( dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/view" "strings" ) @@ -15998,14 +15997,14 @@ func (p *ListAnnotationEvaluatorsResponse) Field255DeepEqual(src *base.BaseResp) } type ExtractSpanInfoRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" form:"trace_id,required" json:"trace_id,required"` - SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" form:"span_ids,required" json:"span_ids,required"` - StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" form:"start_time" ` - EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" form:"end_time" ` - PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` - FieldMappings []*task.FieldMapping `thrift:"field_mappings,7,optional" frugal:"7,optional,list" form:"field_mappings" json:"field_mappings,omitempty" query:"field_mappings"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + TraceID string `thrift:"trace_id,2,required" frugal:"2,required,string" form:"trace_id,required" json:"trace_id,required"` + SpanIds []string `thrift:"span_ids,3,required" frugal:"3,required,list" form:"span_ids,required" json:"span_ids,required"` + StartTime *int64 `thrift:"start_time,4,optional" frugal:"4,optional,i64" json:"start_time" form:"start_time" ` + EndTime *int64 `thrift:"end_time,5,optional" frugal:"5,optional,i64" json:"end_time" form:"end_time" ` + PlatformType *common.PlatformType `thrift:"platform_type,6,optional" frugal:"6,optional,string" form:"platform_type" json:"platform_type,omitempty"` + FieldMappings []*dataset0.FieldMapping `thrift:"field_mappings,7,optional" frugal:"7,optional,list" form:"field_mappings" json:"field_mappings,omitempty" query:"field_mappings"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"-" json:"-" query:"-"` } func NewExtractSpanInfoRequest() *ExtractSpanInfoRequest { @@ -16072,9 +16071,9 @@ func (p *ExtractSpanInfoRequest) GetPlatformType() (v common.PlatformType) { return *p.PlatformType } -var ExtractSpanInfoRequest_FieldMappings_DEFAULT []*task.FieldMapping +var ExtractSpanInfoRequest_FieldMappings_DEFAULT []*dataset0.FieldMapping -func (p *ExtractSpanInfoRequest) GetFieldMappings() (v []*task.FieldMapping) { +func (p *ExtractSpanInfoRequest) GetFieldMappings() (v []*dataset0.FieldMapping) { if p == nil { return } @@ -16113,7 +16112,7 @@ func (p *ExtractSpanInfoRequest) SetEndTime(val *int64) { func (p *ExtractSpanInfoRequest) SetPlatformType(val *common.PlatformType) { p.PlatformType = val } -func (p *ExtractSpanInfoRequest) SetFieldMappings(val []*task.FieldMapping) { +func (p *ExtractSpanInfoRequest) SetFieldMappings(val []*dataset0.FieldMapping) { p.FieldMappings = val } func (p *ExtractSpanInfoRequest) SetBase(val *base.Base) { @@ -16367,8 +16366,8 @@ func (p *ExtractSpanInfoRequest) ReadField7(iprot thrift.TProtocol) error { if err != nil { return err } - _field := make([]*task.FieldMapping, 0, size) - values := make([]task.FieldMapping, size) + _field := make([]*dataset0.FieldMapping, 0, size) + values := make([]dataset0.FieldMapping, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -16709,7 +16708,7 @@ func (p *ExtractSpanInfoRequest) Field6DeepEqual(src *common.PlatformType) bool } return true } -func (p *ExtractSpanInfoRequest) Field7DeepEqual(src []*task.FieldMapping) bool { +func (p *ExtractSpanInfoRequest) Field7DeepEqual(src []*dataset0.FieldMapping) bool { if len(p.FieldMappings) != len(src) { return false diff --git a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go index d9d4f8a68..bada89ab9 100644 --- a/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go +++ b/backend/kitex_gen/coze/loop/observability/trace/k-coze.loop.observability.trace.go @@ -12158,8 +12158,8 @@ func (p *ExtractSpanInfoRequest) FastReadField7(buf []byte) (int, error) { if err != nil { return offset, err } - _field := make([]*task.FieldMapping, 0, size) - values := make([]task.FieldMapping, size) + _field := make([]*dataset0.FieldMapping, 0, size) + values := make([]dataset0.FieldMapping, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -12416,11 +12416,11 @@ func (p *ExtractSpanInfoRequest) DeepCopy(s interface{}) error { } if src.FieldMappings != nil { - p.FieldMappings = make([]*task.FieldMapping, 0, len(src.FieldMappings)) + p.FieldMappings = make([]*dataset0.FieldMapping, 0, len(src.FieldMappings)) for _, elem := range src.FieldMappings { - var _elem *task.FieldMapping + var _elem *dataset0.FieldMapping if elem != nil { - _elem = &task.FieldMapping{} + _elem = &dataset0.FieldMapping{} if err := _elem.DeepCopy(elem); err != nil { return err } diff --git a/backend/modules/observability/application/convertor/trace/trace_export.go b/backend/modules/observability/application/convertor/trace/trace_export.go index 4253f415d..f2f42f597 100755 --- a/backend/modules/observability/application/convertor/trace/trace_export.go +++ b/backend/modules/observability/application/convertor/trace/trace_export.go @@ -49,7 +49,7 @@ func ExportRequestDTO2DO(req *trace.ExportTracesToDatasetRequest) *service.Expor // 转换字段映射 if req.IsSetFieldMappings() { - result.FieldMappings = convertFieldMappingsDTO2DO(req.GetFieldMappings()) + result.FieldMappings = ConvertFieldMappingsDTO2DO(req.GetFieldMappings()) } return result @@ -107,7 +107,7 @@ func PreviewRequestDTO2DO(req *trace.PreviewExportTracesToDatasetRequest) *servi // 转换字段映射 if req.IsSetFieldMappings() { - result.FieldMappings = convertFieldMappingsDTO2DO(req.GetFieldMappings()) + result.FieldMappings = ConvertFieldMappingsDTO2DO(req.GetFieldMappings()) } return result @@ -186,8 +186,8 @@ func convertDatasetSchemaDTO2DO(schema *dataset0.DatasetSchema) entity.DatasetSc return result } -// convertFieldMappingsDTO2DO 转换字段映射 -func convertFieldMappingsDTO2DO(mappings []*dataset0.FieldMapping) []entity.FieldMapping { +// ConvertFieldMappingsDTO2DO 转换字段映射 +func ConvertFieldMappingsDTO2DO(mappings []*dataset0.FieldMapping) []entity.FieldMapping { if len(mappings) == 0 { return nil } diff --git a/backend/modules/observability/application/convertor/trace/trace_export_test.go b/backend/modules/observability/application/convertor/trace/trace_export_test.go index b72503610..72aa80ca4 100755 --- a/backend/modules/observability/application/convertor/trace/trace_export_test.go +++ b/backend/modules/observability/application/convertor/trace/trace_export_test.go @@ -589,7 +589,7 @@ func TestConvertFieldMappingsDTO2DO(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got := convertFieldMappingsDTO2DO(tt.mappings) + got := ConvertFieldMappingsDTO2DO(tt.mappings) assert.Equal(t, tt.want, got) }) } diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index 07c25ae3e..4eb8ba079 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -907,7 +907,7 @@ func (t *TraceApplication) ExtractSpanInfo(ctx context.Context, req *trace.Extra StartTime: req.GetStartTime(), EndTime: req.GetEndTime(), PlatformType: loop_span.PlatformType(req.GetPlatformType()), - FieldMappings: req.FieldMappings, + FieldMappings: tconv.ConvertFieldMappingsDTO2DO(req.GetFieldMappings()), }) if err != nil { return resp, err diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index 2499bbe43..172ec25c2 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -227,7 +227,7 @@ type ExtractSpanInfoRequest struct { StartTime int64 EndTime int64 PlatformType loop_span.PlatformType - FieldMappings []*entity.FieldMapping + FieldMappings []entity.FieldMapping } type ExtractSpanInfoResp struct { SpanInfos []*trace.SpanInfo @@ -1222,7 +1222,7 @@ func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpan for _, span := range spans { var fieldList []*dataset.FieldData for _, mapping := range req.FieldMappings { - value, err := buildExtractSpanInfo(ctx, span, mapping) + value, err := buildExtractSpanInfo(ctx, span, &mapping) if err != nil { // 非json但使用了jsonpath,也不报错,置空 logs.CtxInfo(ctx, "Extract field failed, err:%v", err) diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift index b0e972efa..39eb51161 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.trace.thrift @@ -329,7 +329,7 @@ struct ExtractSpanInfoRequest { 4: optional i64 start_time (api.js_conv='true', go.tag='json:"start_time"', api.body="start_time", vt.gt="0") 5: optional i64 end_time (api.js_conv='true', go.tag='json:"end_time"', api.body="end_time", vt.gt="0") 6: optional common.PlatformType platform_type (api.body="platform_type") - 7: optional list field_mappings (vt.min_size="1", vt.max_size="100") + 7: optional list field_mappings (vt.min_size="1", vt.max_size="100") 255: optional base.Base Base (api.none="true") } From 475bd4e7ad377a6626c2b3be4c0e13ba4cb33a1c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 3 Sep 2025 16:57:39 +0800 Subject: [PATCH 062/462] feat:wire gen --- .../api/handler/coze/loop/apis/wire_gen.go | 5 +- .../modules/observability/application/task.go | 4 ++ .../observability/domain/task/entity/event.go | 7 +++ .../domain/task/taskexe/tracehub/trace_hub.go | 30 ++++++++++ .../domain/task/taskexe/tracehub/utils.go | 4 ++ .../domain/task/taskexe/types.go | 23 ++++++++ .../infra/mq/consumer/task_consumer.go | 56 +++++++++++++++++++ 7 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 backend/modules/observability/domain/task/entity/event.go create mode 100644 backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go create mode 100644 backend/modules/observability/domain/task/taskexe/tracehub/utils.go create mode 100644 backend/modules/observability/domain/task/taskexe/types.go create mode 100644 backend/modules/observability/infra/mq/consumer/task_consumer.go diff --git a/backend/api/handler/coze/loop/apis/wire_gen.go b/backend/api/handler/coze/loop/apis/wire_gen.go index 78d41e064..e57f8afdc 100644 --- a/backend/api/handler/coze/loop/apis/wire_gen.go +++ b/backend/api/handler/coze/loop/apis/wire_gen.go @@ -8,7 +8,6 @@ package apis import ( "context" - "github.com/cloudwego/kitex/pkg/endpoint" "github.com/coze-dev/coze-loop/backend/infra/ck" "github.com/coze-dev/coze-loop/backend/infra/db" @@ -158,11 +157,11 @@ func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Prov if err != nil { return nil, err } - iObservabilityOpenAPIApplication, err := application6.InitOpenAPIApplication(mqFactory, configFactory, fileClient, ckDb, benefit2, limiterFactory, authCli, meter) + iObservabilityOpenAPIApplication, err := application6.InitOpenAPIApplication(mqFactory, configFactory, fileClient, ckDb, benefit2, limiterFactory, authCli, meter, db2, idgen2, evalClient) if err != nil { return nil, err } - iTaskApplication, err := application6.InitTaskApplication(db2, idgen2, configFactory, userClient, authCli, evalClient) + iTaskApplication, err := application6.InitTaskApplication(db2, idgen2, userClient, authCli, evalClient) if err != nil { return nil, err } diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 7e7bed924..7bcead061 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -10,12 +10,16 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) +type ITaskQueueConsumer interface { + TraceHub(ctx context.Context, event *entity.TaskEvent) error +} type ITaskApplication interface { task.TaskService } diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go new file mode 100644 index 000000000..f46e1f9fe --- /dev/null +++ b/backend/modules/observability/domain/task/entity/event.go @@ -0,0 +1,7 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package entity + +type TaskEvent struct { +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go new file mode 100644 index 000000000..34fa4f592 --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -0,0 +1,30 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package tracehub + +import ( + "context" + "time" + + config "github.com/coze-dev/coze-loop/backend/modules/data/domain/component/conf" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/consumer" + goredis "github.com/redis/go-redis/v9" +) + +type TraceHub struct { + c consumer.Consumer + cfg *config.ConsumerConfig + redis *goredis.Client + ticker *time.Ticker + stopChan chan struct{} +} + +type ITaskEvent interface { + TraceHub(ctx context.Context, event *entity.TaskEvent) error +} + +func NewTraceHub(redisCli *goredis.Client, cfg *config.ConsumerConfig) (*TraceHub, error) { + return nil, nil +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/taskexe/tracehub/utils.go new file mode 100644 index 000000000..02558b881 --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/tracehub/utils.go @@ -0,0 +1,4 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package tracehub diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go new file mode 100644 index 000000000..e8a796af8 --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -0,0 +1,23 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package taskexe + +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" +) + +type Trigger struct { +} +type Processor interface { + ValidateConfig(ctx context.Context, config any, workspaceID int64) error // 校验配置项是否有效 + Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 + OnChangeProcessor(ctx context.Context, task *task.Task, taskOp task.TaskStatus) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 + Finish(ctx context.Context, config any, trigger *Trigger) error //Finish +} + +type ProcessorUnion interface { + Processor +} diff --git a/backend/modules/observability/infra/mq/consumer/task_consumer.go b/backend/modules/observability/infra/mq/consumer/task_consumer.go new file mode 100644 index 000000000..18ec487a1 --- /dev/null +++ b/backend/modules/observability/infra/mq/consumer/task_consumer.go @@ -0,0 +1,56 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package consumer + +import ( + "context" + "time" + + "github.com/coze-dev/coze-loop/backend/infra/mq" + obapp "github.com/coze-dev/coze-loop/backend/modules/observability/application" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/pkg/conf" + "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +type TaskConsumer struct { + handler obapp.ITaskQueueConsumer + conf.IConfigLoader +} + +func newTaskConsumer(handler obapp.ITaskQueueConsumer, loader conf.IConfigLoader) mq.IConsumerWorker { + return &TaskConsumer{ + handler: handler, + IConfigLoader: loader, + } +} + +func (e *TaskConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, error) { + const key = "task_mq_consumer_config" + cfg := &config.MqConsumerCfg{} + if err := e.UnmarshalKey(ctx, key, cfg); err != nil { + return nil, err + } + res := &mq.ConsumerConfig{ + Addr: cfg.Addr, + Topic: cfg.Topic, + ConsumerGroup: cfg.ConsumerGroup, + ConsumeTimeout: time.Duration(cfg.Timeout) * time.Millisecond, + ConsumeGoroutineNums: cfg.WorkerNum, + } + return res, nil +} + +func (e *TaskConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) error { + event := new(entity.TaskEvent) + if err := json.Unmarshal(ext.Body, event); err != nil { + logs.CtxError(ctx, "Task msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) + return nil + } + logs.CtxInfo(ctx, "Handle Task message %+v", event) + return e.handler.TraceHub(ctx, event) +} From 188055476f4b6a97b8faf474f13b28e092bf2e02 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 4 Sep 2025 11:10:00 +0800 Subject: [PATCH 063/462] feat:add idl --- backend/api/handler/coze/loop/apis/wire_gen.go | 1 + backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go | 2 -- backend/kitex_gen/coze/loop/observability/domain/task/task.go | 2 ++ idl/thrift/coze/loop/observability/domain/task.thrift | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/api/handler/coze/loop/apis/wire_gen.go b/backend/api/handler/coze/loop/apis/wire_gen.go index e57f8afdc..5d2f05bec 100644 --- a/backend/api/handler/coze/loop/apis/wire_gen.go +++ b/backend/api/handler/coze/loop/apis/wire_gen.go @@ -8,6 +8,7 @@ package apis import ( "context" + "github.com/cloudwego/kitex/pkg/endpoint" "github.com/coze-dev/coze-loop/backend/infra/ck" "github.com/coze-dev/coze-loop/backend/infra/db" diff --git a/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go b/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go index c79d5c6e9..801faa54f 100644 --- a/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go +++ b/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go @@ -28,8 +28,6 @@ const ( AuthEntityTypeModel = "Model" AuthEntityTypeAnnotation = "Annotation" - - AuthEntityTypeTraceTask = "Task" ) // 主体类型 diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index cd81fd6af..4a631229b 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -18,6 +18,8 @@ const ( TaskTypeAutoEval = "auto_evaluate" + TaskTypeDataReflow = "data_reflow" + TaskStatusUnstarted = "unstarted" TaskStatusRunning = "running" diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 008ddad54..e6b27553f 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -10,6 +10,7 @@ const TimeUnit TimeUnit_Week = "week" typedef string TaskType (ts.enum="true") const TaskType TaskType_AutoEval = "auto_evaluate" // 自动评测 +const TaskType TaskType_DataReflow = "data_reflow" // 数据回流 typedef string TaskStatus (ts.enum="true") const TaskStatus TaskStatus_Unstarted = "unstarted" // 未启动 From 0357b9896a1b47aed5512e9bb51a2d5ef1afad98 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 4 Sep 2025 11:36:40 +0800 Subject: [PATCH 064/462] feat:fix idl --- backend/kitex_gen/coze/loop/observability/domain/task/task.go | 2 +- idl/thrift/coze/loop/observability/domain/task.thrift | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 4a631229b..8e91ee469 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -18,7 +18,7 @@ const ( TaskTypeAutoEval = "auto_evaluate" - TaskTypeDataReflow = "data_reflow" + TaskTypeAutoDataReflow = "auto_data_reflow" TaskStatusUnstarted = "unstarted" diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index e6b27553f..55690b337 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -9,8 +9,8 @@ const TimeUnit TimeUnit_Day = "day" const TimeUnit TimeUnit_Week = "week" typedef string TaskType (ts.enum="true") -const TaskType TaskType_AutoEval = "auto_evaluate" // 自动评测 -const TaskType TaskType_DataReflow = "data_reflow" // 数据回流 +const TaskType TaskType_AutoEval = "auto_evaluate" // 自动评测 +const TaskType TaskType_AutoDataReflow = "auto_data_reflow" // 数据回流 typedef string TaskStatus (ts.enum="true") const TaskStatus TaskStatus_Unstarted = "unstarted" // 未启动 From 8555aa1adc557952e1b6b83d6e2e98c1d0c5c85b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 4 Sep 2025 14:35:52 +0800 Subject: [PATCH 065/462] feat: fix task idl --- .../loop/observability/domain/task/k-task.go | 447 +++++++++++++ .../loop/observability/domain/task/task.go | 610 ++++++++++++++++++ .../domain/task/task_validator.go | 24 + .../loop/observability/domain/task.thrift | 10 + 4 files changed, 1091 insertions(+) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index b73ac524a..24e250048 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -178,6 +178,20 @@ func (p *Task) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 10: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField10(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 100: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField100(buf[offset:]) @@ -341,6 +355,18 @@ func (p *Task) FastReadField9(buf []byte) (int, error) { return offset, nil } +func (p *Task) FastReadField10(buf []byte) (int, error) { + offset := 0 + _field := NewTaskDetail() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BackfillTaskDetail = _field + return offset, nil +} + func (p *Task) FastReadField100(buf []byte) (int, error) { offset := 0 _field := common.NewBaseInfo() @@ -369,6 +395,7 @@ func (p *Task) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset += p.fastWriteField7(buf[offset:], w) offset += p.fastWriteField8(buf[offset:], w) offset += p.fastWriteField9(buf[offset:], w) + offset += p.fastWriteField10(buf[offset:], w) offset += p.fastWriteField100(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) @@ -387,6 +414,7 @@ func (p *Task) BLength() int { l += p.field7Length() l += p.field8Length() l += p.field9Length() + l += p.field10Length() l += p.field100Length() } l += thrift.Binary.FieldStopLength() @@ -470,6 +498,15 @@ func (p *Task) fastWriteField9(buf []byte, w thrift.NocopyWriter) int { return offset } +func (p *Task) fastWriteField10(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBackfillTaskDetail() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 10) + offset += p.BackfillTaskDetail.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *Task) fastWriteField100(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetBaseInfo() { @@ -556,6 +593,15 @@ func (p *Task) field9Length() int { return l } +func (p *Task) field10Length() int { + l := 0 + if p.IsSetBackfillTaskDetail() { + l += thrift.Binary.FieldBeginLength() + l += p.BackfillTaskDetail.BLength() + } + return l +} + func (p *Task) field100Length() int { l := 0 if p.IsSetBaseInfo() { @@ -627,6 +673,15 @@ func (p *Task) DeepCopy(s interface{}) error { } p.TaskDetail = _taskDetail + var _backfillTaskDetail *TaskDetail + if src.BackfillTaskDetail != nil { + _backfillTaskDetail = &TaskDetail{} + if err := _backfillTaskDetail.DeepCopy(src.BackfillTaskDetail); err != nil { + return err + } + } + p.BackfillTaskDetail = _backfillTaskDetail + var _baseInfo *common.BaseInfo if src.BaseInfo != nil { _baseInfo = &common.BaseInfo{} @@ -698,6 +753,20 @@ func (p *Rule) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 4: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -752,6 +821,18 @@ func (p *Rule) FastReadField3(buf []byte) (int, error) { return offset, nil } +func (p *Rule) FastReadField4(buf []byte) (int, error) { + offset := 0 + _field := NewEffectiveTime() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BackfillEffectiveTime = _field + return offset, nil +} + func (p *Rule) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -762,6 +843,7 @@ func (p *Rule) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -773,6 +855,7 @@ func (p *Rule) BLength() int { l += p.field1Length() l += p.field2Length() l += p.field3Length() + l += p.field4Length() } l += thrift.Binary.FieldStopLength() return l @@ -805,6 +888,15 @@ func (p *Rule) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { return offset } +func (p *Rule) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBackfillEffectiveTime() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 4) + offset += p.BackfillEffectiveTime.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *Rule) field1Length() int { l := 0 if p.IsSetSpanFilters() { @@ -832,6 +924,15 @@ func (p *Rule) field3Length() int { return l } +func (p *Rule) field4Length() int { + l := 0 + if p.IsSetBackfillEffectiveTime() { + l += thrift.Binary.FieldBeginLength() + l += p.BackfillEffectiveTime.BLength() + } + return l +} + func (p *Rule) DeepCopy(s interface{}) error { src, ok := s.(*Rule) if !ok { @@ -865,6 +966,15 @@ func (p *Rule) DeepCopy(s interface{}) error { } p.EffectiveTime = _effectiveTime + var _backfillEffectiveTime *EffectiveTime + if src.BackfillEffectiveTime != nil { + _backfillEffectiveTime = &EffectiveTime{} + if err := _backfillEffectiveTime.DeepCopy(src.BackfillEffectiveTime); err != nil { + return err + } + } + p.BackfillEffectiveTime = _backfillEffectiveTime + return nil } @@ -1451,6 +1561,20 @@ func (p *TaskConfig) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 2: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -1494,6 +1618,18 @@ func (p *TaskConfig) FastReadField1(buf []byte) (int, error) { return offset, nil } +func (p *TaskConfig) FastReadField2(buf []byte) (int, error) { + offset := 0 + _field := NewDatasetConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.DataReflowConfig = _field + return offset, nil +} + func (p *TaskConfig) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -1502,6 +1638,7 @@ func (p *TaskConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -1511,6 +1648,7 @@ func (p *TaskConfig) BLength() int { l := 0 if p != nil { l += p.field1Length() + l += p.field2Length() } l += thrift.Binary.FieldStopLength() return l @@ -1532,6 +1670,15 @@ func (p *TaskConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { return offset } +func (p *TaskConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDataReflowConfig() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 2) + offset += p.DataReflowConfig.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *TaskConfig) field1Length() int { l := 0 if p.IsSetAutoEvaluateConfigs() { @@ -1545,6 +1692,15 @@ func (p *TaskConfig) field1Length() int { return l } +func (p *TaskConfig) field2Length() int { + l := 0 + if p.IsSetDataReflowConfig() { + l += thrift.Binary.FieldBeginLength() + l += p.DataReflowConfig.BLength() + } + return l +} + func (p *TaskConfig) DeepCopy(s interface{}) error { src, ok := s.(*TaskConfig) if !ok { @@ -1566,6 +1722,297 @@ func (p *TaskConfig) DeepCopy(s interface{}) error { } } + var _dataReflowConfig *DatasetConfig + if src.DataReflowConfig != nil { + _dataReflowConfig = &DatasetConfig{} + if err := _dataReflowConfig.DeepCopy(src.DataReflowConfig); err != nil { + return err + } + } + p.DataReflowConfig = _dataReflowConfig + + return nil +} + +func (p *DatasetConfig) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetIsNewDataset bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.BOOL { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetIsNewDataset = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetIsNewDataset { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DatasetConfig[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_DatasetConfig[fieldId])) +} + +func (p *DatasetConfig) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field bool + if v, l, err := thrift.Binary.ReadBool(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.IsNewDataset = _field + return offset, nil +} + +func (p *DatasetConfig) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.DatasetID = _field + return offset, nil +} + +func (p *DatasetConfig) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.DatasetName = _field + return offset, nil +} + +func (p *DatasetConfig) FastReadField4(buf []byte) (int, error) { + offset := 0 + _field := dataset.NewDatasetSchema() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.DatasetSchema = _field + return offset, nil +} + +func (p *DatasetConfig) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *DatasetConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *DatasetConfig) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *DatasetConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.BOOL, 1) + offset += thrift.Binary.WriteBool(buf[offset:], p.IsNewDataset) + return offset +} + +func (p *DatasetConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDatasetID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], *p.DatasetID) + } + return offset +} + +func (p *DatasetConfig) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDatasetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.DatasetName) + } + return offset +} + +func (p *DatasetConfig) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDatasetSchema() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 4) + offset += p.DatasetSchema.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *DatasetConfig) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.BoolLength() + return l +} + +func (p *DatasetConfig) field2Length() int { + l := 0 + if p.IsSetDatasetID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *DatasetConfig) field3Length() int { + l := 0 + if p.IsSetDatasetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.DatasetName) + } + return l +} + +func (p *DatasetConfig) field4Length() int { + l := 0 + if p.IsSetDatasetSchema() { + l += thrift.Binary.FieldBeginLength() + l += p.DatasetSchema.BLength() + } + return l +} + +func (p *DatasetConfig) DeepCopy(s interface{}) error { + src, ok := s.(*DatasetConfig) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.IsNewDataset = src.IsNewDataset + + if src.DatasetID != nil { + tmp := *src.DatasetID + p.DatasetID = &tmp + } + + if src.DatasetName != nil { + var tmp string + if *src.DatasetName != "" { + tmp = kutils.StringDeepCopy(*src.DatasetName) + } + p.DatasetName = &tmp + } + + var _datasetSchema *dataset.DatasetSchema + if src.DatasetSchema != nil { + _datasetSchema = &dataset.DatasetSchema{} + if err := _datasetSchema.DeepCopy(src.DatasetSchema); err != nil { + return err + } + } + p.DatasetSchema = _datasetSchema + return nil } diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 8e91ee469..c48b7919b 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -59,6 +59,8 @@ type Task struct { TaskConfig *TaskConfig `thrift:"task_config,8,optional" frugal:"8,optional,TaskConfig" form:"task_config" json:"task_config,omitempty" query:"task_config"` // 任务状态详情 TaskDetail *TaskDetail `thrift:"task_detail,9,optional" frugal:"9,optional,TaskDetail" form:"task_detail" json:"task_detail,omitempty" query:"task_detail"` + // 任务历史数据执行详情 + BackfillTaskDetail *TaskDetail `thrift:"backfill_task_detail,10,optional" frugal:"10,optional,TaskDetail" form:"backfill_task_detail" json:"backfill_task_detail,omitempty" query:"backfill_task_detail"` // 基础信息 BaseInfo *common.BaseInfo `thrift:"base_info,100,optional" frugal:"100,optional,common.BaseInfo" form:"base_info" json:"base_info,omitempty" query:"base_info"` } @@ -168,6 +170,18 @@ func (p *Task) GetTaskDetail() (v *TaskDetail) { return p.TaskDetail } +var Task_BackfillTaskDetail_DEFAULT *TaskDetail + +func (p *Task) GetBackfillTaskDetail() (v *TaskDetail) { + if p == nil { + return + } + if !p.IsSetBackfillTaskDetail() { + return Task_BackfillTaskDetail_DEFAULT + } + return p.BackfillTaskDetail +} + var Task_BaseInfo_DEFAULT *common.BaseInfo func (p *Task) GetBaseInfo() (v *common.BaseInfo) { @@ -206,6 +220,9 @@ func (p *Task) SetTaskConfig(val *TaskConfig) { func (p *Task) SetTaskDetail(val *TaskDetail) { p.TaskDetail = val } +func (p *Task) SetBackfillTaskDetail(val *TaskDetail) { + p.BackfillTaskDetail = val +} func (p *Task) SetBaseInfo(val *common.BaseInfo) { p.BaseInfo = val } @@ -220,6 +237,7 @@ var fieldIDToName_Task = map[int16]string{ 7: "rule", 8: "task_config", 9: "task_detail", + 10: "backfill_task_detail", 100: "base_info", } @@ -251,6 +269,10 @@ func (p *Task) IsSetTaskDetail() bool { return p.TaskDetail != nil } +func (p *Task) IsSetBackfillTaskDetail() bool { + return p.BackfillTaskDetail != nil +} + func (p *Task) IsSetBaseInfo() bool { return p.BaseInfo != nil } @@ -349,6 +371,14 @@ func (p *Task) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 10: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField10(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 100: if fieldTypeId == thrift.STRUCT { if err = p.ReadField100(iprot); err != nil { @@ -487,6 +517,14 @@ func (p *Task) ReadField9(iprot thrift.TProtocol) error { p.TaskDetail = _field return nil } +func (p *Task) ReadField10(iprot thrift.TProtocol) error { + _field := NewTaskDetail() + if err := _field.Read(iprot); err != nil { + return err + } + p.BackfillTaskDetail = _field + return nil +} func (p *Task) ReadField100(iprot thrift.TProtocol) error { _field := common.NewBaseInfo() if err := _field.Read(iprot); err != nil { @@ -538,6 +576,10 @@ func (p *Task) Write(oprot thrift.TProtocol) (err error) { fieldId = 9 goto WriteFieldError } + if err = p.writeField10(oprot); err != nil { + fieldId = 10 + goto WriteFieldError + } if err = p.writeField100(oprot); err != nil { fieldId = 100 goto WriteFieldError @@ -718,6 +760,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 9 end error: ", p), err) } +func (p *Task) writeField10(oprot thrift.TProtocol) (err error) { + if p.IsSetBackfillTaskDetail() { + if err = oprot.WriteFieldBegin("backfill_task_detail", thrift.STRUCT, 10); err != nil { + goto WriteFieldBeginError + } + if err := p.BackfillTaskDetail.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) +} func (p *Task) writeField100(oprot thrift.TProtocol) (err error) { if p.IsSetBaseInfo() { if err = oprot.WriteFieldBegin("base_info", thrift.STRUCT, 100); err != nil { @@ -778,6 +838,9 @@ func (p *Task) DeepEqual(ano *Task) bool { if !p.Field9DeepEqual(ano.TaskDetail) { return false } + if !p.Field10DeepEqual(ano.BackfillTaskDetail) { + return false + } if !p.Field100DeepEqual(ano.BaseInfo) { return false } @@ -867,6 +930,13 @@ func (p *Task) Field9DeepEqual(src *TaskDetail) bool { } return true } +func (p *Task) Field10DeepEqual(src *TaskDetail) bool { + + if !p.BackfillTaskDetail.DeepEqual(src) { + return false + } + return true +} func (p *Task) Field100DeepEqual(src *common.BaseInfo) bool { if !p.BaseInfo.DeepEqual(src) { @@ -883,6 +953,8 @@ type Rule struct { Sampler *Sampler `thrift:"sampler,2,optional" frugal:"2,optional,Sampler" form:"sampler" json:"sampler,omitempty" query:"sampler"` // 生效时间窗口 EffectiveTime *EffectiveTime `thrift:"effective_time,3,optional" frugal:"3,optional,EffectiveTime" form:"effective_time" json:"effective_time,omitempty" query:"effective_time"` + // 历史数据生效时间窗口 + BackfillEffectiveTime *EffectiveTime `thrift:"backfill_effective_time,4,optional" frugal:"4,optional,EffectiveTime" form:"backfill_effective_time" json:"backfill_effective_time,omitempty" query:"backfill_effective_time"` } func NewRule() *Rule { @@ -927,6 +999,18 @@ func (p *Rule) GetEffectiveTime() (v *EffectiveTime) { } return p.EffectiveTime } + +var Rule_BackfillEffectiveTime_DEFAULT *EffectiveTime + +func (p *Rule) GetBackfillEffectiveTime() (v *EffectiveTime) { + if p == nil { + return + } + if !p.IsSetBackfillEffectiveTime() { + return Rule_BackfillEffectiveTime_DEFAULT + } + return p.BackfillEffectiveTime +} func (p *Rule) SetSpanFilters(val *filter.SpanFilterFields) { p.SpanFilters = val } @@ -936,11 +1020,15 @@ func (p *Rule) SetSampler(val *Sampler) { func (p *Rule) SetEffectiveTime(val *EffectiveTime) { p.EffectiveTime = val } +func (p *Rule) SetBackfillEffectiveTime(val *EffectiveTime) { + p.BackfillEffectiveTime = val +} var fieldIDToName_Rule = map[int16]string{ 1: "span_filters", 2: "sampler", 3: "effective_time", + 4: "backfill_effective_time", } func (p *Rule) IsSetSpanFilters() bool { @@ -955,6 +1043,10 @@ func (p *Rule) IsSetEffectiveTime() bool { return p.EffectiveTime != nil } +func (p *Rule) IsSetBackfillEffectiveTime() bool { + return p.BackfillEffectiveTime != nil +} + func (p *Rule) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -997,6 +1089,14 @@ func (p *Rule) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 4: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -1050,6 +1150,14 @@ func (p *Rule) ReadField3(iprot thrift.TProtocol) error { p.EffectiveTime = _field return nil } +func (p *Rule) ReadField4(iprot thrift.TProtocol) error { + _field := NewEffectiveTime() + if err := _field.Read(iprot); err != nil { + return err + } + p.BackfillEffectiveTime = _field + return nil +} func (p *Rule) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -1069,6 +1177,10 @@ func (p *Rule) Write(oprot thrift.TProtocol) (err error) { fieldId = 3 goto WriteFieldError } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -1141,6 +1253,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } +func (p *Rule) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetBackfillEffectiveTime() { + if err = oprot.WriteFieldBegin("backfill_effective_time", thrift.STRUCT, 4); err != nil { + goto WriteFieldBeginError + } + if err := p.BackfillEffectiveTime.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} func (p *Rule) String() string { if p == nil { @@ -1165,6 +1295,9 @@ func (p *Rule) DeepEqual(ano *Rule) bool { if !p.Field3DeepEqual(ano.EffectiveTime) { return false } + if !p.Field4DeepEqual(ano.BackfillEffectiveTime) { + return false + } return true } @@ -1189,6 +1322,13 @@ func (p *Rule) Field3DeepEqual(src *EffectiveTime) bool { } return true } +func (p *Rule) Field4DeepEqual(src *EffectiveTime) bool { + + if !p.BackfillEffectiveTime.DeepEqual(src) { + return false + } + return true +} type Sampler struct { // 采样率 @@ -2026,6 +2166,8 @@ func (p *EffectiveTime) Field2DeepEqual(src *int64) bool { type TaskConfig struct { // 配置的评测规则信息 AutoEvaluateConfigs []*AutoEvaluateConfig `thrift:"auto_evaluate_configs,1,optional" frugal:"1,optional,list" form:"auto_evaluate_configs" json:"auto_evaluate_configs,omitempty" query:"auto_evaluate_configs"` + // 配置的数据回流的数据集信息 + DataReflowConfig *DatasetConfig `thrift:"data_reflow_config,2,optional" frugal:"2,optional,DatasetConfig" form:"data_reflow_config" json:"data_reflow_config,omitempty" query:"data_reflow_config"` } func NewTaskConfig() *TaskConfig { @@ -2046,18 +2188,38 @@ func (p *TaskConfig) GetAutoEvaluateConfigs() (v []*AutoEvaluateConfig) { } return p.AutoEvaluateConfigs } + +var TaskConfig_DataReflowConfig_DEFAULT *DatasetConfig + +func (p *TaskConfig) GetDataReflowConfig() (v *DatasetConfig) { + if p == nil { + return + } + if !p.IsSetDataReflowConfig() { + return TaskConfig_DataReflowConfig_DEFAULT + } + return p.DataReflowConfig +} func (p *TaskConfig) SetAutoEvaluateConfigs(val []*AutoEvaluateConfig) { p.AutoEvaluateConfigs = val } +func (p *TaskConfig) SetDataReflowConfig(val *DatasetConfig) { + p.DataReflowConfig = val +} var fieldIDToName_TaskConfig = map[int16]string{ 1: "auto_evaluate_configs", + 2: "data_reflow_config", } func (p *TaskConfig) IsSetAutoEvaluateConfigs() bool { return p.AutoEvaluateConfigs != nil } +func (p *TaskConfig) IsSetDataReflowConfig() bool { + return p.DataReflowConfig != nil +} + func (p *TaskConfig) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -2084,6 +2246,14 @@ func (p *TaskConfig) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 2: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -2136,6 +2306,14 @@ func (p *TaskConfig) ReadField1(iprot thrift.TProtocol) error { p.AutoEvaluateConfigs = _field return nil } +func (p *TaskConfig) ReadField2(iprot thrift.TProtocol) error { + _field := NewDatasetConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.DataReflowConfig = _field + return nil +} func (p *TaskConfig) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -2147,6 +2325,10 @@ func (p *TaskConfig) Write(oprot thrift.TProtocol) (err error) { fieldId = 1 goto WriteFieldError } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -2191,6 +2373,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } +func (p *TaskConfig) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetDataReflowConfig() { + if err = oprot.WriteFieldBegin("data_reflow_config", thrift.STRUCT, 2); err != nil { + goto WriteFieldBeginError + } + if err := p.DataReflowConfig.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} func (p *TaskConfig) String() string { if p == nil { @@ -2209,6 +2409,9 @@ func (p *TaskConfig) DeepEqual(ano *TaskConfig) bool { if !p.Field1DeepEqual(ano.AutoEvaluateConfigs) { return false } + if !p.Field2DeepEqual(ano.DataReflowConfig) { + return false + } return true } @@ -2225,6 +2428,413 @@ func (p *TaskConfig) Field1DeepEqual(src []*AutoEvaluateConfig) bool { } return true } +func (p *TaskConfig) Field2DeepEqual(src *DatasetConfig) bool { + + if !p.DataReflowConfig.DeepEqual(src) { + return false + } + return true +} + +type DatasetConfig struct { + // 是否是新增数据集 + IsNewDataset bool `thrift:"is_new_dataset,1,required" frugal:"1,required,bool" form:"is_new_dataset,required" json:"is_new_dataset,required" query:"is_new_dataset,required"` + // 数据集id,新增数据集时可为空 + DatasetID *int64 `thrift:"dataset_id,2,optional" frugal:"2,optional,i64" json:"dataset_id" form:"dataset_id" query:"dataset_id"` + // 数据集名称,选择已有数据集时可为空 + DatasetName *string `thrift:"dataset_name,3,optional" frugal:"3,optional,string" form:"dataset_name" json:"dataset_name,omitempty" query:"dataset_name"` + // 数据集列数据schema + DatasetSchema *dataset.DatasetSchema `thrift:"dataset_schema,4,optional" frugal:"4,optional,dataset.DatasetSchema" form:"dataset_schema" json:"dataset_schema,omitempty" query:"dataset_schema"` +} + +func NewDatasetConfig() *DatasetConfig { + return &DatasetConfig{} +} + +func (p *DatasetConfig) InitDefault() { +} + +func (p *DatasetConfig) GetIsNewDataset() (v bool) { + if p != nil { + return p.IsNewDataset + } + return +} + +var DatasetConfig_DatasetID_DEFAULT int64 + +func (p *DatasetConfig) GetDatasetID() (v int64) { + if p == nil { + return + } + if !p.IsSetDatasetID() { + return DatasetConfig_DatasetID_DEFAULT + } + return *p.DatasetID +} + +var DatasetConfig_DatasetName_DEFAULT string + +func (p *DatasetConfig) GetDatasetName() (v string) { + if p == nil { + return + } + if !p.IsSetDatasetName() { + return DatasetConfig_DatasetName_DEFAULT + } + return *p.DatasetName +} + +var DatasetConfig_DatasetSchema_DEFAULT *dataset.DatasetSchema + +func (p *DatasetConfig) GetDatasetSchema() (v *dataset.DatasetSchema) { + if p == nil { + return + } + if !p.IsSetDatasetSchema() { + return DatasetConfig_DatasetSchema_DEFAULT + } + return p.DatasetSchema +} +func (p *DatasetConfig) SetIsNewDataset(val bool) { + p.IsNewDataset = val +} +func (p *DatasetConfig) SetDatasetID(val *int64) { + p.DatasetID = val +} +func (p *DatasetConfig) SetDatasetName(val *string) { + p.DatasetName = val +} +func (p *DatasetConfig) SetDatasetSchema(val *dataset.DatasetSchema) { + p.DatasetSchema = val +} + +var fieldIDToName_DatasetConfig = map[int16]string{ + 1: "is_new_dataset", + 2: "dataset_id", + 3: "dataset_name", + 4: "dataset_schema", +} + +func (p *DatasetConfig) IsSetDatasetID() bool { + return p.DatasetID != nil +} + +func (p *DatasetConfig) IsSetDatasetName() bool { + return p.DatasetName != nil +} + +func (p *DatasetConfig) IsSetDatasetSchema() bool { + return p.DatasetSchema != nil +} + +func (p *DatasetConfig) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetIsNewDataset bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.BOOL { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetIsNewDataset = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetIsNewDataset { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DatasetConfig[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_DatasetConfig[fieldId])) +} + +func (p *DatasetConfig) ReadField1(iprot thrift.TProtocol) error { + + var _field bool + if v, err := iprot.ReadBool(); err != nil { + return err + } else { + _field = v + } + p.IsNewDataset = _field + return nil +} +func (p *DatasetConfig) ReadField2(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.DatasetID = _field + return nil +} +func (p *DatasetConfig) ReadField3(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.DatasetName = _field + return nil +} +func (p *DatasetConfig) ReadField4(iprot thrift.TProtocol) error { + _field := dataset.NewDatasetSchema() + if err := _field.Read(iprot); err != nil { + return err + } + p.DatasetSchema = _field + return nil +} + +func (p *DatasetConfig) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("DatasetConfig"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *DatasetConfig) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("is_new_dataset", thrift.BOOL, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteBool(p.IsNewDataset); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *DatasetConfig) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetDatasetID() { + if err = oprot.WriteFieldBegin("dataset_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.DatasetID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *DatasetConfig) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetDatasetName() { + if err = oprot.WriteFieldBegin("dataset_name", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.DatasetName); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *DatasetConfig) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetDatasetSchema() { + if err = oprot.WriteFieldBegin("dataset_schema", thrift.STRUCT, 4); err != nil { + goto WriteFieldBeginError + } + if err := p.DatasetSchema.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} + +func (p *DatasetConfig) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("DatasetConfig(%+v)", *p) + +} + +func (p *DatasetConfig) DeepEqual(ano *DatasetConfig) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.IsNewDataset) { + return false + } + if !p.Field2DeepEqual(ano.DatasetID) { + return false + } + if !p.Field3DeepEqual(ano.DatasetName) { + return false + } + if !p.Field4DeepEqual(ano.DatasetSchema) { + return false + } + return true +} + +func (p *DatasetConfig) Field1DeepEqual(src bool) bool { + + if p.IsNewDataset != src { + return false + } + return true +} +func (p *DatasetConfig) Field2DeepEqual(src *int64) bool { + + if p.DatasetID == src { + return true + } else if p.DatasetID == nil || src == nil { + return false + } + if *p.DatasetID != *src { + return false + } + return true +} +func (p *DatasetConfig) Field3DeepEqual(src *string) bool { + + if p.DatasetName == src { + return true + } else if p.DatasetName == nil || src == nil { + return false + } + if strings.Compare(*p.DatasetName, *src) != 0 { + return false + } + return true +} +func (p *DatasetConfig) Field4DeepEqual(src *dataset.DatasetSchema) bool { + + if !p.DatasetSchema.DeepEqual(src) { + return false + } + return true +} type AutoEvaluateConfig struct { EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go index b035038d5..c4455227d 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go @@ -37,6 +37,11 @@ func (p *Task) IsValid() error { return fmt.Errorf("field TaskDetail not valid, %w", err) } } + if p.BackfillTaskDetail != nil { + if err := p.BackfillTaskDetail.IsValid(); err != nil { + return fmt.Errorf("field BackfillTaskDetail not valid, %w", err) + } + } if p.BaseInfo != nil { if err := p.BaseInfo.IsValid(); err != nil { return fmt.Errorf("field BaseInfo not valid, %w", err) @@ -60,6 +65,11 @@ func (p *Rule) IsValid() error { return fmt.Errorf("field EffectiveTime not valid, %w", err) } } + if p.BackfillEffectiveTime != nil { + if err := p.BackfillEffectiveTime.IsValid(); err != nil { + return fmt.Errorf("field BackfillEffectiveTime not valid, %w", err) + } + } return nil } func (p *Sampler) IsValid() error { @@ -69,6 +79,20 @@ func (p *EffectiveTime) IsValid() error { return nil } func (p *TaskConfig) IsValid() error { + if p.DataReflowConfig != nil { + if err := p.DataReflowConfig.IsValid(); err != nil { + return fmt.Errorf("field DataReflowConfig not valid, %w", err) + } + } + return nil +} +func (p *DatasetConfig) IsValid() error { + if p.DatasetSchema == nil { + return fmt.Errorf("field DatasetSchema not_nil rule failed") + } + if err := p.DatasetSchema.IsValid(); err != nil { + return fmt.Errorf("field DatasetSchema not valid, %w", err) + } return nil } func (p *AutoEvaluateConfig) IsValid() error { diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 55690b337..5dd359619 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -31,6 +31,7 @@ struct Task { 7: optional Rule rule // 规则 8: optional TaskConfig task_config // 配置 9: optional TaskDetail task_detail // 任务状态详情 + 10: optional TaskDetail backfill_task_detail // 任务历史数据执行详情 100: optional common.BaseInfo base_info // 基础信息 } @@ -40,6 +41,7 @@ struct Rule { 1: optional filter.SpanFilterFields span_filters // Span 过滤条件 2: optional Sampler sampler // 采样配置 3: optional EffectiveTime effective_time // 生效时间窗口 + 4: optional EffectiveTime backfill_effective_time // 历史数据生效时间窗口 } struct Sampler { @@ -60,6 +62,14 @@ struct EffectiveTime { // TaskConfig struct TaskConfig { 1: optional list auto_evaluate_configs // 配置的评测规则信息 + 2: optional DatasetConfig data_reflow_config // 配置的数据回流的数据集信息 +} + +struct DatasetConfig { + 1: required bool is_new_dataset // 是否是新增数据集 + 2: optional i64 dataset_id (api.js_conv="true", go.tag='json:"dataset_id"') // 数据集id,新增数据集时可为空 + 3: optional string dataset_name // 数据集名称,选择已有数据集时可为空 + 4: optional export_dataset.DatasetSchema dataset_schema (vt.not_nil="true") // 数据集列数据schema } struct AutoEvaluateConfig { From 6bc3410c5eb0a16e7041f754bfb758c1dd667473 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 4 Sep 2025 14:39:31 +0800 Subject: [PATCH 066/462] feat:add auth entity idl --- backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go | 2 ++ idl/thrift/coze/loop/foundation/domain/auth.thrift | 1 + 2 files changed, 3 insertions(+) diff --git a/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go b/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go index 801faa54f..c79d5c6e9 100644 --- a/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go +++ b/backend/kitex_gen/coze/loop/foundation/domain/auth/auth.go @@ -28,6 +28,8 @@ const ( AuthEntityTypeModel = "Model" AuthEntityTypeAnnotation = "Annotation" + + AuthEntityTypeTraceTask = "Task" ) // 主体类型 diff --git a/idl/thrift/coze/loop/foundation/domain/auth.thrift b/idl/thrift/coze/loop/foundation/domain/auth.thrift index 201145b28..6abcc8e07 100644 --- a/idl/thrift/coze/loop/foundation/domain/auth.thrift +++ b/idl/thrift/coze/loop/foundation/domain/auth.thrift @@ -45,6 +45,7 @@ const AuthEntityType AuthEntityType_EvaluationTarget = "EvaluationTarget" const AuthEntityType AuthEntityType_TraceView = "TraceView" const AuthEntityType AuthEntityType_Model = "Model" const AuthEntityType AuthEntityType_Annotation = "Annotation" +const AuthEntityType AuthEntityType_TraceTask = "Task" // 鉴权资源,客体 struct AuthEntity { From 1fcdba8dc01fda3b516f6c97c8da9c69754909bf Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 4 Sep 2025 20:07:14 +0800 Subject: [PATCH 067/462] feat:fix task idl --- .../loop/observability/domain/task/k-task.go | 129 ++++++++----- .../loop/observability/domain/task/task.go | 178 ++++++++++-------- .../domain/task/task_validator.go | 6 + .../loop/observability/domain/task.thrift | 8 +- 4 files changed, 193 insertions(+), 128 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index 24e250048..3f1efca83 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -1741,7 +1741,6 @@ func (p *DatasetConfig) FastRead(buf []byte) (int, error) { var l int var fieldTypeId thrift.TType var fieldId int16 - var issetIsNewDataset bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -1753,13 +1752,12 @@ func (p *DatasetConfig) FastRead(buf []byte) (int, error) { } switch fieldId { case 1: - if fieldTypeId == thrift.BOOL { + if fieldTypeId == thrift.I64 { l, err = p.FastReadField1(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetIsNewDataset = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -1768,7 +1766,7 @@ func (p *DatasetConfig) FastRead(buf []byte) (int, error) { } } case 2: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { l, err = p.FastReadField2(buf[offset:]) offset += l if err != nil { @@ -1782,7 +1780,7 @@ func (p *DatasetConfig) FastRead(buf []byte) (int, error) { } } case 3: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField3(buf[offset:]) offset += l if err != nil { @@ -1796,7 +1794,7 @@ func (p *DatasetConfig) FastRead(buf []byte) (int, error) { } } case 4: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.LIST { l, err = p.FastReadField4(buf[offset:]) offset += l if err != nil { @@ -1818,10 +1816,6 @@ func (p *DatasetConfig) FastRead(buf []byte) (int, error) { } } - if !issetIsNewDataset { - fieldId = 1 - goto RequiredFieldNotSetError - } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) @@ -1829,27 +1823,11 @@ ReadFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DatasetConfig[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) -RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_DatasetConfig[fieldId])) } func (p *DatasetConfig) FastReadField1(buf []byte) (int, error) { offset := 0 - var _field bool - if v, l, err := thrift.Binary.ReadBool(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - _field = v - } - p.IsNewDataset = _field - return offset, nil -} - -func (p *DatasetConfig) FastReadField2(buf []byte) (int, error) { - offset := 0 - var _field *int64 if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err @@ -1861,7 +1839,7 @@ func (p *DatasetConfig) FastReadField2(buf []byte) (int, error) { return offset, nil } -func (p *DatasetConfig) FastReadField3(buf []byte) (int, error) { +func (p *DatasetConfig) FastReadField2(buf []byte) (int, error) { offset := 0 var _field *string @@ -1875,7 +1853,7 @@ func (p *DatasetConfig) FastReadField3(buf []byte) (int, error) { return offset, nil } -func (p *DatasetConfig) FastReadField4(buf []byte) (int, error) { +func (p *DatasetConfig) FastReadField3(buf []byte) (int, error) { offset := 0 _field := dataset.NewDatasetSchema() if l, err := _field.FastRead(buf[offset:]); err != nil { @@ -1887,6 +1865,31 @@ func (p *DatasetConfig) FastReadField4(buf []byte) (int, error) { return offset, nil } +func (p *DatasetConfig) FastReadField4(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*dataset.FieldMapping, 0, size) + values := make([]dataset.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.FieldMappings = _field + return offset, nil +} + func (p *DatasetConfig) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -1917,68 +1920,83 @@ func (p *DatasetConfig) BLength() int { func (p *DatasetConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.BOOL, 1) - offset += thrift.Binary.WriteBool(buf[offset:], p.IsNewDataset) + if p.IsSetDatasetID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], *p.DatasetID) + } return offset } func (p *DatasetConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetDatasetID() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) - offset += thrift.Binary.WriteI64(buf[offset:], *p.DatasetID) + if p.IsSetDatasetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.DatasetName) } return offset } func (p *DatasetConfig) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetDatasetName() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.DatasetName) + if p.IsSetDatasetSchema() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 3) + offset += p.DatasetSchema.FastWriteNocopy(buf[offset:], w) } return offset } func (p *DatasetConfig) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetDatasetSchema() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 4) - offset += p.DatasetSchema.FastWriteNocopy(buf[offset:], w) + if p.IsSetFieldMappings() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 4) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.FieldMappings { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) } return offset } func (p *DatasetConfig) field1Length() int { l := 0 - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.BoolLength() + if p.IsSetDatasetID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } return l } func (p *DatasetConfig) field2Length() int { l := 0 - if p.IsSetDatasetID() { + if p.IsSetDatasetName() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() + l += thrift.Binary.StringLengthNocopy(*p.DatasetName) } return l } func (p *DatasetConfig) field3Length() int { l := 0 - if p.IsSetDatasetName() { + if p.IsSetDatasetSchema() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.DatasetName) + l += p.DatasetSchema.BLength() } return l } func (p *DatasetConfig) field4Length() int { l := 0 - if p.IsSetDatasetSchema() { + if p.IsSetFieldMappings() { l += thrift.Binary.FieldBeginLength() - l += p.DatasetSchema.BLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.FieldMappings { + _ = v + l += v.BLength() + } } return l } @@ -1989,8 +2007,6 @@ func (p *DatasetConfig) DeepCopy(s interface{}) error { return fmt.Errorf("%T's type not matched %T", s, p) } - p.IsNewDataset = src.IsNewDataset - if src.DatasetID != nil { tmp := *src.DatasetID p.DatasetID = &tmp @@ -2013,6 +2029,21 @@ func (p *DatasetConfig) DeepCopy(s interface{}) error { } p.DatasetSchema = _datasetSchema + if src.FieldMappings != nil { + p.FieldMappings = make([]*dataset.FieldMapping, 0, len(src.FieldMappings)) + for _, elem := range src.FieldMappings { + var _elem *dataset.FieldMapping + if elem != nil { + _elem = &dataset.FieldMapping{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.FieldMappings = append(p.FieldMappings, _elem) + } + } + return nil } diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index c48b7919b..425139629 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -2437,14 +2437,13 @@ func (p *TaskConfig) Field2DeepEqual(src *DatasetConfig) bool { } type DatasetConfig struct { - // 是否是新增数据集 - IsNewDataset bool `thrift:"is_new_dataset,1,required" frugal:"1,required,bool" form:"is_new_dataset,required" json:"is_new_dataset,required" query:"is_new_dataset,required"` // 数据集id,新增数据集时可为空 - DatasetID *int64 `thrift:"dataset_id,2,optional" frugal:"2,optional,i64" json:"dataset_id" form:"dataset_id" query:"dataset_id"` - // 数据集名称,选择已有数据集时可为空 - DatasetName *string `thrift:"dataset_name,3,optional" frugal:"3,optional,string" form:"dataset_name" json:"dataset_name,omitempty" query:"dataset_name"` + DatasetID *int64 `thrift:"dataset_id,1,optional" frugal:"1,optional,i64" json:"dataset_id" form:"dataset_id" query:"dataset_id"` + // 数据集名称 + DatasetName *string `thrift:"dataset_name,2,optional" frugal:"2,optional,string" form:"dataset_name" json:"dataset_name,omitempty" query:"dataset_name"` // 数据集列数据schema - DatasetSchema *dataset.DatasetSchema `thrift:"dataset_schema,4,optional" frugal:"4,optional,dataset.DatasetSchema" form:"dataset_schema" json:"dataset_schema,omitempty" query:"dataset_schema"` + DatasetSchema *dataset.DatasetSchema `thrift:"dataset_schema,3,optional" frugal:"3,optional,dataset.DatasetSchema" form:"dataset_schema" json:"dataset_schema,omitempty" query:"dataset_schema"` + FieldMappings []*dataset.FieldMapping `thrift:"field_mappings,4,optional" frugal:"4,optional,list" form:"field_mappings" json:"field_mappings,omitempty"` } func NewDatasetConfig() *DatasetConfig { @@ -2454,13 +2453,6 @@ func NewDatasetConfig() *DatasetConfig { func (p *DatasetConfig) InitDefault() { } -func (p *DatasetConfig) GetIsNewDataset() (v bool) { - if p != nil { - return p.IsNewDataset - } - return -} - var DatasetConfig_DatasetID_DEFAULT int64 func (p *DatasetConfig) GetDatasetID() (v int64) { @@ -2496,8 +2488,17 @@ func (p *DatasetConfig) GetDatasetSchema() (v *dataset.DatasetSchema) { } return p.DatasetSchema } -func (p *DatasetConfig) SetIsNewDataset(val bool) { - p.IsNewDataset = val + +var DatasetConfig_FieldMappings_DEFAULT []*dataset.FieldMapping + +func (p *DatasetConfig) GetFieldMappings() (v []*dataset.FieldMapping) { + if p == nil { + return + } + if !p.IsSetFieldMappings() { + return DatasetConfig_FieldMappings_DEFAULT + } + return p.FieldMappings } func (p *DatasetConfig) SetDatasetID(val *int64) { p.DatasetID = val @@ -2508,12 +2509,15 @@ func (p *DatasetConfig) SetDatasetName(val *string) { func (p *DatasetConfig) SetDatasetSchema(val *dataset.DatasetSchema) { p.DatasetSchema = val } +func (p *DatasetConfig) SetFieldMappings(val []*dataset.FieldMapping) { + p.FieldMappings = val +} var fieldIDToName_DatasetConfig = map[int16]string{ - 1: "is_new_dataset", - 2: "dataset_id", - 3: "dataset_name", - 4: "dataset_schema", + 1: "dataset_id", + 2: "dataset_name", + 3: "dataset_schema", + 4: "field_mappings", } func (p *DatasetConfig) IsSetDatasetID() bool { @@ -2528,10 +2532,13 @@ func (p *DatasetConfig) IsSetDatasetSchema() bool { return p.DatasetSchema != nil } +func (p *DatasetConfig) IsSetFieldMappings() bool { + return p.FieldMappings != nil +} + func (p *DatasetConfig) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetIsNewDataset bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -2548,16 +2555,15 @@ func (p *DatasetConfig) Read(iprot thrift.TProtocol) (err error) { switch fieldId { case 1: - if fieldTypeId == thrift.BOOL { + if fieldTypeId == thrift.I64 { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetIsNewDataset = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 2: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } @@ -2565,7 +2571,7 @@ func (p *DatasetConfig) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 3: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.STRUCT { if err = p.ReadField3(iprot); err != nil { goto ReadFieldError } @@ -2573,7 +2579,7 @@ func (p *DatasetConfig) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 4: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.LIST { if err = p.ReadField4(iprot); err != nil { goto ReadFieldError } @@ -2593,10 +2599,6 @@ func (p *DatasetConfig) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } - if !issetIsNewDataset { - fieldId = 1 - goto RequiredFieldNotSetError - } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) @@ -2611,23 +2613,10 @@ ReadFieldEndError: return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_DatasetConfig[fieldId])) } func (p *DatasetConfig) ReadField1(iprot thrift.TProtocol) error { - var _field bool - if v, err := iprot.ReadBool(); err != nil { - return err - } else { - _field = v - } - p.IsNewDataset = _field - return nil -} -func (p *DatasetConfig) ReadField2(iprot thrift.TProtocol) error { - var _field *int64 if v, err := iprot.ReadI64(); err != nil { return err @@ -2637,7 +2626,7 @@ func (p *DatasetConfig) ReadField2(iprot thrift.TProtocol) error { p.DatasetID = _field return nil } -func (p *DatasetConfig) ReadField3(iprot thrift.TProtocol) error { +func (p *DatasetConfig) ReadField2(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -2648,7 +2637,7 @@ func (p *DatasetConfig) ReadField3(iprot thrift.TProtocol) error { p.DatasetName = _field return nil } -func (p *DatasetConfig) ReadField4(iprot thrift.TProtocol) error { +func (p *DatasetConfig) ReadField3(iprot thrift.TProtocol) error { _field := dataset.NewDatasetSchema() if err := _field.Read(iprot); err != nil { return err @@ -2656,6 +2645,29 @@ func (p *DatasetConfig) ReadField4(iprot thrift.TProtocol) error { p.DatasetSchema = _field return nil } +func (p *DatasetConfig) ReadField4(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*dataset.FieldMapping, 0, size) + values := make([]dataset.FieldMapping, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FieldMappings = _field + return nil +} func (p *DatasetConfig) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -2698,14 +2710,16 @@ WriteStructEndError: } func (p *DatasetConfig) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("is_new_dataset", thrift.BOOL, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteBool(p.IsNewDataset); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError + if p.IsSetDatasetID() { + if err = oprot.WriteFieldBegin("dataset_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.DatasetID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -2714,11 +2728,11 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } func (p *DatasetConfig) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetDatasetID() { - if err = oprot.WriteFieldBegin("dataset_id", thrift.I64, 2); err != nil { + if p.IsSetDatasetName() { + if err = oprot.WriteFieldBegin("dataset_name", thrift.STRING, 2); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(*p.DatasetID); err != nil { + if err := oprot.WriteString(*p.DatasetName); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -2732,11 +2746,11 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } func (p *DatasetConfig) writeField3(oprot thrift.TProtocol) (err error) { - if p.IsSetDatasetName() { - if err = oprot.WriteFieldBegin("dataset_name", thrift.STRING, 3); err != nil { + if p.IsSetDatasetSchema() { + if err = oprot.WriteFieldBegin("dataset_schema", thrift.STRUCT, 3); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(*p.DatasetName); err != nil { + if err := p.DatasetSchema.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -2750,11 +2764,19 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } func (p *DatasetConfig) writeField4(oprot thrift.TProtocol) (err error) { - if p.IsSetDatasetSchema() { - if err = oprot.WriteFieldBegin("dataset_schema", thrift.STRUCT, 4); err != nil { + if p.IsSetFieldMappings() { + if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 4); err != nil { goto WriteFieldBeginError } - if err := p.DatasetSchema.Write(oprot); err != nil { + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { + return err + } + for _, v := range p.FieldMappings { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -2782,29 +2804,22 @@ func (p *DatasetConfig) DeepEqual(ano *DatasetConfig) bool { } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.IsNewDataset) { + if !p.Field1DeepEqual(ano.DatasetID) { return false } - if !p.Field2DeepEqual(ano.DatasetID) { + if !p.Field2DeepEqual(ano.DatasetName) { return false } - if !p.Field3DeepEqual(ano.DatasetName) { + if !p.Field3DeepEqual(ano.DatasetSchema) { return false } - if !p.Field4DeepEqual(ano.DatasetSchema) { + if !p.Field4DeepEqual(ano.FieldMappings) { return false } return true } -func (p *DatasetConfig) Field1DeepEqual(src bool) bool { - - if p.IsNewDataset != src { - return false - } - return true -} -func (p *DatasetConfig) Field2DeepEqual(src *int64) bool { +func (p *DatasetConfig) Field1DeepEqual(src *int64) bool { if p.DatasetID == src { return true @@ -2816,7 +2831,7 @@ func (p *DatasetConfig) Field2DeepEqual(src *int64) bool { } return true } -func (p *DatasetConfig) Field3DeepEqual(src *string) bool { +func (p *DatasetConfig) Field2DeepEqual(src *string) bool { if p.DatasetName == src { return true @@ -2828,13 +2843,26 @@ func (p *DatasetConfig) Field3DeepEqual(src *string) bool { } return true } -func (p *DatasetConfig) Field4DeepEqual(src *dataset.DatasetSchema) bool { +func (p *DatasetConfig) Field3DeepEqual(src *dataset.DatasetSchema) bool { if !p.DatasetSchema.DeepEqual(src) { return false } return true } +func (p *DatasetConfig) Field4DeepEqual(src []*dataset.FieldMapping) bool { + + if len(p.FieldMappings) != len(src) { + return false + } + for i, v := range p.FieldMappings { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} type AutoEvaluateConfig struct { EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go index c4455227d..8533afa65 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go @@ -93,6 +93,12 @@ func (p *DatasetConfig) IsValid() error { if err := p.DatasetSchema.IsValid(); err != nil { return fmt.Errorf("field DatasetSchema not valid, %w", err) } + if len(p.FieldMappings) < int(1) { + return fmt.Errorf("field FieldMappings MinLen rule failed, current value: %v", p.FieldMappings) + } + if len(p.FieldMappings) > int(100) { + return fmt.Errorf("field FieldMappings MaxLen rule failed, current value: %v", p.FieldMappings) + } return nil } func (p *AutoEvaluateConfig) IsValid() error { diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 5dd359619..97898c2e4 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -66,10 +66,10 @@ struct TaskConfig { } struct DatasetConfig { - 1: required bool is_new_dataset // 是否是新增数据集 - 2: optional i64 dataset_id (api.js_conv="true", go.tag='json:"dataset_id"') // 数据集id,新增数据集时可为空 - 3: optional string dataset_name // 数据集名称,选择已有数据集时可为空 - 4: optional export_dataset.DatasetSchema dataset_schema (vt.not_nil="true") // 数据集列数据schema + 1: optional i64 dataset_id (api.js_conv="true", go.tag='json:"dataset_id"') // 数据集id,新增数据集时可为空 + 2: optional string dataset_name // 数据集名称 + 3: optional export_dataset.DatasetSchema dataset_schema (vt.not_nil="true") // 数据集列数据schema + 4: optional list field_mappings (api.body="field_mappings", vt.min_size="1", vt.max_size="100") } struct AutoEvaluateConfig { From 3682be610911a12cf9adbfc7b135a1512e54df2a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 5 Sep 2025 14:17:50 +0800 Subject: [PATCH 068/462] feat:gorm gen auto_task_run --- .../mysql/gorm_gen/model/auto_task_run.gen.go | 16 + .../mysql/gorm_gen/query/auto_task_run.gen.go | 327 ++++++++++++++++++ .../infra/repo/mysql/gorm_gen/query/gen.go | 36 +- backend/script/gorm_gen/generate.go | 2 + 4 files changed, 366 insertions(+), 15 deletions(-) create mode 100644 backend/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go create mode 100644 backend/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go new file mode 100644 index 000000000..38c2d6123 --- /dev/null +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go @@ -0,0 +1,16 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +const TableNameObservabilityTaskRun = "auto_task_run" + +// ObservabilityTaskRun mapped from table +type ObservabilityTaskRun struct { +} + +// TableName ObservabilityTaskRun's table name +func (*ObservabilityTaskRun) TableName() string { + return TableNameObservabilityTaskRun +} diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go new file mode 100644 index 000000000..f7a6cd2c0 --- /dev/null +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go @@ -0,0 +1,327 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" +) + +func newObservabilityTaskRun(db *gorm.DB, opts ...gen.DOOption) observabilityTaskRun { + _observabilityTaskRun := observabilityTaskRun{} + + _observabilityTaskRun.observabilityTaskRunDo.UseDB(db, opts...) + _observabilityTaskRun.observabilityTaskRunDo.UseModel(&model.ObservabilityTaskRun{}) + + tableName := _observabilityTaskRun.observabilityTaskRunDo.TableName() + _observabilityTaskRun.ALL = field.NewAsterisk(tableName) + + _observabilityTaskRun.fillFieldMap() + + return _observabilityTaskRun +} + +type observabilityTaskRun struct { + observabilityTaskRunDo observabilityTaskRunDo + + ALL field.Asterisk + + fieldMap map[string]field.Expr +} + +func (o observabilityTaskRun) Table(newTableName string) *observabilityTaskRun { + o.observabilityTaskRunDo.UseTable(newTableName) + return o.updateTableName(newTableName) +} + +func (o observabilityTaskRun) As(alias string) *observabilityTaskRun { + o.observabilityTaskRunDo.DO = *(o.observabilityTaskRunDo.As(alias).(*gen.DO)) + return o.updateTableName(alias) +} + +func (o *observabilityTaskRun) updateTableName(table string) *observabilityTaskRun { + o.ALL = field.NewAsterisk(table) + + o.fillFieldMap() + + return o +} + +func (o *observabilityTaskRun) WithContext(ctx context.Context) *observabilityTaskRunDo { + return o.observabilityTaskRunDo.WithContext(ctx) +} + +func (o observabilityTaskRun) TableName() string { return o.observabilityTaskRunDo.TableName() } + +func (o observabilityTaskRun) Alias() string { return o.observabilityTaskRunDo.Alias() } + +func (o observabilityTaskRun) Columns(cols ...field.Expr) gen.Columns { + return o.observabilityTaskRunDo.Columns(cols...) +} + +func (o *observabilityTaskRun) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := o.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (o *observabilityTaskRun) fillFieldMap() { + o.fieldMap = make(map[string]field.Expr, 0) +} + +func (o observabilityTaskRun) clone(db *gorm.DB) observabilityTaskRun { + o.observabilityTaskRunDo.ReplaceConnPool(db.Statement.ConnPool) + return o +} + +func (o observabilityTaskRun) replaceDB(db *gorm.DB) observabilityTaskRun { + o.observabilityTaskRunDo.ReplaceDB(db) + return o +} + +type observabilityTaskRunDo struct{ gen.DO } + +func (o observabilityTaskRunDo) Debug() *observabilityTaskRunDo { + return o.withDO(o.DO.Debug()) +} + +func (o observabilityTaskRunDo) WithContext(ctx context.Context) *observabilityTaskRunDo { + return o.withDO(o.DO.WithContext(ctx)) +} + +func (o observabilityTaskRunDo) ReadDB() *observabilityTaskRunDo { + return o.Clauses(dbresolver.Read) +} + +func (o observabilityTaskRunDo) WriteDB() *observabilityTaskRunDo { + return o.Clauses(dbresolver.Write) +} + +func (o observabilityTaskRunDo) Session(config *gorm.Session) *observabilityTaskRunDo { + return o.withDO(o.DO.Session(config)) +} + +func (o observabilityTaskRunDo) Clauses(conds ...clause.Expression) *observabilityTaskRunDo { + return o.withDO(o.DO.Clauses(conds...)) +} + +func (o observabilityTaskRunDo) Returning(value interface{}, columns ...string) *observabilityTaskRunDo { + return o.withDO(o.DO.Returning(value, columns...)) +} + +func (o observabilityTaskRunDo) Not(conds ...gen.Condition) *observabilityTaskRunDo { + return o.withDO(o.DO.Not(conds...)) +} + +func (o observabilityTaskRunDo) Or(conds ...gen.Condition) *observabilityTaskRunDo { + return o.withDO(o.DO.Or(conds...)) +} + +func (o observabilityTaskRunDo) Select(conds ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Select(conds...)) +} + +func (o observabilityTaskRunDo) Where(conds ...gen.Condition) *observabilityTaskRunDo { + return o.withDO(o.DO.Where(conds...)) +} + +func (o observabilityTaskRunDo) Order(conds ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Order(conds...)) +} + +func (o observabilityTaskRunDo) Distinct(cols ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Distinct(cols...)) +} + +func (o observabilityTaskRunDo) Omit(cols ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Omit(cols...)) +} + +func (o observabilityTaskRunDo) Join(table schema.Tabler, on ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Join(table, on...)) +} + +func (o observabilityTaskRunDo) LeftJoin(table schema.Tabler, on ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.LeftJoin(table, on...)) +} + +func (o observabilityTaskRunDo) RightJoin(table schema.Tabler, on ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.RightJoin(table, on...)) +} + +func (o observabilityTaskRunDo) Group(cols ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Group(cols...)) +} + +func (o observabilityTaskRunDo) Having(conds ...gen.Condition) *observabilityTaskRunDo { + return o.withDO(o.DO.Having(conds...)) +} + +func (o observabilityTaskRunDo) Limit(limit int) *observabilityTaskRunDo { + return o.withDO(o.DO.Limit(limit)) +} + +func (o observabilityTaskRunDo) Offset(offset int) *observabilityTaskRunDo { + return o.withDO(o.DO.Offset(offset)) +} + +func (o observabilityTaskRunDo) Scopes(funcs ...func(gen.Dao) gen.Dao) *observabilityTaskRunDo { + return o.withDO(o.DO.Scopes(funcs...)) +} + +func (o observabilityTaskRunDo) Unscoped() *observabilityTaskRunDo { + return o.withDO(o.DO.Unscoped()) +} + +func (o observabilityTaskRunDo) Create(values ...*model.ObservabilityTaskRun) error { + if len(values) == 0 { + return nil + } + return o.DO.Create(values) +} + +func (o observabilityTaskRunDo) CreateInBatches(values []*model.ObservabilityTaskRun, batchSize int) error { + return o.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (o observabilityTaskRunDo) Save(values ...*model.ObservabilityTaskRun) error { + if len(values) == 0 { + return nil + } + return o.DO.Save(values) +} + +func (o observabilityTaskRunDo) First() (*model.ObservabilityTaskRun, error) { + if result, err := o.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTaskRun), nil + } +} + +func (o observabilityTaskRunDo) Take() (*model.ObservabilityTaskRun, error) { + if result, err := o.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTaskRun), nil + } +} + +func (o observabilityTaskRunDo) Last() (*model.ObservabilityTaskRun, error) { + if result, err := o.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTaskRun), nil + } +} + +func (o observabilityTaskRunDo) Find() ([]*model.ObservabilityTaskRun, error) { + result, err := o.DO.Find() + return result.([]*model.ObservabilityTaskRun), err +} + +func (o observabilityTaskRunDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ObservabilityTaskRun, err error) { + buf := make([]*model.ObservabilityTaskRun, 0, batchSize) + err = o.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (o observabilityTaskRunDo) FindInBatches(result *[]*model.ObservabilityTaskRun, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return o.DO.FindInBatches(result, batchSize, fc) +} + +func (o observabilityTaskRunDo) Attrs(attrs ...field.AssignExpr) *observabilityTaskRunDo { + return o.withDO(o.DO.Attrs(attrs...)) +} + +func (o observabilityTaskRunDo) Assign(attrs ...field.AssignExpr) *observabilityTaskRunDo { + return o.withDO(o.DO.Assign(attrs...)) +} + +func (o observabilityTaskRunDo) Joins(fields ...field.RelationField) *observabilityTaskRunDo { + for _, _f := range fields { + o = *o.withDO(o.DO.Joins(_f)) + } + return &o +} + +func (o observabilityTaskRunDo) Preload(fields ...field.RelationField) *observabilityTaskRunDo { + for _, _f := range fields { + o = *o.withDO(o.DO.Preload(_f)) + } + return &o +} + +func (o observabilityTaskRunDo) FirstOrInit() (*model.ObservabilityTaskRun, error) { + if result, err := o.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTaskRun), nil + } +} + +func (o observabilityTaskRunDo) FirstOrCreate() (*model.ObservabilityTaskRun, error) { + if result, err := o.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTaskRun), nil + } +} + +func (o observabilityTaskRunDo) FindByPage(offset int, limit int) (result []*model.ObservabilityTaskRun, count int64, err error) { + result, err = o.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = o.Offset(-1).Limit(-1).Count() + return +} + +func (o observabilityTaskRunDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = o.Count() + if err != nil { + return + } + + err = o.Offset(offset).Limit(limit).Scan(result) + return +} + +func (o observabilityTaskRunDo) Scan(result interface{}) (err error) { + return o.DO.Scan(result) +} + +func (o observabilityTaskRunDo) Delete(models ...*model.ObservabilityTaskRun) (result gen.ResultInfo, err error) { + return o.DO.Delete(models) +} + +func (o *observabilityTaskRunDo) withDO(do gen.Dao) *observabilityTaskRunDo { + o.DO = *do.(*gen.DO) + return o +} diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/gen.go index 915518fab..647547ef5 100644 --- a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/gen.go +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/gen.go @@ -17,26 +17,29 @@ import ( func Use(db *gorm.DB, opts ...gen.DOOption) *Query { return &Query{ - db: db, - ObservabilityTask: newObservabilityTask(db, opts...), - ObservabilityView: newObservabilityView(db, opts...), + db: db, + ObservabilityTask: newObservabilityTask(db, opts...), + ObservabilityTaskRun: newObservabilityTaskRun(db, opts...), + ObservabilityView: newObservabilityView(db, opts...), } } type Query struct { db *gorm.DB - ObservabilityTask observabilityTask - ObservabilityView observabilityView + ObservabilityTask observabilityTask + ObservabilityTaskRun observabilityTaskRun + ObservabilityView observabilityView } func (q *Query) Available() bool { return q.db != nil } func (q *Query) clone(db *gorm.DB) *Query { return &Query{ - db: db, - ObservabilityTask: q.ObservabilityTask.clone(db), - ObservabilityView: q.ObservabilityView.clone(db), + db: db, + ObservabilityTask: q.ObservabilityTask.clone(db), + ObservabilityTaskRun: q.ObservabilityTaskRun.clone(db), + ObservabilityView: q.ObservabilityView.clone(db), } } @@ -50,21 +53,24 @@ func (q *Query) WriteDB() *Query { func (q *Query) ReplaceDB(db *gorm.DB) *Query { return &Query{ - db: db, - ObservabilityTask: q.ObservabilityTask.replaceDB(db), - ObservabilityView: q.ObservabilityView.replaceDB(db), + db: db, + ObservabilityTask: q.ObservabilityTask.replaceDB(db), + ObservabilityTaskRun: q.ObservabilityTaskRun.replaceDB(db), + ObservabilityView: q.ObservabilityView.replaceDB(db), } } type queryCtx struct { - ObservabilityTask *observabilityTaskDo - ObservabilityView *observabilityViewDo + ObservabilityTask *observabilityTaskDo + ObservabilityTaskRun *observabilityTaskRunDo + ObservabilityView *observabilityViewDo } func (q *Query) WithContext(ctx context.Context) *queryCtx { return &queryCtx{ - ObservabilityTask: q.ObservabilityTask.WithContext(ctx), - ObservabilityView: q.ObservabilityView.WithContext(ctx), + ObservabilityTask: q.ObservabilityTask.WithContext(ctx), + ObservabilityTaskRun: q.ObservabilityTaskRun.WithContext(ctx), + ObservabilityView: q.ObservabilityView.WithContext(ctx), } } diff --git a/backend/script/gorm_gen/generate.go b/backend/script/gorm_gen/generate.go index c028c0d9c..9d094d794 100644 --- a/backend/script/gorm_gen/generate.go +++ b/backend/script/gorm_gen/generate.go @@ -244,9 +244,11 @@ func generateForObservability(db *gorm.DB) { // 为 observability_view 表添加软删除字段 observabilityView := g.GenerateModelAs("observability_view", "ObservabilityView") observabilityTask := g.GenerateModelAs("task", "ObservabilityTask") + observabilityTaskRun := g.GenerateModelAs("auto_task_run", "ObservabilityTaskRun") g.ApplyBasic(observabilityView) g.ApplyBasic(observabilityTask) + g.ApplyBasic(observabilityTaskRun) g.Execute() } From ae0359e5df71587ffa70403f49d0fca2bd2461e4 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 5 Sep 2025 14:41:05 +0800 Subject: [PATCH 069/462] feat:gorm gen auto_task_run --- .../mysql/gorm_gen/model/auto_task_run.gen.go | 18 ++++++- .../mysql/gorm_gen/query/auto_task_run.gen.go | 53 ++++++++++++++++++- .../mysql-init/init-sql/auto_task_run.sql | 17 ++++++ 3 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 release/deployment/docker-compose/bootstrap/mysql-init/init-sql/auto_task_run.sql diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go index 38c2d6123..9d717accd 100644 --- a/backend/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go @@ -4,10 +4,26 @@ package model +import ( + "time" +) + const TableNameObservabilityTaskRun = "auto_task_run" -// ObservabilityTaskRun mapped from table +// ObservabilityTaskRun Task Run信息 type ObservabilityTaskRun struct { + ID int64 `gorm:"column:id;type:bigint(20) unsigned;primaryKey;comment:TaskRun ID" json:"id"` // TaskRun ID + WorkspaceID int64 `gorm:"column:workspace_id;type:bigint(20) unsigned;not null;index:idx_workspace_task,priority:1;comment:空间ID" json:"workspace_id"` // 空间ID + TaskID int64 `gorm:"column:task_id;type:bigint(20) unsigned;not null;index:idx_task_id_status,priority:1;index:idx_workspace_task,priority:2;comment:Task ID" json:"task_id"` // Task ID + TaskType string `gorm:"column:task_type;type:varchar(64);not null;comment:Task类型" json:"task_type"` // Task类型 + RunStatus string `gorm:"column:run_status;type:varchar(64);not null;index:idx_task_id_status,priority:2;comment:Task Run状态" json:"run_status"` // Task Run状态 + RunDetail *string `gorm:"column:run_detail;type:json;comment:Task Run运行状态详情" json:"run_detail"` // Task Run运行状态详情 + BackfillDetail *string `gorm:"column:backfill_detail;type:json;comment:历史回溯Task Run运行状态详情" json:"backfill_detail"` // 历史回溯Task Run运行状态详情 + RunStartAt time.Time `gorm:"column:run_start_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:任务开始时间" json:"run_start_at"` // 任务开始时间 + RunEndAt time.Time `gorm:"column:run_end_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:任务结束时间" json:"run_end_at"` // 任务结束时间 + RunConfig *string `gorm:"column:run_config;type:json;comment:相关Run的配置信息" json:"run_config"` // 相关Run的配置信息 + CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` // 更新时间 } // TableName ObservabilityTaskRun's table name diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go index f7a6cd2c0..1a0a3f03f 100644 --- a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go @@ -27,16 +27,41 @@ func newObservabilityTaskRun(db *gorm.DB, opts ...gen.DOOption) observabilityTas tableName := _observabilityTaskRun.observabilityTaskRunDo.TableName() _observabilityTaskRun.ALL = field.NewAsterisk(tableName) + _observabilityTaskRun.ID = field.NewInt64(tableName, "id") + _observabilityTaskRun.WorkspaceID = field.NewInt64(tableName, "workspace_id") + _observabilityTaskRun.TaskID = field.NewInt64(tableName, "task_id") + _observabilityTaskRun.TaskType = field.NewString(tableName, "task_type") + _observabilityTaskRun.RunStatus = field.NewString(tableName, "run_status") + _observabilityTaskRun.RunDetail = field.NewString(tableName, "run_detail") + _observabilityTaskRun.BackfillDetail = field.NewString(tableName, "backfill_detail") + _observabilityTaskRun.RunStartAt = field.NewTime(tableName, "run_start_at") + _observabilityTaskRun.RunEndAt = field.NewTime(tableName, "run_end_at") + _observabilityTaskRun.RunConfig = field.NewString(tableName, "run_config") + _observabilityTaskRun.CreatedAt = field.NewTime(tableName, "created_at") + _observabilityTaskRun.UpdatedAt = field.NewTime(tableName, "updated_at") _observabilityTaskRun.fillFieldMap() return _observabilityTaskRun } +// observabilityTaskRun Task Run信息 type observabilityTaskRun struct { observabilityTaskRunDo observabilityTaskRunDo - ALL field.Asterisk + ALL field.Asterisk + ID field.Int64 // TaskRun ID + WorkspaceID field.Int64 // 空间ID + TaskID field.Int64 // Task ID + TaskType field.String // Task类型 + RunStatus field.String // Task Run状态 + RunDetail field.String // Task Run运行状态详情 + BackfillDetail field.String // 历史回溯Task Run运行状态详情 + RunStartAt field.Time // 任务开始时间 + RunEndAt field.Time // 任务结束时间 + RunConfig field.String // 相关Run的配置信息 + CreatedAt field.Time // 创建时间 + UpdatedAt field.Time // 更新时间 fieldMap map[string]field.Expr } @@ -53,6 +78,18 @@ func (o observabilityTaskRun) As(alias string) *observabilityTaskRun { func (o *observabilityTaskRun) updateTableName(table string) *observabilityTaskRun { o.ALL = field.NewAsterisk(table) + o.ID = field.NewInt64(table, "id") + o.WorkspaceID = field.NewInt64(table, "workspace_id") + o.TaskID = field.NewInt64(table, "task_id") + o.TaskType = field.NewString(table, "task_type") + o.RunStatus = field.NewString(table, "run_status") + o.RunDetail = field.NewString(table, "run_detail") + o.BackfillDetail = field.NewString(table, "backfill_detail") + o.RunStartAt = field.NewTime(table, "run_start_at") + o.RunEndAt = field.NewTime(table, "run_end_at") + o.RunConfig = field.NewString(table, "run_config") + o.CreatedAt = field.NewTime(table, "created_at") + o.UpdatedAt = field.NewTime(table, "updated_at") o.fillFieldMap() @@ -81,7 +118,19 @@ func (o *observabilityTaskRun) GetFieldByName(fieldName string) (field.OrderExpr } func (o *observabilityTaskRun) fillFieldMap() { - o.fieldMap = make(map[string]field.Expr, 0) + o.fieldMap = make(map[string]field.Expr, 12) + o.fieldMap["id"] = o.ID + o.fieldMap["workspace_id"] = o.WorkspaceID + o.fieldMap["task_id"] = o.TaskID + o.fieldMap["task_type"] = o.TaskType + o.fieldMap["run_status"] = o.RunStatus + o.fieldMap["run_detail"] = o.RunDetail + o.fieldMap["backfill_detail"] = o.BackfillDetail + o.fieldMap["run_start_at"] = o.RunStartAt + o.fieldMap["run_end_at"] = o.RunEndAt + o.fieldMap["run_config"] = o.RunConfig + o.fieldMap["created_at"] = o.CreatedAt + o.fieldMap["updated_at"] = o.UpdatedAt } func (o observabilityTaskRun) clone(db *gorm.DB) observabilityTaskRun { diff --git a/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/auto_task_run.sql b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/auto_task_run.sql new file mode 100644 index 000000000..4c2de5a2b --- /dev/null +++ b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/auto_task_run.sql @@ -0,0 +1,17 @@ +CREATE TABLE auto_task_run ( + `id` bigint unsigned NOT NULL COMMENT 'TaskRun ID', + `workspace_id` bigint unsigned NOT NULL COMMENT '空间ID', + `task_id` bigint unsigned NOT NULL COMMENT 'Task ID', + `task_type` varchar(64) NOT NULL DEFAULT '' COMMENT 'Task类型', + `run_status` varchar(64) NOT NULL DEFAULT '' COMMENT 'Task Run状态', + `run_detail` json DEFAULT NULL COMMENT 'Task Run运行状态详情', + `backfill_detail` json DEFAULT NULL COMMENT '历史回溯Task Run运行状态详情', + `run_start_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '任务开始时间', + `run_end_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '任务结束时间', + `run_config` json DEFAULT NULL COMMENT '相关Run的配置信息', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`), + KEY `idx_task_id_status` (`task_id`,`run_status`), + KEY `idx_workspace_task` (`workspace_id`, `task_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Task Run信息'; \ No newline at end of file From 4ae0df2c87c81f0cd716c2e66bf1216dc0bd5c62 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 5 Sep 2025 15:17:13 +0800 Subject: [PATCH 070/462] feat:add task run --- .../loop/observability/domain/task/k-task.go | 406 ++++++++--- .../loop/observability/domain/task/task.go | 645 ++++++++++++------ .../domain/task/task_validator.go | 17 +- .../modules/observability/application/wire.go | 1 + .../observability/application/wire_gen.go | 2 +- .../observability/infra/repo/mysql/task.go | 5 + .../infra/repo/mysql/task_run.go | 160 +++++ .../mysql/gorm_gen/model/auto_task_run.gen.go | 32 + .../gorm_gen/model/observability_view.gen.go | 36 + .../repo/mysql/gorm_gen/model/task.gen.go | 35 + .../mysql/gorm_gen/query/auto_task_run.gen.go | 376 ++++++++++ .../gorm_gen/query/observability_view.gen.go | 384 +++++++++++ .../repo/mysql/gorm_gen/query/task.gen.go | 388 +++++++++++ .../observability/infra/repo/mysql/task.go | 280 ++++++++ .../infra/repo/mysql/task_run.go | 233 +++++++ .../loop/observability/domain/task.thrift | 31 +- 16 files changed, 2726 insertions(+), 305 deletions(-) create mode 100644 backend/modules/observability/infra/repo/mysql/task_run.go create mode 100644 backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go create mode 100644 backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/observability_view.gen.go create mode 100644 backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go create mode 100644 backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go create mode 100644 backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/observability_view.gen.go create mode 100644 backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go create mode 100644 backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go create mode 100755 backend/script/gorm_gen/modules/observability/infra/repo/mysql/task_run.go diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index 3f1efca83..2424f31ec 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -345,7 +345,7 @@ func (p *Task) FastReadField8(buf []byte) (int, error) { func (p *Task) FastReadField9(buf []byte) (int, error) { offset := 0 - _field := NewTaskDetail() + _field := NewRunDetail() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -357,7 +357,7 @@ func (p *Task) FastReadField9(buf []byte) (int, error) { func (p *Task) FastReadField10(buf []byte) (int, error) { offset := 0 - _field := NewTaskDetail() + _field := NewRunDetail() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -664,18 +664,18 @@ func (p *Task) DeepCopy(s interface{}) error { } p.TaskConfig = _taskConfig - var _taskDetail *TaskDetail + var _taskDetail *RunDetail if src.TaskDetail != nil { - _taskDetail = &TaskDetail{} + _taskDetail = &RunDetail{} if err := _taskDetail.DeepCopy(src.TaskDetail); err != nil { return err } } p.TaskDetail = _taskDetail - var _backfillTaskDetail *TaskDetail + var _backfillTaskDetail *RunDetail if src.BackfillTaskDetail != nil { - _backfillTaskDetail = &TaskDetail{} + _backfillTaskDetail = &RunDetail{} if err := _backfillTaskDetail.DeepCopy(src.BackfillTaskDetail); err != nil { return err } @@ -2306,7 +2306,7 @@ func (p *AutoEvaluateConfig) DeepCopy(s interface{}) error { return nil } -func (p *TaskDetail) FastRead(buf []byte) (int, error) { +func (p *RunDetail) FastRead(buf []byte) (int, error) { var err error var offset int @@ -2364,12 +2364,12 @@ func (p *TaskDetail) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskDetail[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_RunDetail[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *TaskDetail) FastReadField1(buf []byte) (int, error) { +func (p *RunDetail) FastReadField1(buf []byte) (int, error) { offset := 0 var _field *int64 @@ -2383,7 +2383,7 @@ func (p *TaskDetail) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *TaskDetail) FastReadField2(buf []byte) (int, error) { +func (p *RunDetail) FastReadField2(buf []byte) (int, error) { offset := 0 var _field *int64 @@ -2397,11 +2397,11 @@ func (p *TaskDetail) FastReadField2(buf []byte) (int, error) { return offset, nil } -func (p *TaskDetail) FastWrite(buf []byte) int { +func (p *RunDetail) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *TaskDetail) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *RunDetail) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -2411,7 +2411,7 @@ func (p *TaskDetail) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { return offset } -func (p *TaskDetail) BLength() int { +func (p *RunDetail) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -2421,7 +2421,7 @@ func (p *TaskDetail) BLength() int { return l } -func (p *TaskDetail) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *RunDetail) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSuccessCount() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) @@ -2430,7 +2430,7 @@ func (p *TaskDetail) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { return offset } -func (p *TaskDetail) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { +func (p *RunDetail) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetFailedCount() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) @@ -2439,7 +2439,7 @@ func (p *TaskDetail) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { return offset } -func (p *TaskDetail) field1Length() int { +func (p *RunDetail) field1Length() int { l := 0 if p.IsSetSuccessCount() { l += thrift.Binary.FieldBeginLength() @@ -2448,7 +2448,7 @@ func (p *TaskDetail) field1Length() int { return l } -func (p *TaskDetail) field2Length() int { +func (p *RunDetail) field2Length() int { l := 0 if p.IsSetFailedCount() { l += thrift.Binary.FieldBeginLength() @@ -2457,8 +2457,8 @@ func (p *TaskDetail) field2Length() int { return l } -func (p *TaskDetail) DeepCopy(s interface{}) error { - src, ok := s.(*TaskDetail) +func (p *RunDetail) DeepCopy(s interface{}) error { + src, ok := s.(*RunDetail) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } @@ -2772,8 +2772,13 @@ func (p *TaskRun) FastRead(buf []byte) (int, error) { var l int var fieldTypeId thrift.TType var fieldId int16 - var issetStartRunAt bool = false - var issetEndRunAt bool = false + var issetID bool = false + var issetWorkspaceID bool = false + var issetTaskID bool = false + var issetTaskType bool = false + var issetRunStatus bool = false + var issetRunStartAt bool = false + var issetRunEndAt bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -2791,6 +2796,7 @@ func (p *TaskRun) FastRead(buf []byte) (int, error) { if err != nil { goto ReadFieldError } + issetID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2805,6 +2811,7 @@ func (p *TaskRun) FastRead(buf []byte) (int, error) { if err != nil { goto ReadFieldError } + issetWorkspaceID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2819,6 +2826,7 @@ func (p *TaskRun) FastRead(buf []byte) (int, error) { if err != nil { goto ReadFieldError } + issetTaskID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2833,6 +2841,7 @@ func (p *TaskRun) FastRead(buf []byte) (int, error) { if err != nil { goto ReadFieldError } + issetTaskType = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2841,13 +2850,13 @@ func (p *TaskRun) FastRead(buf []byte) (int, error) { } } case 5: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { l, err = p.FastReadField5(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetStartRunAt = true + issetRunStatus = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2856,13 +2865,12 @@ func (p *TaskRun) FastRead(buf []byte) (int, error) { } } case 6: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField6(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetEndRunAt = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2884,6 +2892,64 @@ func (p *TaskRun) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 8: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField8(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetRunStartAt = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 9: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField9(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetRunEndAt = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 10: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField10(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 100: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField100(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2893,13 +2959,38 @@ func (p *TaskRun) FastRead(buf []byte) (int, error) { } } - if !issetStartRunAt { + if !issetID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetWorkspaceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetTaskID { + fieldId = 3 + goto RequiredFieldNotSetError + } + + if !issetTaskType { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetRunStatus { fieldId = 5 goto RequiredFieldNotSetError } - if !issetEndRunAt { - fieldId = 6 + if !issetRunStartAt { + fieldId = 8 + goto RequiredFieldNotSetError + } + + if !issetRunEndAt { + fieldId = 9 goto RequiredFieldNotSetError } return offset, nil @@ -2916,12 +3007,12 @@ RequiredFieldNotSetError: func (p *TaskRun) FastReadField1(buf []byte) (int, error) { offset := 0 - var _field *int64 + var _field int64 if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v + _field = v } p.ID = _field return offset, nil @@ -2930,12 +3021,12 @@ func (p *TaskRun) FastReadField1(buf []byte) (int, error) { func (p *TaskRun) FastReadField2(buf []byte) (int, error) { offset := 0 - var _field *int64 + var _field int64 if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v + _field = v } p.WorkspaceID = _field return offset, nil @@ -2944,12 +3035,12 @@ func (p *TaskRun) FastReadField2(buf []byte) (int, error) { func (p *TaskRun) FastReadField3(buf []byte) (int, error) { offset := 0 - var _field *int64 + var _field int64 if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v + _field = v } p.TaskID = _field return offset, nil @@ -2958,12 +3049,12 @@ func (p *TaskRun) FastReadField3(buf []byte) (int, error) { func (p *TaskRun) FastReadField4(buf []byte) (int, error) { offset := 0 - var _field *TaskType + var _field TaskType if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l - _field = &v + _field = v } p.TaskType = _field return offset, nil @@ -2972,6 +3063,44 @@ func (p *TaskRun) FastReadField4(buf []byte) (int, error) { func (p *TaskRun) FastReadField5(buf []byte) (int, error) { offset := 0 + var _field RunStatus + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.RunStatus = _field + return offset, nil +} + +func (p *TaskRun) FastReadField6(buf []byte) (int, error) { + offset := 0 + _field := NewRunDetail() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.RunDetail = _field + return offset, nil +} + +func (p *TaskRun) FastReadField7(buf []byte) (int, error) { + offset := 0 + _field := NewRunDetail() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BackfillRunDetail = _field + return offset, nil +} + +func (p *TaskRun) FastReadField8(buf []byte) (int, error) { + offset := 0 + var _field int64 if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err @@ -2979,11 +3108,11 @@ func (p *TaskRun) FastReadField5(buf []byte) (int, error) { offset += l _field = v } - p.StartRunAt = _field + p.RunStartAt = _field return offset, nil } -func (p *TaskRun) FastReadField6(buf []byte) (int, error) { +func (p *TaskRun) FastReadField9(buf []byte) (int, error) { offset := 0 var _field int64 @@ -2993,11 +3122,11 @@ func (p *TaskRun) FastReadField6(buf []byte) (int, error) { offset += l _field = v } - p.EndRunAt = _field + p.RunEndAt = _field return offset, nil } -func (p *TaskRun) FastReadField7(buf []byte) (int, error) { +func (p *TaskRun) FastReadField10(buf []byte) (int, error) { offset := 0 _field := NewTaskRunConfig() if l, err := _field.FastRead(buf[offset:]); err != nil { @@ -3009,6 +3138,18 @@ func (p *TaskRun) FastReadField7(buf []byte) (int, error) { return offset, nil } +func (p *TaskRun) FastReadField100(buf []byte) (int, error) { + offset := 0 + _field := common.NewBaseInfo() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseInfo = _field + return offset, nil +} + func (p *TaskRun) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -3019,10 +3160,14 @@ func (p *TaskRun) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField8(buf[offset:], w) + offset += p.fastWriteField9(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) offset += p.fastWriteField6(buf[offset:], w) - offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField7(buf[offset:], w) + offset += p.fastWriteField10(buf[offset:], w) + offset += p.fastWriteField100(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -3038,6 +3183,10 @@ func (p *TaskRun) BLength() int { l += p.field5Length() l += p.field6Length() l += p.field7Length() + l += p.field8Length() + l += p.field9Length() + l += p.field10Length() + l += p.field100Length() } l += thrift.Binary.FieldStopLength() return l @@ -3045,114 +3194,157 @@ func (p *TaskRun) BLength() int { func (p *TaskRun) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetID() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], *p.ID) - } + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.ID) return offset } func (p *TaskRun) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetWorkspaceID() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) - offset += thrift.Binary.WriteI64(buf[offset:], *p.WorkspaceID) - } + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) return offset } func (p *TaskRun) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetTaskID() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 3) - offset += thrift.Binary.WriteI64(buf[offset:], *p.TaskID) - } + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 3) + offset += thrift.Binary.WriteI64(buf[offset:], p.TaskID) return offset } func (p *TaskRun) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetTaskType() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.TaskType) - } + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TaskType) return offset } func (p *TaskRun) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 5) - offset += thrift.Binary.WriteI64(buf[offset:], p.StartRunAt) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 5) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.RunStatus) return offset } func (p *TaskRun) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 6) - offset += thrift.Binary.WriteI64(buf[offset:], p.EndRunAt) + if p.IsSetRunDetail() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 6) + offset += p.RunDetail.FastWriteNocopy(buf[offset:], w) + } return offset } func (p *TaskRun) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetTaskRunConfig() { + if p.IsSetBackfillRunDetail() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 7) + offset += p.BackfillRunDetail.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *TaskRun) fastWriteField8(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 8) + offset += thrift.Binary.WriteI64(buf[offset:], p.RunStartAt) + return offset +} + +func (p *TaskRun) fastWriteField9(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 9) + offset += thrift.Binary.WriteI64(buf[offset:], p.RunEndAt) + return offset +} + +func (p *TaskRun) fastWriteField10(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTaskRunConfig() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 10) offset += p.TaskRunConfig.FastWriteNocopy(buf[offset:], w) } return offset } +func (p *TaskRun) fastWriteField100(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBaseInfo() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 100) + offset += p.BaseInfo.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *TaskRun) field1Length() int { l := 0 - if p.IsSetID() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - } + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() return l } func (p *TaskRun) field2Length() int { l := 0 - if p.IsSetWorkspaceID() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() - } + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() return l } func (p *TaskRun) field3Length() int { l := 0 - if p.IsSetTaskID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *TaskRun) field4Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.TaskType) + return l +} + +func (p *TaskRun) field5Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.RunStatus) + return l +} + +func (p *TaskRun) field6Length() int { + l := 0 + if p.IsSetRunDetail() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() + l += p.RunDetail.BLength() } return l } -func (p *TaskRun) field4Length() int { +func (p *TaskRun) field7Length() int { l := 0 - if p.IsSetTaskType() { + if p.IsSetBackfillRunDetail() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.TaskType) + l += p.BackfillRunDetail.BLength() } return l } -func (p *TaskRun) field5Length() int { +func (p *TaskRun) field8Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += thrift.Binary.I64Length() return l } -func (p *TaskRun) field6Length() int { +func (p *TaskRun) field9Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += thrift.Binary.I64Length() return l } -func (p *TaskRun) field7Length() int { +func (p *TaskRun) field10Length() int { l := 0 if p.IsSetTaskRunConfig() { l += thrift.Binary.FieldBeginLength() @@ -3161,35 +3353,52 @@ func (p *TaskRun) field7Length() int { return l } +func (p *TaskRun) field100Length() int { + l := 0 + if p.IsSetBaseInfo() { + l += thrift.Binary.FieldBeginLength() + l += p.BaseInfo.BLength() + } + return l +} + func (p *TaskRun) DeepCopy(s interface{}) error { src, ok := s.(*TaskRun) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - if src.ID != nil { - tmp := *src.ID - p.ID = &tmp - } + p.ID = src.ID - if src.WorkspaceID != nil { - tmp := *src.WorkspaceID - p.WorkspaceID = &tmp - } + p.WorkspaceID = src.WorkspaceID + + p.TaskID = src.TaskID - if src.TaskID != nil { - tmp := *src.TaskID - p.TaskID = &tmp + p.TaskType = src.TaskType + + p.RunStatus = src.RunStatus + + var _runDetail *RunDetail + if src.RunDetail != nil { + _runDetail = &RunDetail{} + if err := _runDetail.DeepCopy(src.RunDetail); err != nil { + return err + } } + p.RunDetail = _runDetail - if src.TaskType != nil { - tmp := *src.TaskType - p.TaskType = &tmp + var _backfillRunDetail *RunDetail + if src.BackfillRunDetail != nil { + _backfillRunDetail = &RunDetail{} + if err := _backfillRunDetail.DeepCopy(src.BackfillRunDetail); err != nil { + return err + } } + p.BackfillRunDetail = _backfillRunDetail - p.StartRunAt = src.StartRunAt + p.RunStartAt = src.RunStartAt - p.EndRunAt = src.EndRunAt + p.RunEndAt = src.RunEndAt var _taskRunConfig *TaskRunConfig if src.TaskRunConfig != nil { @@ -3200,6 +3409,15 @@ func (p *TaskRun) DeepCopy(s interface{}) error { } p.TaskRunConfig = _taskRunConfig + var _baseInfo *common.BaseInfo + if src.BaseInfo != nil { + _baseInfo = &common.BaseInfo{} + if err := _baseInfo.DeepCopy(src.BaseInfo); err != nil { + return err + } + } + p.BaseInfo = _baseInfo + return nil } diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 425139629..0dabd9507 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -31,6 +31,10 @@ const ( TaskStatusPending = "pending" TaskStatusDisabled = "disabled" + + RunStatusRunning = "running" + + RunStatusDone = "done" ) type TimeUnit = string @@ -39,6 +43,8 @@ type TaskType = string type TaskStatus = string +type RunStatus = string + // Task type Task struct { // 任务 id @@ -58,9 +64,9 @@ type Task struct { // 配置 TaskConfig *TaskConfig `thrift:"task_config,8,optional" frugal:"8,optional,TaskConfig" form:"task_config" json:"task_config,omitempty" query:"task_config"` // 任务状态详情 - TaskDetail *TaskDetail `thrift:"task_detail,9,optional" frugal:"9,optional,TaskDetail" form:"task_detail" json:"task_detail,omitempty" query:"task_detail"` + TaskDetail *RunDetail `thrift:"task_detail,9,optional" frugal:"9,optional,RunDetail" form:"task_detail" json:"task_detail,omitempty" query:"task_detail"` // 任务历史数据执行详情 - BackfillTaskDetail *TaskDetail `thrift:"backfill_task_detail,10,optional" frugal:"10,optional,TaskDetail" form:"backfill_task_detail" json:"backfill_task_detail,omitempty" query:"backfill_task_detail"` + BackfillTaskDetail *RunDetail `thrift:"backfill_task_detail,10,optional" frugal:"10,optional,RunDetail" form:"backfill_task_detail" json:"backfill_task_detail,omitempty" query:"backfill_task_detail"` // 基础信息 BaseInfo *common.BaseInfo `thrift:"base_info,100,optional" frugal:"100,optional,common.BaseInfo" form:"base_info" json:"base_info,omitempty" query:"base_info"` } @@ -158,9 +164,9 @@ func (p *Task) GetTaskConfig() (v *TaskConfig) { return p.TaskConfig } -var Task_TaskDetail_DEFAULT *TaskDetail +var Task_TaskDetail_DEFAULT *RunDetail -func (p *Task) GetTaskDetail() (v *TaskDetail) { +func (p *Task) GetTaskDetail() (v *RunDetail) { if p == nil { return } @@ -170,9 +176,9 @@ func (p *Task) GetTaskDetail() (v *TaskDetail) { return p.TaskDetail } -var Task_BackfillTaskDetail_DEFAULT *TaskDetail +var Task_BackfillTaskDetail_DEFAULT *RunDetail -func (p *Task) GetBackfillTaskDetail() (v *TaskDetail) { +func (p *Task) GetBackfillTaskDetail() (v *RunDetail) { if p == nil { return } @@ -217,10 +223,10 @@ func (p *Task) SetRule(val *Rule) { func (p *Task) SetTaskConfig(val *TaskConfig) { p.TaskConfig = val } -func (p *Task) SetTaskDetail(val *TaskDetail) { +func (p *Task) SetTaskDetail(val *RunDetail) { p.TaskDetail = val } -func (p *Task) SetBackfillTaskDetail(val *TaskDetail) { +func (p *Task) SetBackfillTaskDetail(val *RunDetail) { p.BackfillTaskDetail = val } func (p *Task) SetBaseInfo(val *common.BaseInfo) { @@ -510,7 +516,7 @@ func (p *Task) ReadField8(iprot thrift.TProtocol) error { return nil } func (p *Task) ReadField9(iprot thrift.TProtocol) error { - _field := NewTaskDetail() + _field := NewRunDetail() if err := _field.Read(iprot); err != nil { return err } @@ -518,7 +524,7 @@ func (p *Task) ReadField9(iprot thrift.TProtocol) error { return nil } func (p *Task) ReadField10(iprot thrift.TProtocol) error { - _field := NewTaskDetail() + _field := NewRunDetail() if err := _field.Read(iprot); err != nil { return err } @@ -923,14 +929,14 @@ func (p *Task) Field8DeepEqual(src *TaskConfig) bool { } return true } -func (p *Task) Field9DeepEqual(src *TaskDetail) bool { +func (p *Task) Field9DeepEqual(src *RunDetail) bool { if !p.TaskDetail.DeepEqual(src) { return false } return true } -func (p *Task) Field10DeepEqual(src *TaskDetail) bool { +func (p *Task) Field10DeepEqual(src *RunDetail) bool { if !p.BackfillTaskDetail.DeepEqual(src) { return false @@ -3199,63 +3205,63 @@ func (p *AutoEvaluateConfig) Field3DeepEqual(src []*FieldMapping) bool { return true } -// TaskDetail -type TaskDetail struct { +// RunDetail +type RunDetail struct { SuccessCount *int64 `thrift:"success_count,1,optional" frugal:"1,optional,i64" form:"success_count" json:"success_count,omitempty" query:"success_count"` FailedCount *int64 `thrift:"failed_count,2,optional" frugal:"2,optional,i64" form:"failed_count" json:"failed_count,omitempty" query:"failed_count"` } -func NewTaskDetail() *TaskDetail { - return &TaskDetail{} +func NewRunDetail() *RunDetail { + return &RunDetail{} } -func (p *TaskDetail) InitDefault() { +func (p *RunDetail) InitDefault() { } -var TaskDetail_SuccessCount_DEFAULT int64 +var RunDetail_SuccessCount_DEFAULT int64 -func (p *TaskDetail) GetSuccessCount() (v int64) { +func (p *RunDetail) GetSuccessCount() (v int64) { if p == nil { return } if !p.IsSetSuccessCount() { - return TaskDetail_SuccessCount_DEFAULT + return RunDetail_SuccessCount_DEFAULT } return *p.SuccessCount } -var TaskDetail_FailedCount_DEFAULT int64 +var RunDetail_FailedCount_DEFAULT int64 -func (p *TaskDetail) GetFailedCount() (v int64) { +func (p *RunDetail) GetFailedCount() (v int64) { if p == nil { return } if !p.IsSetFailedCount() { - return TaskDetail_FailedCount_DEFAULT + return RunDetail_FailedCount_DEFAULT } return *p.FailedCount } -func (p *TaskDetail) SetSuccessCount(val *int64) { +func (p *RunDetail) SetSuccessCount(val *int64) { p.SuccessCount = val } -func (p *TaskDetail) SetFailedCount(val *int64) { +func (p *RunDetail) SetFailedCount(val *int64) { p.FailedCount = val } -var fieldIDToName_TaskDetail = map[int16]string{ +var fieldIDToName_RunDetail = map[int16]string{ 1: "success_count", 2: "failed_count", } -func (p *TaskDetail) IsSetSuccessCount() bool { +func (p *RunDetail) IsSetSuccessCount() bool { return p.SuccessCount != nil } -func (p *TaskDetail) IsSetFailedCount() bool { +func (p *RunDetail) IsSetFailedCount() bool { return p.FailedCount != nil } -func (p *TaskDetail) Read(iprot thrift.TProtocol) (err error) { +func (p *RunDetail) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -3308,7 +3314,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskDetail[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_RunDetail[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -3318,7 +3324,7 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *TaskDetail) ReadField1(iprot thrift.TProtocol) error { +func (p *RunDetail) ReadField1(iprot thrift.TProtocol) error { var _field *int64 if v, err := iprot.ReadI64(); err != nil { @@ -3329,7 +3335,7 @@ func (p *TaskDetail) ReadField1(iprot thrift.TProtocol) error { p.SuccessCount = _field return nil } -func (p *TaskDetail) ReadField2(iprot thrift.TProtocol) error { +func (p *RunDetail) ReadField2(iprot thrift.TProtocol) error { var _field *int64 if v, err := iprot.ReadI64(); err != nil { @@ -3341,9 +3347,9 @@ func (p *TaskDetail) ReadField2(iprot thrift.TProtocol) error { return nil } -func (p *TaskDetail) Write(oprot thrift.TProtocol) (err error) { +func (p *RunDetail) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("TaskDetail"); err != nil { + if err = oprot.WriteStructBegin("RunDetail"); err != nil { goto WriteStructBeginError } if p != nil { @@ -3373,7 +3379,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *TaskDetail) writeField1(oprot thrift.TProtocol) (err error) { +func (p *RunDetail) writeField1(oprot thrift.TProtocol) (err error) { if p.IsSetSuccessCount() { if err = oprot.WriteFieldBegin("success_count", thrift.I64, 1); err != nil { goto WriteFieldBeginError @@ -3391,7 +3397,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *TaskDetail) writeField2(oprot thrift.TProtocol) (err error) { +func (p *RunDetail) writeField2(oprot thrift.TProtocol) (err error) { if p.IsSetFailedCount() { if err = oprot.WriteFieldBegin("failed_count", thrift.I64, 2); err != nil { goto WriteFieldBeginError @@ -3410,15 +3416,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *TaskDetail) String() string { +func (p *RunDetail) String() string { if p == nil { return "" } - return fmt.Sprintf("TaskDetail(%+v)", *p) + return fmt.Sprintf("RunDetail(%+v)", *p) } -func (p *TaskDetail) DeepEqual(ano *TaskDetail) bool { +func (p *RunDetail) DeepEqual(ano *RunDetail) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -3433,7 +3439,7 @@ func (p *TaskDetail) DeepEqual(ano *TaskDetail) bool { return true } -func (p *TaskDetail) Field1DeepEqual(src *int64) bool { +func (p *RunDetail) Field1DeepEqual(src *int64) bool { if p.SuccessCount == src { return true @@ -3445,7 +3451,7 @@ func (p *TaskDetail) Field1DeepEqual(src *int64) bool { } return true } -func (p *TaskDetail) Field2DeepEqual(src *int64) bool { +func (p *RunDetail) Field2DeepEqual(src *int64) bool { if p.FailedCount == src { return true @@ -3854,17 +3860,25 @@ func (p *FieldMapping) Field4DeepEqual(src *string) bool { // TaskRun type TaskRun struct { // 任务 run id - ID *int64 `thrift:"id,1,optional" frugal:"1,optional,i64" form:"id" json:"id,omitempty" query:"id"` + ID int64 `thrift:"id,1,required" frugal:"1,required,i64" form:"id,required" json:"id,required" query:"id,required"` // 所在空间 - WorkspaceID *int64 `thrift:"workspace_id,2,optional" frugal:"2,optional,i64" form:"workspace_id" json:"workspace_id,omitempty" query:"workspace_id"` + WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" form:"workspace_id,required" json:"workspace_id,required" query:"workspace_id,required"` // 任务 id - TaskID *int64 `thrift:"task_id,3,optional" frugal:"3,optional,i64" form:"task_id" json:"task_id,omitempty" query:"task_id"` + TaskID int64 `thrift:"task_id,3,required" frugal:"3,required,i64" form:"task_id,required" json:"task_id,required" query:"task_id,required"` // 类型 - TaskType *TaskType `thrift:"task_type,4,optional" frugal:"4,optional,string" form:"task_type" json:"task_type,omitempty" query:"task_type"` - StartRunAt int64 `thrift:"start_run_at,5,required" frugal:"5,required,i64" form:"start_run_at,required" json:"start_run_at,required" query:"start_run_at,required"` - EndRunAt int64 `thrift:"end_run_at,6,required" frugal:"6,required,i64" form:"end_run_at,required" json:"end_run_at,required" query:"end_run_at,required"` + TaskType TaskType `thrift:"task_type,4,required" frugal:"4,required,string" form:"task_type,required" json:"task_type,required" query:"task_type,required"` + // 状态 + RunStatus RunStatus `thrift:"run_status,5,required" frugal:"5,required,string" form:"run_status,required" json:"run_status,required" query:"run_status,required"` + // 任务状态详情 + RunDetail *RunDetail `thrift:"run_detail,6,optional" frugal:"6,optional,RunDetail" form:"run_detail" json:"run_detail,omitempty" query:"run_detail"` + // 任务历史数据执行详情 + BackfillRunDetail *RunDetail `thrift:"backfill_run_detail,7,optional" frugal:"7,optional,RunDetail" form:"backfill_run_detail" json:"backfill_run_detail,omitempty" query:"backfill_run_detail"` + RunStartAt int64 `thrift:"run_start_at,8,required" frugal:"8,required,i64" form:"run_start_at,required" json:"run_start_at,required" query:"run_start_at,required"` + RunEndAt int64 `thrift:"run_end_at,9,required" frugal:"9,required,i64" form:"run_end_at,required" json:"run_end_at,required" query:"run_end_at,required"` // 配置 - TaskRunConfig *TaskRunConfig `thrift:"task_run_config,7,optional" frugal:"7,optional,TaskRunConfig" form:"task_run_config" json:"task_run_config,omitempty" query:"task_run_config"` + TaskRunConfig *TaskRunConfig `thrift:"task_run_config,10,optional" frugal:"10,optional,TaskRunConfig" form:"task_run_config" json:"task_run_config,omitempty" query:"task_run_config"` + // 基础信息 + BaseInfo *common.BaseInfo `thrift:"base_info,100,optional" frugal:"100,optional,common.BaseInfo" form:"base_info" json:"base_info,omitempty" query:"base_info"` } func NewTaskRun() *TaskRun { @@ -3874,64 +3888,75 @@ func NewTaskRun() *TaskRun { func (p *TaskRun) InitDefault() { } -var TaskRun_ID_DEFAULT int64 - func (p *TaskRun) GetID() (v int64) { - if p == nil { - return + if p != nil { + return p.ID } - if !p.IsSetID() { - return TaskRun_ID_DEFAULT + return +} + +func (p *TaskRun) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID } - return *p.ID + return } -var TaskRun_WorkspaceID_DEFAULT int64 +func (p *TaskRun) GetTaskID() (v int64) { + if p != nil { + return p.TaskID + } + return +} -func (p *TaskRun) GetWorkspaceID() (v int64) { - if p == nil { - return +func (p *TaskRun) GetTaskType() (v TaskType) { + if p != nil { + return p.TaskType } - if !p.IsSetWorkspaceID() { - return TaskRun_WorkspaceID_DEFAULT + return +} + +func (p *TaskRun) GetRunStatus() (v RunStatus) { + if p != nil { + return p.RunStatus } - return *p.WorkspaceID + return } -var TaskRun_TaskID_DEFAULT int64 +var TaskRun_RunDetail_DEFAULT *RunDetail -func (p *TaskRun) GetTaskID() (v int64) { +func (p *TaskRun) GetRunDetail() (v *RunDetail) { if p == nil { return } - if !p.IsSetTaskID() { - return TaskRun_TaskID_DEFAULT + if !p.IsSetRunDetail() { + return TaskRun_RunDetail_DEFAULT } - return *p.TaskID + return p.RunDetail } -var TaskRun_TaskType_DEFAULT TaskType +var TaskRun_BackfillRunDetail_DEFAULT *RunDetail -func (p *TaskRun) GetTaskType() (v TaskType) { +func (p *TaskRun) GetBackfillRunDetail() (v *RunDetail) { if p == nil { return } - if !p.IsSetTaskType() { - return TaskRun_TaskType_DEFAULT + if !p.IsSetBackfillRunDetail() { + return TaskRun_BackfillRunDetail_DEFAULT } - return *p.TaskType + return p.BackfillRunDetail } -func (p *TaskRun) GetStartRunAt() (v int64) { +func (p *TaskRun) GetRunStartAt() (v int64) { if p != nil { - return p.StartRunAt + return p.RunStartAt } return } -func (p *TaskRun) GetEndRunAt() (v int64) { +func (p *TaskRun) GetRunEndAt() (v int64) { if p != nil { - return p.EndRunAt + return p.RunEndAt } return } @@ -3947,63 +3972,92 @@ func (p *TaskRun) GetTaskRunConfig() (v *TaskRunConfig) { } return p.TaskRunConfig } -func (p *TaskRun) SetID(val *int64) { + +var TaskRun_BaseInfo_DEFAULT *common.BaseInfo + +func (p *TaskRun) GetBaseInfo() (v *common.BaseInfo) { + if p == nil { + return + } + if !p.IsSetBaseInfo() { + return TaskRun_BaseInfo_DEFAULT + } + return p.BaseInfo +} +func (p *TaskRun) SetID(val int64) { p.ID = val } -func (p *TaskRun) SetWorkspaceID(val *int64) { +func (p *TaskRun) SetWorkspaceID(val int64) { p.WorkspaceID = val } -func (p *TaskRun) SetTaskID(val *int64) { +func (p *TaskRun) SetTaskID(val int64) { p.TaskID = val } -func (p *TaskRun) SetTaskType(val *TaskType) { +func (p *TaskRun) SetTaskType(val TaskType) { p.TaskType = val } -func (p *TaskRun) SetStartRunAt(val int64) { - p.StartRunAt = val +func (p *TaskRun) SetRunStatus(val RunStatus) { + p.RunStatus = val +} +func (p *TaskRun) SetRunDetail(val *RunDetail) { + p.RunDetail = val +} +func (p *TaskRun) SetBackfillRunDetail(val *RunDetail) { + p.BackfillRunDetail = val +} +func (p *TaskRun) SetRunStartAt(val int64) { + p.RunStartAt = val } -func (p *TaskRun) SetEndRunAt(val int64) { - p.EndRunAt = val +func (p *TaskRun) SetRunEndAt(val int64) { + p.RunEndAt = val } func (p *TaskRun) SetTaskRunConfig(val *TaskRunConfig) { p.TaskRunConfig = val } - -var fieldIDToName_TaskRun = map[int16]string{ - 1: "id", - 2: "workspace_id", - 3: "task_id", - 4: "task_type", - 5: "start_run_at", - 6: "end_run_at", - 7: "task_run_config", -} - -func (p *TaskRun) IsSetID() bool { - return p.ID != nil +func (p *TaskRun) SetBaseInfo(val *common.BaseInfo) { + p.BaseInfo = val } -func (p *TaskRun) IsSetWorkspaceID() bool { - return p.WorkspaceID != nil +var fieldIDToName_TaskRun = map[int16]string{ + 1: "id", + 2: "workspace_id", + 3: "task_id", + 4: "task_type", + 5: "run_status", + 6: "run_detail", + 7: "backfill_run_detail", + 8: "run_start_at", + 9: "run_end_at", + 10: "task_run_config", + 100: "base_info", } -func (p *TaskRun) IsSetTaskID() bool { - return p.TaskID != nil +func (p *TaskRun) IsSetRunDetail() bool { + return p.RunDetail != nil } -func (p *TaskRun) IsSetTaskType() bool { - return p.TaskType != nil +func (p *TaskRun) IsSetBackfillRunDetail() bool { + return p.BackfillRunDetail != nil } func (p *TaskRun) IsSetTaskRunConfig() bool { return p.TaskRunConfig != nil } +func (p *TaskRun) IsSetBaseInfo() bool { + return p.BaseInfo != nil +} + func (p *TaskRun) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetStartRunAt bool = false - var issetEndRunAt bool = false + var issetID bool = false + var issetWorkspaceID bool = false + var issetTaskID bool = false + var issetTaskType bool = false + var issetRunStatus bool = false + var issetRunStartAt bool = false + var issetRunEndAt bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -4024,6 +4078,7 @@ func (p *TaskRun) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } + issetID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -4032,6 +4087,7 @@ func (p *TaskRun) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } + issetWorkspaceID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -4040,6 +4096,7 @@ func (p *TaskRun) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField3(iprot); err != nil { goto ReadFieldError } + issetTaskID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -4048,24 +4105,24 @@ func (p *TaskRun) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField4(iprot); err != nil { goto ReadFieldError } + issetTaskType = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 5: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { if err = p.ReadField5(iprot); err != nil { goto ReadFieldError } - issetStartRunAt = true + issetRunStatus = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 6: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRUCT { if err = p.ReadField6(iprot); err != nil { goto ReadFieldError } - issetEndRunAt = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -4077,6 +4134,40 @@ func (p *TaskRun) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 8: + if fieldTypeId == thrift.I64 { + if err = p.ReadField8(iprot); err != nil { + goto ReadFieldError + } + issetRunStartAt = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 9: + if fieldTypeId == thrift.I64 { + if err = p.ReadField9(iprot); err != nil { + goto ReadFieldError + } + issetRunEndAt = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 10: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField10(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 100: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField100(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -4090,13 +4181,38 @@ func (p *TaskRun) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } - if !issetStartRunAt { + if !issetID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetWorkspaceID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetTaskID { + fieldId = 3 + goto RequiredFieldNotSetError + } + + if !issetTaskType { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetRunStatus { fieldId = 5 goto RequiredFieldNotSetError } - if !issetEndRunAt { - fieldId = 6 + if !issetRunStartAt { + fieldId = 8 + goto RequiredFieldNotSetError + } + + if !issetRunEndAt { + fieldId = 9 goto RequiredFieldNotSetError } return nil @@ -4119,60 +4235,87 @@ RequiredFieldNotSetError: func (p *TaskRun) ReadField1(iprot thrift.TProtocol) error { - var _field *int64 + var _field int64 if v, err := iprot.ReadI64(); err != nil { return err } else { - _field = &v + _field = v } p.ID = _field return nil } func (p *TaskRun) ReadField2(iprot thrift.TProtocol) error { - var _field *int64 + var _field int64 if v, err := iprot.ReadI64(); err != nil { return err } else { - _field = &v + _field = v } p.WorkspaceID = _field return nil } func (p *TaskRun) ReadField3(iprot thrift.TProtocol) error { - var _field *int64 + var _field int64 if v, err := iprot.ReadI64(); err != nil { return err } else { - _field = &v + _field = v } p.TaskID = _field return nil } func (p *TaskRun) ReadField4(iprot thrift.TProtocol) error { - var _field *TaskType + var _field TaskType if v, err := iprot.ReadString(); err != nil { return err } else { - _field = &v + _field = v } p.TaskType = _field return nil } func (p *TaskRun) ReadField5(iprot thrift.TProtocol) error { + var _field RunStatus + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.RunStatus = _field + return nil +} +func (p *TaskRun) ReadField6(iprot thrift.TProtocol) error { + _field := NewRunDetail() + if err := _field.Read(iprot); err != nil { + return err + } + p.RunDetail = _field + return nil +} +func (p *TaskRun) ReadField7(iprot thrift.TProtocol) error { + _field := NewRunDetail() + if err := _field.Read(iprot); err != nil { + return err + } + p.BackfillRunDetail = _field + return nil +} +func (p *TaskRun) ReadField8(iprot thrift.TProtocol) error { + var _field int64 if v, err := iprot.ReadI64(); err != nil { return err } else { _field = v } - p.StartRunAt = _field + p.RunStartAt = _field return nil } -func (p *TaskRun) ReadField6(iprot thrift.TProtocol) error { +func (p *TaskRun) ReadField9(iprot thrift.TProtocol) error { var _field int64 if v, err := iprot.ReadI64(); err != nil { @@ -4180,10 +4323,10 @@ func (p *TaskRun) ReadField6(iprot thrift.TProtocol) error { } else { _field = v } - p.EndRunAt = _field + p.RunEndAt = _field return nil } -func (p *TaskRun) ReadField7(iprot thrift.TProtocol) error { +func (p *TaskRun) ReadField10(iprot thrift.TProtocol) error { _field := NewTaskRunConfig() if err := _field.Read(iprot); err != nil { return err @@ -4191,6 +4334,14 @@ func (p *TaskRun) ReadField7(iprot thrift.TProtocol) error { p.TaskRunConfig = _field return nil } +func (p *TaskRun) ReadField100(iprot thrift.TProtocol) error { + _field := common.NewBaseInfo() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseInfo = _field + return nil +} func (p *TaskRun) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -4226,6 +4377,22 @@ func (p *TaskRun) Write(oprot thrift.TProtocol) (err error) { fieldId = 7 goto WriteFieldError } + if err = p.writeField8(oprot); err != nil { + fieldId = 8 + goto WriteFieldError + } + if err = p.writeField9(oprot); err != nil { + fieldId = 9 + goto WriteFieldError + } + if err = p.writeField10(oprot); err != nil { + fieldId = 10 + goto WriteFieldError + } + if err = p.writeField100(oprot); err != nil { + fieldId = 100 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -4245,16 +4412,14 @@ WriteStructEndError: } func (p *TaskRun) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetID() { - if err = oprot.WriteFieldBegin("id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(*p.ID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } + if err = oprot.WriteFieldBegin("id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.ID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -4263,16 +4428,14 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } func (p *TaskRun) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetWorkspaceID() { - if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(*p.WorkspaceID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -4281,11 +4444,59 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } func (p *TaskRun) writeField3(oprot thrift.TProtocol) (err error) { - if p.IsSetTaskID() { - if err = oprot.WriteFieldBegin("task_id", thrift.I64, 3); err != nil { + if err = oprot.WriteFieldBegin("task_id", thrift.I64, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.TaskID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *TaskRun) writeField4(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("task_type", thrift.STRING, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.TaskType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *TaskRun) writeField5(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("run_status", thrift.STRING, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.RunStatus); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *TaskRun) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetRunDetail() { + if err = oprot.WriteFieldBegin("run_detail", thrift.STRUCT, 6); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(*p.TaskID); err != nil { + if err := p.RunDetail.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -4294,16 +4505,16 @@ func (p *TaskRun) writeField3(oprot thrift.TProtocol) (err error) { } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) } -func (p *TaskRun) writeField4(oprot thrift.TProtocol) (err error) { - if p.IsSetTaskType() { - if err = oprot.WriteFieldBegin("task_type", thrift.STRING, 4); err != nil { +func (p *TaskRun) writeField7(oprot thrift.TProtocol) (err error) { + if p.IsSetBackfillRunDetail() { + if err = oprot.WriteFieldBegin("backfill_run_detail", thrift.STRUCT, 7); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(*p.TaskType); err != nil { + if err := p.BackfillRunDetail.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -4312,15 +4523,15 @@ func (p *TaskRun) writeField4(oprot thrift.TProtocol) (err error) { } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) } -func (p *TaskRun) writeField5(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("start_run_at", thrift.I64, 5); err != nil { +func (p *TaskRun) writeField8(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("run_start_at", thrift.I64, 8); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.StartRunAt); err != nil { + if err := oprot.WriteI64(p.RunStartAt); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -4328,15 +4539,15 @@ func (p *TaskRun) writeField5(oprot thrift.TProtocol) (err error) { } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 8 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 8 end error: ", p), err) } -func (p *TaskRun) writeField6(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("end_run_at", thrift.I64, 6); err != nil { +func (p *TaskRun) writeField9(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("run_end_at", thrift.I64, 9); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.EndRunAt); err != nil { + if err := oprot.WriteI64(p.RunEndAt); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -4344,13 +4555,13 @@ func (p *TaskRun) writeField6(oprot thrift.TProtocol) (err error) { } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 9 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 9 end error: ", p), err) } -func (p *TaskRun) writeField7(oprot thrift.TProtocol) (err error) { +func (p *TaskRun) writeField10(oprot thrift.TProtocol) (err error) { if p.IsSetTaskRunConfig() { - if err = oprot.WriteFieldBegin("task_run_config", thrift.STRUCT, 7); err != nil { + if err = oprot.WriteFieldBegin("task_run_config", thrift.STRUCT, 10); err != nil { goto WriteFieldBeginError } if err := p.TaskRunConfig.Write(oprot); err != nil { @@ -4362,9 +4573,27 @@ func (p *TaskRun) writeField7(oprot thrift.TProtocol) (err error) { } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) +} +func (p *TaskRun) writeField100(oprot thrift.TProtocol) (err error) { + if p.IsSetBaseInfo() { + if err = oprot.WriteFieldBegin("base_info", thrift.STRUCT, 100); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseInfo.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 100 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) } func (p *TaskRun) String() string { @@ -4393,83 +4622,103 @@ func (p *TaskRun) DeepEqual(ano *TaskRun) bool { if !p.Field4DeepEqual(ano.TaskType) { return false } - if !p.Field5DeepEqual(ano.StartRunAt) { + if !p.Field5DeepEqual(ano.RunStatus) { return false } - if !p.Field6DeepEqual(ano.EndRunAt) { + if !p.Field6DeepEqual(ano.RunDetail) { return false } - if !p.Field7DeepEqual(ano.TaskRunConfig) { + if !p.Field7DeepEqual(ano.BackfillRunDetail) { + return false + } + if !p.Field8DeepEqual(ano.RunStartAt) { + return false + } + if !p.Field9DeepEqual(ano.RunEndAt) { + return false + } + if !p.Field10DeepEqual(ano.TaskRunConfig) { + return false + } + if !p.Field100DeepEqual(ano.BaseInfo) { return false } return true } -func (p *TaskRun) Field1DeepEqual(src *int64) bool { +func (p *TaskRun) Field1DeepEqual(src int64) bool { - if p.ID == src { - return true - } else if p.ID == nil || src == nil { + if p.ID != src { return false } - if *p.ID != *src { + return true +} +func (p *TaskRun) Field2DeepEqual(src int64) bool { + + if p.WorkspaceID != src { return false } return true } -func (p *TaskRun) Field2DeepEqual(src *int64) bool { +func (p *TaskRun) Field3DeepEqual(src int64) bool { - if p.WorkspaceID == src { - return true - } else if p.WorkspaceID == nil || src == nil { + if p.TaskID != src { return false } - if *p.WorkspaceID != *src { + return true +} +func (p *TaskRun) Field4DeepEqual(src TaskType) bool { + + if strings.Compare(p.TaskType, src) != 0 { return false } return true } -func (p *TaskRun) Field3DeepEqual(src *int64) bool { +func (p *TaskRun) Field5DeepEqual(src RunStatus) bool { - if p.TaskID == src { - return true - } else if p.TaskID == nil || src == nil { + if strings.Compare(p.RunStatus, src) != 0 { return false } - if *p.TaskID != *src { + return true +} +func (p *TaskRun) Field6DeepEqual(src *RunDetail) bool { + + if !p.RunDetail.DeepEqual(src) { return false } return true } -func (p *TaskRun) Field4DeepEqual(src *TaskType) bool { +func (p *TaskRun) Field7DeepEqual(src *RunDetail) bool { - if p.TaskType == src { - return true - } else if p.TaskType == nil || src == nil { + if !p.BackfillRunDetail.DeepEqual(src) { return false } - if strings.Compare(*p.TaskType, *src) != 0 { + return true +} +func (p *TaskRun) Field8DeepEqual(src int64) bool { + + if p.RunStartAt != src { return false } return true } -func (p *TaskRun) Field5DeepEqual(src int64) bool { +func (p *TaskRun) Field9DeepEqual(src int64) bool { - if p.StartRunAt != src { + if p.RunEndAt != src { return false } return true } -func (p *TaskRun) Field6DeepEqual(src int64) bool { +func (p *TaskRun) Field10DeepEqual(src *TaskRunConfig) bool { - if p.EndRunAt != src { + if !p.TaskRunConfig.DeepEqual(src) { return false } return true } -func (p *TaskRun) Field7DeepEqual(src *TaskRunConfig) bool { +func (p *TaskRun) Field100DeepEqual(src *common.BaseInfo) bool { - if !p.TaskRunConfig.DeepEqual(src) { + if !p.BaseInfo.DeepEqual(src) { return false } return true diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go index 8533afa65..251913f50 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go @@ -104,7 +104,7 @@ func (p *DatasetConfig) IsValid() error { func (p *AutoEvaluateConfig) IsValid() error { return nil } -func (p *TaskDetail) IsValid() error { +func (p *RunDetail) IsValid() error { return nil } func (p *FieldMapping) IsValid() error { @@ -116,11 +116,26 @@ func (p *FieldMapping) IsValid() error { return nil } func (p *TaskRun) IsValid() error { + if p.RunDetail != nil { + if err := p.RunDetail.IsValid(); err != nil { + return fmt.Errorf("field RunDetail not valid, %w", err) + } + } + if p.BackfillRunDetail != nil { + if err := p.BackfillRunDetail.IsValid(); err != nil { + return fmt.Errorf("field BackfillRunDetail not valid, %w", err) + } + } if p.TaskRunConfig != nil { if err := p.TaskRunConfig.IsValid(); err != nil { return fmt.Errorf("field TaskRunConfig not valid, %w", err) } } + if p.BaseInfo != nil { + if err := p.BaseInfo.IsValid(); err != nil { + return fmt.Errorf("field BaseInfo not valid, %w", err) + } + } return nil } func (p *TaskRunConfig) IsValid() error { diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 368ae596e..7164eb1aa 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -59,6 +59,7 @@ var ( taskSvc.NewTaskServiceImpl, obrepo.NewTaskRepoImpl, mysqldao.NewTaskDaoImpl, + mysqldao.NewTaskRunDaoImpl, ) traceDomainSet = wire.NewSet( service.NewTraceServiceImpl, diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 08607556f..23e946a04 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -203,7 +203,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, userClient // wire.go: var ( - taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl) + taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, mysql.NewTaskRunDaoImpl) traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, NewDatasetServiceAdapter, evaluator.NewEvaluatorRPCProvider, taskDomainSet, ) diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index 22002a7bb..21764e487 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -124,6 +124,11 @@ func (v *TaskDaoImpl) ListTasks(ctx context.Context, param ListTaskParam) ([]*mo if qdf != nil { qd = qd.Where(qdf) } + // 计算总数 + total, err = qd.Count() + if err != nil { + return nil, 0, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } // order by qd = qd.Order(v.order(q, param.OrderBy.GetField(), param.OrderBy.GetIsAsc())) // 计算分页参数 diff --git a/backend/modules/observability/infra/repo/mysql/task_run.go b/backend/modules/observability/infra/repo/mysql/task_run.go new file mode 100644 index 000000000..d6e4b0d3b --- /dev/null +++ b/backend/modules/observability/infra/repo/mysql/task_run.go @@ -0,0 +1,160 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package mysql + +import ( + "context" + "errors" + + "github.com/coze-dev/coze-loop/backend/infra/db" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" + genquery "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/logs" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type ListTaskRunParam struct { + WorkspaceID *int64 + TaskID *int64 + TaskRunStatus *task.RunStatus + ReqLimit int32 + ReqOffset int32 + OrderBy *common.OrderBy +} + +//go:generate mockgen -destination=mocks/task_run.go -package=mocks . ITaskRunDao +type ITaskRunDao interface { + GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*model.ObservabilityTaskRun, error) + CreateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) (int64, error) + UpdateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) error + DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error + ListTaskRuns(ctx context.Context, param ListTaskRunParam) ([]*model.ObservabilityTaskRun, int64, error) +} + +func NewTaskRunDaoImpl(db db.Provider) ITaskRunDao { + return &TaskRunDaoImpl{ + dbMgr: db, + } +} + +type TaskRunDaoImpl struct { + dbMgr db.Provider +} + +func (v *TaskRunDaoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*model.ObservabilityTaskRun, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.ID.Eq(id)) + if workspaceID != nil { + qd = qd.Where(q.WorkspaceID.Eq(*workspaceID)) + } + if taskID != nil { + qd = qd.Where(q.TaskID.Eq(*taskID)) + } + taskRunPo, err := qd.First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found")) + } else { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + } + return taskRunPo, nil +} + +func (v *TaskRunDaoImpl) CreateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) (int64, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + if err := q.WithContext(ctx).Create(po); err != nil { + if errors.Is(err, gorm.ErrDuplicatedKey) { + return 0, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun duplicate key")) + } else { + return 0, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + } else { + return po.ID, nil + } +} + +func (v *TaskRunDaoImpl) UpdateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) error { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + if err := q.WithContext(ctx).Save(po); err != nil { + return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } else { + return nil + } +} + +func (v *TaskRunDaoImpl) DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + // 注意:TaskRun模型中没有CreatedBy字段,只能按ID和WorkspaceID过滤 + qd := q.WithContext(ctx).Where(q.ID.Eq(id)).Where(q.WorkspaceID.Eq(workspaceID)) + // userID参数暂时忽略,因为TaskRun模型中没有CreatedBy字段 + info, err := qd.Delete() + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + logs.CtxInfo(ctx, "%d rows deleted", info.RowsAffected) + return nil +} + +func (v *TaskRunDaoImpl) ListTaskRuns(ctx context.Context, param ListTaskRunParam) ([]*model.ObservabilityTaskRun, int64, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)) + qd := q.WithContext(ctx).ObservabilityTaskRun + var total int64 + + // TaskID过滤 + if param.TaskID != nil { + qd = qd.Where(q.ObservabilityTaskRun.TaskID.Eq(*param.TaskID)) + } + // TaskRunStatus过滤 + if param.TaskRunStatus != nil { + qd = qd.Where(q.ObservabilityTaskRun.RunStatus.Eq(*param.TaskRunStatus)) + } + // workspaceID过滤 + if param.WorkspaceID != nil { + qd = qd.Where(q.ObservabilityTaskRun.WorkspaceID.Eq(*param.WorkspaceID)) + } + + // 排序 + qd = qd.Order(v.order(q, param.OrderBy.GetField(), param.OrderBy.GetIsAsc())) + + // 计算总数 + total, err := qd.Count() + if err != nil { + return nil, 0, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + + // 计算分页参数 + limit, offset := calculatePagination(param.ReqLimit, param.ReqOffset) + results, err := qd.Limit(limit).Offset(offset).Find() + if err != nil { + return nil, total, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, total, nil +} + +func (d *TaskRunDaoImpl) order(q *query.Query, orderBy string, asc bool) field.Expr { + var orderExpr field.OrderExpr + switch orderBy { + case "created_at": + orderExpr = q.ObservabilityTaskRun.CreatedAt + case "run_start_at": + orderExpr = q.ObservabilityTaskRun.RunStartAt + case "run_end_at": + orderExpr = q.ObservabilityTaskRun.RunEndAt + case "updated_at": + orderExpr = q.ObservabilityTaskRun.UpdatedAt + default: + orderExpr = q.ObservabilityTaskRun.CreatedAt + } + if asc { + return orderExpr.Asc() + } + return orderExpr.Desc() +} diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go new file mode 100644 index 000000000..9d717accd --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/auto_task_run.gen.go @@ -0,0 +1,32 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameObservabilityTaskRun = "auto_task_run" + +// ObservabilityTaskRun Task Run信息 +type ObservabilityTaskRun struct { + ID int64 `gorm:"column:id;type:bigint(20) unsigned;primaryKey;comment:TaskRun ID" json:"id"` // TaskRun ID + WorkspaceID int64 `gorm:"column:workspace_id;type:bigint(20) unsigned;not null;index:idx_workspace_task,priority:1;comment:空间ID" json:"workspace_id"` // 空间ID + TaskID int64 `gorm:"column:task_id;type:bigint(20) unsigned;not null;index:idx_task_id_status,priority:1;index:idx_workspace_task,priority:2;comment:Task ID" json:"task_id"` // Task ID + TaskType string `gorm:"column:task_type;type:varchar(64);not null;comment:Task类型" json:"task_type"` // Task类型 + RunStatus string `gorm:"column:run_status;type:varchar(64);not null;index:idx_task_id_status,priority:2;comment:Task Run状态" json:"run_status"` // Task Run状态 + RunDetail *string `gorm:"column:run_detail;type:json;comment:Task Run运行状态详情" json:"run_detail"` // Task Run运行状态详情 + BackfillDetail *string `gorm:"column:backfill_detail;type:json;comment:历史回溯Task Run运行状态详情" json:"backfill_detail"` // 历史回溯Task Run运行状态详情 + RunStartAt time.Time `gorm:"column:run_start_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:任务开始时间" json:"run_start_at"` // 任务开始时间 + RunEndAt time.Time `gorm:"column:run_end_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:任务结束时间" json:"run_end_at"` // 任务结束时间 + RunConfig *string `gorm:"column:run_config;type:json;comment:相关Run的配置信息" json:"run_config"` // 相关Run的配置信息 + CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` // 更新时间 +} + +// TableName ObservabilityTaskRun's table name +func (*ObservabilityTaskRun) TableName() string { + return TableNameObservabilityTaskRun +} diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/observability_view.gen.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/observability_view.gen.go new file mode 100644 index 000000000..42b21d1cc --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/observability_view.gen.go @@ -0,0 +1,36 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" + + "gorm.io/gorm" +) + +const TableNameObservabilityView = "observability_view" + +// ObservabilityView 观测视图信息 +type ObservabilityView struct { + ID int64 `gorm:"column:id;type:bigint(20) unsigned;primaryKey;autoIncrement:true;comment:主键ID" json:"id"` // 主键ID + EnterpriseID string `gorm:"column:enterprise_id;type:varchar(200);not null;comment:企业id" json:"enterprise_id"` // 企业id + WorkspaceID int64 `gorm:"column:workspace_id;type:bigint(20) unsigned;not null;index:idx_space_id_created_by,priority:1;comment:空间 ID" json:"workspace_id"` // 空间 ID + ViewName string `gorm:"column:view_name;type:varchar(256);not null;comment:视图名称" json:"view_name"` // 视图名称 + PlatformType string `gorm:"column:platform_type;type:varchar(128);not null;comment:数据来源" json:"platform_type"` // 数据来源 + SpanListType string `gorm:"column:span_list_type;type:varchar(128);not null;comment:列表信息" json:"span_list_type"` // 列表信息 + Filters string `gorm:"column:filters;type:varchar(2048);not null;comment:过滤条件信息" json:"filters"` // 过滤条件信息 + CreatedAt time.Time `gorm:"column:created_at;type:datetime;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` // 创建时间 + CreatedBy string `gorm:"column:created_by;type:varchar(128);not null;index:idx_space_id_created_by,priority:2;comment:创建人" json:"created_by"` // 创建人 + UpdatedAt time.Time `gorm:"column:updated_at;type:datetime;not null;default:CURRENT_TIMESTAMP;comment:修改时间" json:"updated_at"` // 修改时间 + UpdatedBy string `gorm:"column:updated_by;type:varchar(128);not null;comment:修改人" json:"updated_by"` // 修改人 + IsDeleted bool `gorm:"column:is_deleted;type:tinyint(1);not null;comment:是否删除, 0 表示未删除, 1 表示已删除" json:"is_deleted"` // 是否删除, 0 表示未删除, 1 表示已删除 + DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime;comment:删除时间" json:"deleted_at"` // 删除时间 + DeletedBy string `gorm:"column:deleted_by;type:varchar(128);not null;comment:删除人" json:"deleted_by"` // 删除人 +} + +// TableName ObservabilityView's table name +func (*ObservabilityView) TableName() string { + return TableNameObservabilityView +} diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go new file mode 100644 index 000000000..bf3d8ebb9 --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go @@ -0,0 +1,35 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameObservabilityTask = "task" + +// ObservabilityTask 任务信息 +type ObservabilityTask struct { + ID int64 `gorm:"column:id;type:bigint(20) unsigned;primaryKey;comment:Task ID" json:"id"` // Task ID + WorkspaceID int64 `gorm:"column:workspace_id;type:bigint(20) unsigned;not null;index:idx_space_id_status,priority:1;index:idx_space_id_type,priority:1;comment:空间ID" json:"workspace_id"` // 空间ID + Name string `gorm:"column:name;type:varchar(128);not null;comment:任务名称" json:"name"` // 任务名称 + Description *string `gorm:"column:description;type:varchar(2048);comment:任务描述" json:"description"` // 任务描述 + TaskType string `gorm:"column:task_type;type:varchar(64);not null;index:idx_space_id_type,priority:2;comment:任务类型" json:"task_type"` // 任务类型 + TaskStatus string `gorm:"column:task_status;type:varchar(64);not null;index:idx_space_id_status,priority:2;comment:任务状态" json:"task_status"` // 任务状态 + TaskDetail *string `gorm:"column:task_detail;type:json;comment:任务运行状态详情" json:"task_detail"` // 任务运行状态详情 + SpanFilter *string `gorm:"column:span_filter;type:json;comment:span 过滤条件" json:"span_filter"` // span 过滤条件 + EffectiveTime *string `gorm:"column:effective_time;type:json;comment:生效时间" json:"effective_time"` // 生效时间 + Sampler *string `gorm:"column:sampler;type:json;comment:采样器" json:"sampler"` // 采样器 + TaskConfig *string `gorm:"column:task_config;type:json;comment:相关任务的配置信息" json:"task_config"` // 相关任务的配置信息 + CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` // 更新时间 + CreatedBy string `gorm:"column:created_by;type:varchar(128);not null;comment:创建人" json:"created_by"` // 创建人 + UpdatedBy string `gorm:"column:updated_by;type:varchar(128);not null;comment:更新人" json:"updated_by"` // 更新人 +} + +// TableName ObservabilityTask's table name +func (*ObservabilityTask) TableName() string { + return TableNameObservabilityTask +} diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go new file mode 100644 index 000000000..1a0a3f03f --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/auto_task_run.gen.go @@ -0,0 +1,376 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" +) + +func newObservabilityTaskRun(db *gorm.DB, opts ...gen.DOOption) observabilityTaskRun { + _observabilityTaskRun := observabilityTaskRun{} + + _observabilityTaskRun.observabilityTaskRunDo.UseDB(db, opts...) + _observabilityTaskRun.observabilityTaskRunDo.UseModel(&model.ObservabilityTaskRun{}) + + tableName := _observabilityTaskRun.observabilityTaskRunDo.TableName() + _observabilityTaskRun.ALL = field.NewAsterisk(tableName) + _observabilityTaskRun.ID = field.NewInt64(tableName, "id") + _observabilityTaskRun.WorkspaceID = field.NewInt64(tableName, "workspace_id") + _observabilityTaskRun.TaskID = field.NewInt64(tableName, "task_id") + _observabilityTaskRun.TaskType = field.NewString(tableName, "task_type") + _observabilityTaskRun.RunStatus = field.NewString(tableName, "run_status") + _observabilityTaskRun.RunDetail = field.NewString(tableName, "run_detail") + _observabilityTaskRun.BackfillDetail = field.NewString(tableName, "backfill_detail") + _observabilityTaskRun.RunStartAt = field.NewTime(tableName, "run_start_at") + _observabilityTaskRun.RunEndAt = field.NewTime(tableName, "run_end_at") + _observabilityTaskRun.RunConfig = field.NewString(tableName, "run_config") + _observabilityTaskRun.CreatedAt = field.NewTime(tableName, "created_at") + _observabilityTaskRun.UpdatedAt = field.NewTime(tableName, "updated_at") + + _observabilityTaskRun.fillFieldMap() + + return _observabilityTaskRun +} + +// observabilityTaskRun Task Run信息 +type observabilityTaskRun struct { + observabilityTaskRunDo observabilityTaskRunDo + + ALL field.Asterisk + ID field.Int64 // TaskRun ID + WorkspaceID field.Int64 // 空间ID + TaskID field.Int64 // Task ID + TaskType field.String // Task类型 + RunStatus field.String // Task Run状态 + RunDetail field.String // Task Run运行状态详情 + BackfillDetail field.String // 历史回溯Task Run运行状态详情 + RunStartAt field.Time // 任务开始时间 + RunEndAt field.Time // 任务结束时间 + RunConfig field.String // 相关Run的配置信息 + CreatedAt field.Time // 创建时间 + UpdatedAt field.Time // 更新时间 + + fieldMap map[string]field.Expr +} + +func (o observabilityTaskRun) Table(newTableName string) *observabilityTaskRun { + o.observabilityTaskRunDo.UseTable(newTableName) + return o.updateTableName(newTableName) +} + +func (o observabilityTaskRun) As(alias string) *observabilityTaskRun { + o.observabilityTaskRunDo.DO = *(o.observabilityTaskRunDo.As(alias).(*gen.DO)) + return o.updateTableName(alias) +} + +func (o *observabilityTaskRun) updateTableName(table string) *observabilityTaskRun { + o.ALL = field.NewAsterisk(table) + o.ID = field.NewInt64(table, "id") + o.WorkspaceID = field.NewInt64(table, "workspace_id") + o.TaskID = field.NewInt64(table, "task_id") + o.TaskType = field.NewString(table, "task_type") + o.RunStatus = field.NewString(table, "run_status") + o.RunDetail = field.NewString(table, "run_detail") + o.BackfillDetail = field.NewString(table, "backfill_detail") + o.RunStartAt = field.NewTime(table, "run_start_at") + o.RunEndAt = field.NewTime(table, "run_end_at") + o.RunConfig = field.NewString(table, "run_config") + o.CreatedAt = field.NewTime(table, "created_at") + o.UpdatedAt = field.NewTime(table, "updated_at") + + o.fillFieldMap() + + return o +} + +func (o *observabilityTaskRun) WithContext(ctx context.Context) *observabilityTaskRunDo { + return o.observabilityTaskRunDo.WithContext(ctx) +} + +func (o observabilityTaskRun) TableName() string { return o.observabilityTaskRunDo.TableName() } + +func (o observabilityTaskRun) Alias() string { return o.observabilityTaskRunDo.Alias() } + +func (o observabilityTaskRun) Columns(cols ...field.Expr) gen.Columns { + return o.observabilityTaskRunDo.Columns(cols...) +} + +func (o *observabilityTaskRun) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := o.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (o *observabilityTaskRun) fillFieldMap() { + o.fieldMap = make(map[string]field.Expr, 12) + o.fieldMap["id"] = o.ID + o.fieldMap["workspace_id"] = o.WorkspaceID + o.fieldMap["task_id"] = o.TaskID + o.fieldMap["task_type"] = o.TaskType + o.fieldMap["run_status"] = o.RunStatus + o.fieldMap["run_detail"] = o.RunDetail + o.fieldMap["backfill_detail"] = o.BackfillDetail + o.fieldMap["run_start_at"] = o.RunStartAt + o.fieldMap["run_end_at"] = o.RunEndAt + o.fieldMap["run_config"] = o.RunConfig + o.fieldMap["created_at"] = o.CreatedAt + o.fieldMap["updated_at"] = o.UpdatedAt +} + +func (o observabilityTaskRun) clone(db *gorm.DB) observabilityTaskRun { + o.observabilityTaskRunDo.ReplaceConnPool(db.Statement.ConnPool) + return o +} + +func (o observabilityTaskRun) replaceDB(db *gorm.DB) observabilityTaskRun { + o.observabilityTaskRunDo.ReplaceDB(db) + return o +} + +type observabilityTaskRunDo struct{ gen.DO } + +func (o observabilityTaskRunDo) Debug() *observabilityTaskRunDo { + return o.withDO(o.DO.Debug()) +} + +func (o observabilityTaskRunDo) WithContext(ctx context.Context) *observabilityTaskRunDo { + return o.withDO(o.DO.WithContext(ctx)) +} + +func (o observabilityTaskRunDo) ReadDB() *observabilityTaskRunDo { + return o.Clauses(dbresolver.Read) +} + +func (o observabilityTaskRunDo) WriteDB() *observabilityTaskRunDo { + return o.Clauses(dbresolver.Write) +} + +func (o observabilityTaskRunDo) Session(config *gorm.Session) *observabilityTaskRunDo { + return o.withDO(o.DO.Session(config)) +} + +func (o observabilityTaskRunDo) Clauses(conds ...clause.Expression) *observabilityTaskRunDo { + return o.withDO(o.DO.Clauses(conds...)) +} + +func (o observabilityTaskRunDo) Returning(value interface{}, columns ...string) *observabilityTaskRunDo { + return o.withDO(o.DO.Returning(value, columns...)) +} + +func (o observabilityTaskRunDo) Not(conds ...gen.Condition) *observabilityTaskRunDo { + return o.withDO(o.DO.Not(conds...)) +} + +func (o observabilityTaskRunDo) Or(conds ...gen.Condition) *observabilityTaskRunDo { + return o.withDO(o.DO.Or(conds...)) +} + +func (o observabilityTaskRunDo) Select(conds ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Select(conds...)) +} + +func (o observabilityTaskRunDo) Where(conds ...gen.Condition) *observabilityTaskRunDo { + return o.withDO(o.DO.Where(conds...)) +} + +func (o observabilityTaskRunDo) Order(conds ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Order(conds...)) +} + +func (o observabilityTaskRunDo) Distinct(cols ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Distinct(cols...)) +} + +func (o observabilityTaskRunDo) Omit(cols ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Omit(cols...)) +} + +func (o observabilityTaskRunDo) Join(table schema.Tabler, on ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Join(table, on...)) +} + +func (o observabilityTaskRunDo) LeftJoin(table schema.Tabler, on ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.LeftJoin(table, on...)) +} + +func (o observabilityTaskRunDo) RightJoin(table schema.Tabler, on ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.RightJoin(table, on...)) +} + +func (o observabilityTaskRunDo) Group(cols ...field.Expr) *observabilityTaskRunDo { + return o.withDO(o.DO.Group(cols...)) +} + +func (o observabilityTaskRunDo) Having(conds ...gen.Condition) *observabilityTaskRunDo { + return o.withDO(o.DO.Having(conds...)) +} + +func (o observabilityTaskRunDo) Limit(limit int) *observabilityTaskRunDo { + return o.withDO(o.DO.Limit(limit)) +} + +func (o observabilityTaskRunDo) Offset(offset int) *observabilityTaskRunDo { + return o.withDO(o.DO.Offset(offset)) +} + +func (o observabilityTaskRunDo) Scopes(funcs ...func(gen.Dao) gen.Dao) *observabilityTaskRunDo { + return o.withDO(o.DO.Scopes(funcs...)) +} + +func (o observabilityTaskRunDo) Unscoped() *observabilityTaskRunDo { + return o.withDO(o.DO.Unscoped()) +} + +func (o observabilityTaskRunDo) Create(values ...*model.ObservabilityTaskRun) error { + if len(values) == 0 { + return nil + } + return o.DO.Create(values) +} + +func (o observabilityTaskRunDo) CreateInBatches(values []*model.ObservabilityTaskRun, batchSize int) error { + return o.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (o observabilityTaskRunDo) Save(values ...*model.ObservabilityTaskRun) error { + if len(values) == 0 { + return nil + } + return o.DO.Save(values) +} + +func (o observabilityTaskRunDo) First() (*model.ObservabilityTaskRun, error) { + if result, err := o.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTaskRun), nil + } +} + +func (o observabilityTaskRunDo) Take() (*model.ObservabilityTaskRun, error) { + if result, err := o.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTaskRun), nil + } +} + +func (o observabilityTaskRunDo) Last() (*model.ObservabilityTaskRun, error) { + if result, err := o.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTaskRun), nil + } +} + +func (o observabilityTaskRunDo) Find() ([]*model.ObservabilityTaskRun, error) { + result, err := o.DO.Find() + return result.([]*model.ObservabilityTaskRun), err +} + +func (o observabilityTaskRunDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ObservabilityTaskRun, err error) { + buf := make([]*model.ObservabilityTaskRun, 0, batchSize) + err = o.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (o observabilityTaskRunDo) FindInBatches(result *[]*model.ObservabilityTaskRun, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return o.DO.FindInBatches(result, batchSize, fc) +} + +func (o observabilityTaskRunDo) Attrs(attrs ...field.AssignExpr) *observabilityTaskRunDo { + return o.withDO(o.DO.Attrs(attrs...)) +} + +func (o observabilityTaskRunDo) Assign(attrs ...field.AssignExpr) *observabilityTaskRunDo { + return o.withDO(o.DO.Assign(attrs...)) +} + +func (o observabilityTaskRunDo) Joins(fields ...field.RelationField) *observabilityTaskRunDo { + for _, _f := range fields { + o = *o.withDO(o.DO.Joins(_f)) + } + return &o +} + +func (o observabilityTaskRunDo) Preload(fields ...field.RelationField) *observabilityTaskRunDo { + for _, _f := range fields { + o = *o.withDO(o.DO.Preload(_f)) + } + return &o +} + +func (o observabilityTaskRunDo) FirstOrInit() (*model.ObservabilityTaskRun, error) { + if result, err := o.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTaskRun), nil + } +} + +func (o observabilityTaskRunDo) FirstOrCreate() (*model.ObservabilityTaskRun, error) { + if result, err := o.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTaskRun), nil + } +} + +func (o observabilityTaskRunDo) FindByPage(offset int, limit int) (result []*model.ObservabilityTaskRun, count int64, err error) { + result, err = o.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = o.Offset(-1).Limit(-1).Count() + return +} + +func (o observabilityTaskRunDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = o.Count() + if err != nil { + return + } + + err = o.Offset(offset).Limit(limit).Scan(result) + return +} + +func (o observabilityTaskRunDo) Scan(result interface{}) (err error) { + return o.DO.Scan(result) +} + +func (o observabilityTaskRunDo) Delete(models ...*model.ObservabilityTaskRun) (result gen.ResultInfo, err error) { + return o.DO.Delete(models) +} + +func (o *observabilityTaskRunDo) withDO(do gen.Dao) *observabilityTaskRunDo { + o.DO = *do.(*gen.DO) + return o +} diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/observability_view.gen.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/observability_view.gen.go new file mode 100644 index 000000000..56e6404eb --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/observability_view.gen.go @@ -0,0 +1,384 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" +) + +func newObservabilityView(db *gorm.DB, opts ...gen.DOOption) observabilityView { + _observabilityView := observabilityView{} + + _observabilityView.observabilityViewDo.UseDB(db, opts...) + _observabilityView.observabilityViewDo.UseModel(&model.ObservabilityView{}) + + tableName := _observabilityView.observabilityViewDo.TableName() + _observabilityView.ALL = field.NewAsterisk(tableName) + _observabilityView.ID = field.NewInt64(tableName, "id") + _observabilityView.EnterpriseID = field.NewString(tableName, "enterprise_id") + _observabilityView.WorkspaceID = field.NewInt64(tableName, "workspace_id") + _observabilityView.ViewName = field.NewString(tableName, "view_name") + _observabilityView.PlatformType = field.NewString(tableName, "platform_type") + _observabilityView.SpanListType = field.NewString(tableName, "span_list_type") + _observabilityView.Filters = field.NewString(tableName, "filters") + _observabilityView.CreatedAt = field.NewTime(tableName, "created_at") + _observabilityView.CreatedBy = field.NewString(tableName, "created_by") + _observabilityView.UpdatedAt = field.NewTime(tableName, "updated_at") + _observabilityView.UpdatedBy = field.NewString(tableName, "updated_by") + _observabilityView.IsDeleted = field.NewBool(tableName, "is_deleted") + _observabilityView.DeletedAt = field.NewField(tableName, "deleted_at") + _observabilityView.DeletedBy = field.NewString(tableName, "deleted_by") + + _observabilityView.fillFieldMap() + + return _observabilityView +} + +// observabilityView 观测视图信息 +type observabilityView struct { + observabilityViewDo observabilityViewDo + + ALL field.Asterisk + ID field.Int64 // 主键ID + EnterpriseID field.String // 企业id + WorkspaceID field.Int64 // 空间 ID + ViewName field.String // 视图名称 + PlatformType field.String // 数据来源 + SpanListType field.String // 列表信息 + Filters field.String // 过滤条件信息 + CreatedAt field.Time // 创建时间 + CreatedBy field.String // 创建人 + UpdatedAt field.Time // 修改时间 + UpdatedBy field.String // 修改人 + IsDeleted field.Bool // 是否删除, 0 表示未删除, 1 表示已删除 + DeletedAt field.Field // 删除时间 + DeletedBy field.String // 删除人 + + fieldMap map[string]field.Expr +} + +func (o observabilityView) Table(newTableName string) *observabilityView { + o.observabilityViewDo.UseTable(newTableName) + return o.updateTableName(newTableName) +} + +func (o observabilityView) As(alias string) *observabilityView { + o.observabilityViewDo.DO = *(o.observabilityViewDo.As(alias).(*gen.DO)) + return o.updateTableName(alias) +} + +func (o *observabilityView) updateTableName(table string) *observabilityView { + o.ALL = field.NewAsterisk(table) + o.ID = field.NewInt64(table, "id") + o.EnterpriseID = field.NewString(table, "enterprise_id") + o.WorkspaceID = field.NewInt64(table, "workspace_id") + o.ViewName = field.NewString(table, "view_name") + o.PlatformType = field.NewString(table, "platform_type") + o.SpanListType = field.NewString(table, "span_list_type") + o.Filters = field.NewString(table, "filters") + o.CreatedAt = field.NewTime(table, "created_at") + o.CreatedBy = field.NewString(table, "created_by") + o.UpdatedAt = field.NewTime(table, "updated_at") + o.UpdatedBy = field.NewString(table, "updated_by") + o.IsDeleted = field.NewBool(table, "is_deleted") + o.DeletedAt = field.NewField(table, "deleted_at") + o.DeletedBy = field.NewString(table, "deleted_by") + + o.fillFieldMap() + + return o +} + +func (o *observabilityView) WithContext(ctx context.Context) *observabilityViewDo { + return o.observabilityViewDo.WithContext(ctx) +} + +func (o observabilityView) TableName() string { return o.observabilityViewDo.TableName() } + +func (o observabilityView) Alias() string { return o.observabilityViewDo.Alias() } + +func (o observabilityView) Columns(cols ...field.Expr) gen.Columns { + return o.observabilityViewDo.Columns(cols...) +} + +func (o *observabilityView) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := o.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (o *observabilityView) fillFieldMap() { + o.fieldMap = make(map[string]field.Expr, 14) + o.fieldMap["id"] = o.ID + o.fieldMap["enterprise_id"] = o.EnterpriseID + o.fieldMap["workspace_id"] = o.WorkspaceID + o.fieldMap["view_name"] = o.ViewName + o.fieldMap["platform_type"] = o.PlatformType + o.fieldMap["span_list_type"] = o.SpanListType + o.fieldMap["filters"] = o.Filters + o.fieldMap["created_at"] = o.CreatedAt + o.fieldMap["created_by"] = o.CreatedBy + o.fieldMap["updated_at"] = o.UpdatedAt + o.fieldMap["updated_by"] = o.UpdatedBy + o.fieldMap["is_deleted"] = o.IsDeleted + o.fieldMap["deleted_at"] = o.DeletedAt + o.fieldMap["deleted_by"] = o.DeletedBy +} + +func (o observabilityView) clone(db *gorm.DB) observabilityView { + o.observabilityViewDo.ReplaceConnPool(db.Statement.ConnPool) + return o +} + +func (o observabilityView) replaceDB(db *gorm.DB) observabilityView { + o.observabilityViewDo.ReplaceDB(db) + return o +} + +type observabilityViewDo struct{ gen.DO } + +func (o observabilityViewDo) Debug() *observabilityViewDo { + return o.withDO(o.DO.Debug()) +} + +func (o observabilityViewDo) WithContext(ctx context.Context) *observabilityViewDo { + return o.withDO(o.DO.WithContext(ctx)) +} + +func (o observabilityViewDo) ReadDB() *observabilityViewDo { + return o.Clauses(dbresolver.Read) +} + +func (o observabilityViewDo) WriteDB() *observabilityViewDo { + return o.Clauses(dbresolver.Write) +} + +func (o observabilityViewDo) Session(config *gorm.Session) *observabilityViewDo { + return o.withDO(o.DO.Session(config)) +} + +func (o observabilityViewDo) Clauses(conds ...clause.Expression) *observabilityViewDo { + return o.withDO(o.DO.Clauses(conds...)) +} + +func (o observabilityViewDo) Returning(value interface{}, columns ...string) *observabilityViewDo { + return o.withDO(o.DO.Returning(value, columns...)) +} + +func (o observabilityViewDo) Not(conds ...gen.Condition) *observabilityViewDo { + return o.withDO(o.DO.Not(conds...)) +} + +func (o observabilityViewDo) Or(conds ...gen.Condition) *observabilityViewDo { + return o.withDO(o.DO.Or(conds...)) +} + +func (o observabilityViewDo) Select(conds ...field.Expr) *observabilityViewDo { + return o.withDO(o.DO.Select(conds...)) +} + +func (o observabilityViewDo) Where(conds ...gen.Condition) *observabilityViewDo { + return o.withDO(o.DO.Where(conds...)) +} + +func (o observabilityViewDo) Order(conds ...field.Expr) *observabilityViewDo { + return o.withDO(o.DO.Order(conds...)) +} + +func (o observabilityViewDo) Distinct(cols ...field.Expr) *observabilityViewDo { + return o.withDO(o.DO.Distinct(cols...)) +} + +func (o observabilityViewDo) Omit(cols ...field.Expr) *observabilityViewDo { + return o.withDO(o.DO.Omit(cols...)) +} + +func (o observabilityViewDo) Join(table schema.Tabler, on ...field.Expr) *observabilityViewDo { + return o.withDO(o.DO.Join(table, on...)) +} + +func (o observabilityViewDo) LeftJoin(table schema.Tabler, on ...field.Expr) *observabilityViewDo { + return o.withDO(o.DO.LeftJoin(table, on...)) +} + +func (o observabilityViewDo) RightJoin(table schema.Tabler, on ...field.Expr) *observabilityViewDo { + return o.withDO(o.DO.RightJoin(table, on...)) +} + +func (o observabilityViewDo) Group(cols ...field.Expr) *observabilityViewDo { + return o.withDO(o.DO.Group(cols...)) +} + +func (o observabilityViewDo) Having(conds ...gen.Condition) *observabilityViewDo { + return o.withDO(o.DO.Having(conds...)) +} + +func (o observabilityViewDo) Limit(limit int) *observabilityViewDo { + return o.withDO(o.DO.Limit(limit)) +} + +func (o observabilityViewDo) Offset(offset int) *observabilityViewDo { + return o.withDO(o.DO.Offset(offset)) +} + +func (o observabilityViewDo) Scopes(funcs ...func(gen.Dao) gen.Dao) *observabilityViewDo { + return o.withDO(o.DO.Scopes(funcs...)) +} + +func (o observabilityViewDo) Unscoped() *observabilityViewDo { + return o.withDO(o.DO.Unscoped()) +} + +func (o observabilityViewDo) Create(values ...*model.ObservabilityView) error { + if len(values) == 0 { + return nil + } + return o.DO.Create(values) +} + +func (o observabilityViewDo) CreateInBatches(values []*model.ObservabilityView, batchSize int) error { + return o.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (o observabilityViewDo) Save(values ...*model.ObservabilityView) error { + if len(values) == 0 { + return nil + } + return o.DO.Save(values) +} + +func (o observabilityViewDo) First() (*model.ObservabilityView, error) { + if result, err := o.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityView), nil + } +} + +func (o observabilityViewDo) Take() (*model.ObservabilityView, error) { + if result, err := o.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityView), nil + } +} + +func (o observabilityViewDo) Last() (*model.ObservabilityView, error) { + if result, err := o.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityView), nil + } +} + +func (o observabilityViewDo) Find() ([]*model.ObservabilityView, error) { + result, err := o.DO.Find() + return result.([]*model.ObservabilityView), err +} + +func (o observabilityViewDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ObservabilityView, err error) { + buf := make([]*model.ObservabilityView, 0, batchSize) + err = o.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (o observabilityViewDo) FindInBatches(result *[]*model.ObservabilityView, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return o.DO.FindInBatches(result, batchSize, fc) +} + +func (o observabilityViewDo) Attrs(attrs ...field.AssignExpr) *observabilityViewDo { + return o.withDO(o.DO.Attrs(attrs...)) +} + +func (o observabilityViewDo) Assign(attrs ...field.AssignExpr) *observabilityViewDo { + return o.withDO(o.DO.Assign(attrs...)) +} + +func (o observabilityViewDo) Joins(fields ...field.RelationField) *observabilityViewDo { + for _, _f := range fields { + o = *o.withDO(o.DO.Joins(_f)) + } + return &o +} + +func (o observabilityViewDo) Preload(fields ...field.RelationField) *observabilityViewDo { + for _, _f := range fields { + o = *o.withDO(o.DO.Preload(_f)) + } + return &o +} + +func (o observabilityViewDo) FirstOrInit() (*model.ObservabilityView, error) { + if result, err := o.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityView), nil + } +} + +func (o observabilityViewDo) FirstOrCreate() (*model.ObservabilityView, error) { + if result, err := o.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityView), nil + } +} + +func (o observabilityViewDo) FindByPage(offset int, limit int) (result []*model.ObservabilityView, count int64, err error) { + result, err = o.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = o.Offset(-1).Limit(-1).Count() + return +} + +func (o observabilityViewDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = o.Count() + if err != nil { + return + } + + err = o.Offset(offset).Limit(limit).Scan(result) + return +} + +func (o observabilityViewDo) Scan(result interface{}) (err error) { + return o.DO.Scan(result) +} + +func (o observabilityViewDo) Delete(models ...*model.ObservabilityView) (result gen.ResultInfo, err error) { + return o.DO.Delete(models) +} + +func (o *observabilityViewDo) withDO(do gen.Dao) *observabilityViewDo { + o.DO = *do.(*gen.DO) + return o +} diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go new file mode 100644 index 000000000..6822b179b --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go @@ -0,0 +1,388 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" +) + +func newObservabilityTask(db *gorm.DB, opts ...gen.DOOption) observabilityTask { + _observabilityTask := observabilityTask{} + + _observabilityTask.observabilityTaskDo.UseDB(db, opts...) + _observabilityTask.observabilityTaskDo.UseModel(&model.ObservabilityTask{}) + + tableName := _observabilityTask.observabilityTaskDo.TableName() + _observabilityTask.ALL = field.NewAsterisk(tableName) + _observabilityTask.ID = field.NewInt64(tableName, "id") + _observabilityTask.WorkspaceID = field.NewInt64(tableName, "workspace_id") + _observabilityTask.Name = field.NewString(tableName, "name") + _observabilityTask.Description = field.NewString(tableName, "description") + _observabilityTask.TaskType = field.NewString(tableName, "task_type") + _observabilityTask.TaskStatus = field.NewString(tableName, "task_status") + _observabilityTask.TaskDetail = field.NewString(tableName, "task_detail") + _observabilityTask.SpanFilter = field.NewString(tableName, "span_filter") + _observabilityTask.EffectiveTime = field.NewString(tableName, "effective_time") + _observabilityTask.Sampler = field.NewString(tableName, "sampler") + _observabilityTask.TaskConfig = field.NewString(tableName, "task_config") + _observabilityTask.CreatedAt = field.NewTime(tableName, "created_at") + _observabilityTask.UpdatedAt = field.NewTime(tableName, "updated_at") + _observabilityTask.CreatedBy = field.NewString(tableName, "created_by") + _observabilityTask.UpdatedBy = field.NewString(tableName, "updated_by") + + _observabilityTask.fillFieldMap() + + return _observabilityTask +} + +// observabilityTask 任务信息 +type observabilityTask struct { + observabilityTaskDo observabilityTaskDo + + ALL field.Asterisk + ID field.Int64 // Task ID + WorkspaceID field.Int64 // 空间ID + Name field.String // 任务名称 + Description field.String // 任务描述 + TaskType field.String // 任务类型 + TaskStatus field.String // 任务状态 + TaskDetail field.String // 任务运行状态详情 + SpanFilter field.String // span 过滤条件 + EffectiveTime field.String // 生效时间 + Sampler field.String // 采样器 + TaskConfig field.String // 相关任务的配置信息 + CreatedAt field.Time // 创建时间 + UpdatedAt field.Time // 更新时间 + CreatedBy field.String // 创建人 + UpdatedBy field.String // 更新人 + + fieldMap map[string]field.Expr +} + +func (o observabilityTask) Table(newTableName string) *observabilityTask { + o.observabilityTaskDo.UseTable(newTableName) + return o.updateTableName(newTableName) +} + +func (o observabilityTask) As(alias string) *observabilityTask { + o.observabilityTaskDo.DO = *(o.observabilityTaskDo.As(alias).(*gen.DO)) + return o.updateTableName(alias) +} + +func (o *observabilityTask) updateTableName(table string) *observabilityTask { + o.ALL = field.NewAsterisk(table) + o.ID = field.NewInt64(table, "id") + o.WorkspaceID = field.NewInt64(table, "workspace_id") + o.Name = field.NewString(table, "name") + o.Description = field.NewString(table, "description") + o.TaskType = field.NewString(table, "task_type") + o.TaskStatus = field.NewString(table, "task_status") + o.TaskDetail = field.NewString(table, "task_detail") + o.SpanFilter = field.NewString(table, "span_filter") + o.EffectiveTime = field.NewString(table, "effective_time") + o.Sampler = field.NewString(table, "sampler") + o.TaskConfig = field.NewString(table, "task_config") + o.CreatedAt = field.NewTime(table, "created_at") + o.UpdatedAt = field.NewTime(table, "updated_at") + o.CreatedBy = field.NewString(table, "created_by") + o.UpdatedBy = field.NewString(table, "updated_by") + + o.fillFieldMap() + + return o +} + +func (o *observabilityTask) WithContext(ctx context.Context) *observabilityTaskDo { + return o.observabilityTaskDo.WithContext(ctx) +} + +func (o observabilityTask) TableName() string { return o.observabilityTaskDo.TableName() } + +func (o observabilityTask) Alias() string { return o.observabilityTaskDo.Alias() } + +func (o observabilityTask) Columns(cols ...field.Expr) gen.Columns { + return o.observabilityTaskDo.Columns(cols...) +} + +func (o *observabilityTask) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := o.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (o *observabilityTask) fillFieldMap() { + o.fieldMap = make(map[string]field.Expr, 15) + o.fieldMap["id"] = o.ID + o.fieldMap["workspace_id"] = o.WorkspaceID + o.fieldMap["name"] = o.Name + o.fieldMap["description"] = o.Description + o.fieldMap["task_type"] = o.TaskType + o.fieldMap["task_status"] = o.TaskStatus + o.fieldMap["task_detail"] = o.TaskDetail + o.fieldMap["span_filter"] = o.SpanFilter + o.fieldMap["effective_time"] = o.EffectiveTime + o.fieldMap["sampler"] = o.Sampler + o.fieldMap["task_config"] = o.TaskConfig + o.fieldMap["created_at"] = o.CreatedAt + o.fieldMap["updated_at"] = o.UpdatedAt + o.fieldMap["created_by"] = o.CreatedBy + o.fieldMap["updated_by"] = o.UpdatedBy +} + +func (o observabilityTask) clone(db *gorm.DB) observabilityTask { + o.observabilityTaskDo.ReplaceConnPool(db.Statement.ConnPool) + return o +} + +func (o observabilityTask) replaceDB(db *gorm.DB) observabilityTask { + o.observabilityTaskDo.ReplaceDB(db) + return o +} + +type observabilityTaskDo struct{ gen.DO } + +func (o observabilityTaskDo) Debug() *observabilityTaskDo { + return o.withDO(o.DO.Debug()) +} + +func (o observabilityTaskDo) WithContext(ctx context.Context) *observabilityTaskDo { + return o.withDO(o.DO.WithContext(ctx)) +} + +func (o observabilityTaskDo) ReadDB() *observabilityTaskDo { + return o.Clauses(dbresolver.Read) +} + +func (o observabilityTaskDo) WriteDB() *observabilityTaskDo { + return o.Clauses(dbresolver.Write) +} + +func (o observabilityTaskDo) Session(config *gorm.Session) *observabilityTaskDo { + return o.withDO(o.DO.Session(config)) +} + +func (o observabilityTaskDo) Clauses(conds ...clause.Expression) *observabilityTaskDo { + return o.withDO(o.DO.Clauses(conds...)) +} + +func (o observabilityTaskDo) Returning(value interface{}, columns ...string) *observabilityTaskDo { + return o.withDO(o.DO.Returning(value, columns...)) +} + +func (o observabilityTaskDo) Not(conds ...gen.Condition) *observabilityTaskDo { + return o.withDO(o.DO.Not(conds...)) +} + +func (o observabilityTaskDo) Or(conds ...gen.Condition) *observabilityTaskDo { + return o.withDO(o.DO.Or(conds...)) +} + +func (o observabilityTaskDo) Select(conds ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Select(conds...)) +} + +func (o observabilityTaskDo) Where(conds ...gen.Condition) *observabilityTaskDo { + return o.withDO(o.DO.Where(conds...)) +} + +func (o observabilityTaskDo) Order(conds ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Order(conds...)) +} + +func (o observabilityTaskDo) Distinct(cols ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Distinct(cols...)) +} + +func (o observabilityTaskDo) Omit(cols ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Omit(cols...)) +} + +func (o observabilityTaskDo) Join(table schema.Tabler, on ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Join(table, on...)) +} + +func (o observabilityTaskDo) LeftJoin(table schema.Tabler, on ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.LeftJoin(table, on...)) +} + +func (o observabilityTaskDo) RightJoin(table schema.Tabler, on ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.RightJoin(table, on...)) +} + +func (o observabilityTaskDo) Group(cols ...field.Expr) *observabilityTaskDo { + return o.withDO(o.DO.Group(cols...)) +} + +func (o observabilityTaskDo) Having(conds ...gen.Condition) *observabilityTaskDo { + return o.withDO(o.DO.Having(conds...)) +} + +func (o observabilityTaskDo) Limit(limit int) *observabilityTaskDo { + return o.withDO(o.DO.Limit(limit)) +} + +func (o observabilityTaskDo) Offset(offset int) *observabilityTaskDo { + return o.withDO(o.DO.Offset(offset)) +} + +func (o observabilityTaskDo) Scopes(funcs ...func(gen.Dao) gen.Dao) *observabilityTaskDo { + return o.withDO(o.DO.Scopes(funcs...)) +} + +func (o observabilityTaskDo) Unscoped() *observabilityTaskDo { + return o.withDO(o.DO.Unscoped()) +} + +func (o observabilityTaskDo) Create(values ...*model.ObservabilityTask) error { + if len(values) == 0 { + return nil + } + return o.DO.Create(values) +} + +func (o observabilityTaskDo) CreateInBatches(values []*model.ObservabilityTask, batchSize int) error { + return o.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (o observabilityTaskDo) Save(values ...*model.ObservabilityTask) error { + if len(values) == 0 { + return nil + } + return o.DO.Save(values) +} + +func (o observabilityTaskDo) First() (*model.ObservabilityTask, error) { + if result, err := o.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTask), nil + } +} + +func (o observabilityTaskDo) Take() (*model.ObservabilityTask, error) { + if result, err := o.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTask), nil + } +} + +func (o observabilityTaskDo) Last() (*model.ObservabilityTask, error) { + if result, err := o.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTask), nil + } +} + +func (o observabilityTaskDo) Find() ([]*model.ObservabilityTask, error) { + result, err := o.DO.Find() + return result.([]*model.ObservabilityTask), err +} + +func (o observabilityTaskDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ObservabilityTask, err error) { + buf := make([]*model.ObservabilityTask, 0, batchSize) + err = o.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (o observabilityTaskDo) FindInBatches(result *[]*model.ObservabilityTask, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return o.DO.FindInBatches(result, batchSize, fc) +} + +func (o observabilityTaskDo) Attrs(attrs ...field.AssignExpr) *observabilityTaskDo { + return o.withDO(o.DO.Attrs(attrs...)) +} + +func (o observabilityTaskDo) Assign(attrs ...field.AssignExpr) *observabilityTaskDo { + return o.withDO(o.DO.Assign(attrs...)) +} + +func (o observabilityTaskDo) Joins(fields ...field.RelationField) *observabilityTaskDo { + for _, _f := range fields { + o = *o.withDO(o.DO.Joins(_f)) + } + return &o +} + +func (o observabilityTaskDo) Preload(fields ...field.RelationField) *observabilityTaskDo { + for _, _f := range fields { + o = *o.withDO(o.DO.Preload(_f)) + } + return &o +} + +func (o observabilityTaskDo) FirstOrInit() (*model.ObservabilityTask, error) { + if result, err := o.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTask), nil + } +} + +func (o observabilityTaskDo) FirstOrCreate() (*model.ObservabilityTask, error) { + if result, err := o.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.ObservabilityTask), nil + } +} + +func (o observabilityTaskDo) FindByPage(offset int, limit int) (result []*model.ObservabilityTask, count int64, err error) { + result, err = o.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = o.Offset(-1).Limit(-1).Count() + return +} + +func (o observabilityTaskDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = o.Count() + if err != nil { + return + } + + err = o.Offset(offset).Limit(limit).Scan(result) + return +} + +func (o observabilityTaskDo) Scan(result interface{}) (err error) { + return o.DO.Scan(result) +} + +func (o observabilityTaskDo) Delete(models ...*model.ObservabilityTask) (result gen.ResultInfo, err error) { + return o.DO.Delete(models) +} + +func (o *observabilityTaskDo) withDO(do gen.Dao) *observabilityTaskDo { + o.DO = *do.(*gen.DO) + return o +} diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go new file mode 100644 index 000000000..22002a7bb --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go @@ -0,0 +1,280 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package mysql + +import ( + "context" + "errors" + "fmt" + "strconv" + + "github.com/coze-dev/coze-loop/backend/infra/db" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" + genquery "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/logs" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +// 默认限制条数 +const ( + DefaultLimit = 20 + MaxLimit = 501 + DefaultOffset = 0 +) + +type ListTaskParam struct { + WorkspaceIDs []int64 + TaskFilters *filter.TaskFilterFields + ReqLimit int32 + ReqOffset int32 + OrderBy *common.OrderBy +} + +//go:generate mockgen -destination=mocks/task.go -package=mocks . ITaskDao +type ITaskDao interface { + GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTask, error) + CreateTask(ctx context.Context, po *model.ObservabilityTask) (int64, error) + UpdateTask(ctx context.Context, po *model.ObservabilityTask) error + DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error + ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) +} + +func NewTaskDaoImpl(db db.Provider) ITaskDao { + return &TaskDaoImpl{ + dbMgr: db, + } +} + +type TaskDaoImpl struct { + dbMgr db.Provider +} + +func (v *TaskDaoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTask, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + qd := q.WithContext(ctx).Where(q.ID.Eq(id)) + if workspaceID != nil { + qd = qd.Where(q.WorkspaceID.Eq(*workspaceID)) + } + if userID != nil { + qd = qd.Where(q.CreatedBy.Eq(*userID)) + } + TaskPo, err := qd.First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Task not found")) + } else { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + } + return TaskPo, nil +} + +func (v *TaskDaoImpl) CreateTask(ctx context.Context, po *model.ObservabilityTask) (int64, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + if err := q.WithContext(ctx).Create(po); err != nil { + if errors.Is(err, gorm.ErrDuplicatedKey) { + return 0, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Task duplicate key")) + } else { + return 0, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + } else { + return po.ID, nil + } +} + +func (v *TaskDaoImpl) UpdateTask(ctx context.Context, po *model.ObservabilityTask) error { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + if err := q.WithContext(ctx).Save(po); err != nil { + return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } else { + return nil + } +} + +func (v *TaskDaoImpl) DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask + qd := q.WithContext(ctx).Where(q.ID.Eq(id)).Where(q.WorkspaceID.Eq(workspaceID)).Where(q.CreatedBy.Eq(userID)) + info, err := qd.Delete() + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + logs.CtxInfo(ctx, "%d rows deleted", info.RowsAffected) + return nil +} + +func (v *TaskDaoImpl) ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)) + qd := q.WithContext(ctx).ObservabilityTask + var total int64 + if len(param.WorkspaceIDs) != 0 { + qd = qd.Where(q.ObservabilityTask.WorkspaceID.In(param.WorkspaceIDs...)) + } + // 应用过滤条件 + qdf, err := v.applyTaskFilters(q, param.TaskFilters) + if err != nil { + return nil, 0, err + } + if qdf != nil { + qd = qd.Where(qdf) + } + // order by + qd = qd.Order(v.order(q, param.OrderBy.GetField(), param.OrderBy.GetIsAsc())) + // 计算分页参数 + limit, offset := calculatePagination(param.ReqLimit, param.ReqOffset) + results, err := qd.Limit(limit).Offset(offset).Find() + if err != nil { + return nil, total, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, total, nil +} + +// 处理任务过滤条件 +func (v *TaskDaoImpl) applyTaskFilters(q *query.Query, taskFilters *filter.TaskFilterFields) (field.Expr, error) { + var filterExpr field.Expr + if taskFilters == nil { + return nil, nil + } + for _, f := range taskFilters.FilterFields { + if f.FieldName == nil || f.QueryType == nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("field name or query type is nil")) + } + + switch *f.FieldName { + case filter.TaskFieldNameTaskName: + switch *f.QueryType { + case filter.QueryTypeEq: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg(("no value provided for query"))) + } + filterExpr = q.ObservabilityTask.Name.Eq(f.Values[0]) + case filter.QueryTypeMatch: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for query")) + } + filterExpr = q.ObservabilityTask.Name.Like(fmt.Sprintf("%%%s%%", f.Values[0])) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task name")) + } + case filter.TaskFieldNameTaskType: + switch *f.QueryType { + case filter.QueryTypeIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) + } + filterExpr = q.ObservabilityTask.TaskType.In(f.Values...) + case filter.QueryTypeNotIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) + } + filterExpr = q.ObservabilityTask.TaskType.NotIn(f.Values...) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task type")) + } + case filter.TaskFieldNameTaskStatus: + switch *f.QueryType { + case filter.QueryTypeIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) + } + filterExpr = q.ObservabilityTask.TaskStatus.In(f.Values...) + case filter.QueryTypeNotIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) + } + filterExpr = q.ObservabilityTask.TaskStatus.NotIn(f.Values...) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task status")) + } + case filter.TaskFieldNameCreatedBy: + switch *f.QueryType { + case filter.QueryTypeIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) + } + filterExpr = q.ObservabilityTask.CreatedBy.In(f.Values...) + case filter.QueryTypeNotIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) + } + filterExpr = q.ObservabilityTask.CreatedBy.NotIn(f.Values...) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for created_by")) + } + case filter.TaskFieldNameSampleRate: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for sample rate")) + } + //sampleRate, err := strconv.ParseFloat(f.Values[0], 64) + //if err != nil { + // return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid sample rate: %v", err.Error())) + //} + switch *f.QueryType { + case filter.QueryTypeGte: + //filterExpr = q.ObservabilityTask.Sampler.Gte(sampleRate) + //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') >= ?", sampleRate) + case filter.QueryTypeLte: + //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') <= ?", sampleRate) + case filter.QueryTypeEq: + //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') = ?", sampleRate) + case filter.QueryTypeNotEq: + //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') !=?", sampleRate) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for sample rate")) + } + case "task_id": + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for task id")) + } + var taskIDs []int64 + for _, value := range f.Values { + taskID, err := strconv.ParseInt(value, 10, 64) + if err != nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid task id: %v", err.Error())) + } + taskIDs = append(taskIDs, taskID) + } + + filterExpr = q.ObservabilityTask.ID.In(taskIDs...) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid filter field name: %s", *f.FieldName)) + } + } + + return filterExpr, nil +} + +// 计算分页参数 +func calculatePagination(reqLimit, reqOffset int32) (int, int) { + limit := DefaultLimit + if reqLimit > 0 && reqLimit < MaxLimit { + limit = int(reqLimit) + } + + offset := DefaultOffset + if reqOffset > 0 { + offset = int(reqOffset) + } + + return limit, offset +} + +func (d *TaskDaoImpl) order(q *query.Query, orderBy string, asc bool) field.Expr { + var orderExpr field.OrderExpr + switch orderBy { + case "created_at": + orderExpr = q.ObservabilityTask.CreatedAt + default: + orderExpr = q.ObservabilityTask.CreatedAt + } + if asc { + return orderExpr.Asc() + } + return orderExpr.Desc() +} diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task_run.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task_run.go new file mode 100755 index 000000000..7b4592e19 --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task_run.go @@ -0,0 +1,233 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package mysql + +import ( + "context" + "errors" + "strconv" + + "github.com/coze-dev/coze-loop/backend/infra/db" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" + genquery "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/logs" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type ListTaskRunParam struct { + WorkspaceIDs []int64 + TaskID *int64 + TaskRunFilters *filter.TaskFilterFields // 暂时复用TaskFilterFields,后续可扩展为TaskRunFilterFields + ReqLimit int32 + ReqOffset int32 + OrderBy *common.OrderBy +} + +//go:generate mockgen -destination=mocks/task_run.go -package=mocks . ITaskRunDao +type ITaskRunDao interface { + GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTaskRun, error) + CreateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) (int64, error) + UpdateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) error + DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error + ListTaskRuns(ctx context.Context, param ListTaskRunParam) ([]*model.ObservabilityTaskRun, int64, error) +} + +func NewTaskRunDaoImpl(db db.Provider) ITaskRunDao { + return &TaskRunDaoImpl{ + dbMgr: db, + } +} + +type TaskRunDaoImpl struct { + dbMgr db.Provider +} + +func (v *TaskRunDaoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTaskRun, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.ID.Eq(id)) + if workspaceID != nil { + qd = qd.Where(q.WorkspaceID.Eq(*workspaceID)) + } + if userID != nil { + // 注意:TaskRun模型中没有CreatedBy字段,此过滤条件暂时跳过 + // 如果需要按创建者过滤,需要通过关联Task表来实现 + } + taskRunPo, err := qd.First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found")) + } else { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + } + return taskRunPo, nil +} + +func (v *TaskRunDaoImpl) CreateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) (int64, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + if err := q.WithContext(ctx).Create(po); err != nil { + if errors.Is(err, gorm.ErrDuplicatedKey) { + return 0, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun duplicate key")) + } else { + return 0, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + } else { + return po.ID, nil + } +} + +func (v *TaskRunDaoImpl) UpdateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) error { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + if err := q.WithContext(ctx).Save(po); err != nil { + return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } else { + return nil + } +} + +func (v *TaskRunDaoImpl) DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + // 注意:TaskRun模型中没有CreatedBy字段,只能按ID和WorkspaceID过滤 + qd := q.WithContext(ctx).Where(q.ID.Eq(id)).Where(q.WorkspaceID.Eq(workspaceID)) + // userID参数暂时忽略,因为TaskRun模型中没有CreatedBy字段 + info, err := qd.Delete() + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + logs.CtxInfo(ctx, "%d rows deleted", info.RowsAffected) + return nil +} + +func (v *TaskRunDaoImpl) ListTaskRuns(ctx context.Context, param ListTaskRunParam) ([]*model.ObservabilityTaskRun, int64, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)) + qd := q.WithContext(ctx).ObservabilityTaskRun + var total int64 + + // 工作空间过滤 + if len(param.WorkspaceIDs) != 0 { + qd = qd.Where(q.ObservabilityTaskRun.WorkspaceID.In(param.WorkspaceIDs...)) + } + + // TaskID过滤 + if param.TaskID != nil { + qd = qd.Where(q.ObservabilityTaskRun.TaskID.Eq(*param.TaskID)) + } + + // 应用过滤条件 + qdf, err := v.applyTaskRunFilters(q, param.TaskRunFilters) + if err != nil { + return nil, 0, err + } + if qdf != nil { + qd = qd.Where(qdf) + } + + // 排序 + qd = qd.Order(v.order(q, param.OrderBy.GetField(), param.OrderBy.GetIsAsc())) + + // 计算总数 + total, err = qd.Count() + if err != nil { + return nil, 0, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + + // 计算分页参数 + limit, offset := calculatePagination(param.ReqLimit, param.ReqOffset) + results, err := qd.Limit(limit).Offset(offset).Find() + if err != nil { + return nil, total, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, total, nil +} + +// 处理TaskRun过滤条件 +func (v *TaskRunDaoImpl) applyTaskRunFilters(q *query.Query, taskRunFilters *filter.TaskFilterFields) (field.Expr, error) { + var filterExpr field.Expr + if taskRunFilters == nil { + return nil, nil + } + + for _, f := range taskRunFilters.FilterFields { + if f.FieldName == nil || f.QueryType == nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("field name or query type is nil")) + } + + switch *f.FieldName { + case "task_run_id": + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for task run id")) + } + var taskRunIDs []int64 + for _, value := range f.Values { + taskRunID, err := strconv.ParseInt(value, 10, 64) + if err != nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid task run id: %v", err.Error())) + } + taskRunIDs = append(taskRunIDs, taskRunID) + } + filterExpr = q.ObservabilityTaskRun.ID.In(taskRunIDs...) + case "task_id": + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for task id")) + } + var taskIDs []int64 + for _, value := range f.Values { + taskID, err := strconv.ParseInt(value, 10, 64) + if err != nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid task id: %v", err.Error())) + } + taskIDs = append(taskIDs, taskID) + } + filterExpr = q.ObservabilityTaskRun.TaskID.In(taskIDs...) + case "task_run_status": + switch *f.QueryType { + case filter.QueryTypeIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) + } + filterExpr = q.ObservabilityTaskRun.RunStatus.In(f.Values...) + case filter.QueryTypeNotIn: + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) + } + filterExpr = q.ObservabilityTaskRun.RunStatus.NotIn(f.Values...) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task run status")) + } + case "created_by": + // TaskRun模型中没有CreatedBy字段,如果需要按创建者过滤,需要通过关联Task表来实现 + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("created_by filter not supported for TaskRun, use Task association instead")) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid filter field name: %s", *f.FieldName)) + } + } + + return filterExpr, nil +} + +func (d *TaskRunDaoImpl) order(q *query.Query, orderBy string, asc bool) field.Expr { + var orderExpr field.OrderExpr + switch orderBy { + case "created_at": + orderExpr = q.ObservabilityTaskRun.CreatedAt + case "run_start_at": + orderExpr = q.ObservabilityTaskRun.RunStartAt + case "run_end_at": + orderExpr = q.ObservabilityTaskRun.RunEndAt + case "updated_at": + orderExpr = q.ObservabilityTaskRun.UpdatedAt + default: + orderExpr = q.ObservabilityTaskRun.CreatedAt + } + if asc { + return orderExpr.Asc() + } + return orderExpr.Desc() +} \ No newline at end of file diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 97898c2e4..4831e6986 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -20,6 +20,10 @@ const TaskStatus TaskStatus_Success = "success" // 成功 const TaskStatus TaskStatus_Pending = "pending" // 中止 const TaskStatus TaskStatus_Disabled = "disabled" // 禁用 +typedef string RunStatus (ts.enum="true") +const RunStatus RunStatus_Running = "running" // 正在运行 +const RunStatus RunStatus_Done = "done" // 完成运行 + // Task struct Task { 1: optional i64 id // 任务 id @@ -30,8 +34,8 @@ struct Task { 6: optional TaskStatus task_status // 状态 7: optional Rule rule // 规则 8: optional TaskConfig task_config // 配置 - 9: optional TaskDetail task_detail // 任务状态详情 - 10: optional TaskDetail backfill_task_detail // 任务历史数据执行详情 + 9: optional RunDetail task_detail // 任务状态详情 + 10: optional RunDetail backfill_task_detail // 任务历史数据执行详情 100: optional common.BaseInfo base_info // 基础信息 } @@ -78,8 +82,8 @@ struct AutoEvaluateConfig { 3: required list field_mappings } -// TaskDetail -struct TaskDetail { +// RunDetail +struct RunDetail { 1: optional i64 success_count 2: optional i64 failed_count } @@ -93,13 +97,18 @@ struct FieldMapping { // TaskRun struct TaskRun { - 1: optional i64 id // 任务 run id - 2: optional i64 workspace_id // 所在空间 - 3: optional i64 task_id // 任务 id - 4: optional TaskType task_type // 类型 - 5: required i64 start_run_at - 6: required i64 end_run_at - 7: optional TaskRunConfig task_run_config // 配置 + 1: required i64 id // 任务 run id + 2: required i64 workspace_id // 所在空间 + 3: required i64 task_id // 任务 id + 4: required TaskType task_type // 类型 + 5: required RunStatus run_status // 状态 + 6: optional RunDetail run_detail // 任务状态详情 + 7: optional RunDetail backfill_run_detail // 任务历史数据执行详情 + 8: required i64 run_start_at + 9: required i64 run_end_at + 10: optional TaskRunConfig task_run_config // 配置 + + 100: optional common.BaseInfo base_info // 基础信息 } struct TaskRunConfig { 1: optional AutoEvaluateRunConfig auto_evaluate_run_config // 自动评测对应的运行配置信息 From 276137d373a6bc7f9b1ec25d1cdf1ae9bca62bba Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 5 Sep 2025 15:39:50 +0800 Subject: [PATCH 071/462] feat:fix task idl --- .../loop/observability/domain/task/k-task.go | 102 +++++++---- .../loop/observability/domain/task/task.go | 159 +++++++++++------- .../domain/task/task_validator.go | 7 +- .../coze.loop.observability.task.thrift | 12 +- .../loop/observability/domain/task.thrift | 6 +- 5 files changed, 170 insertions(+), 116 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index 2424f31ec..1e9400a10 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -1562,7 +1562,7 @@ func (p *TaskConfig) FastRead(buf []byte) (int, error) { } } case 2: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.LIST { l, err = p.FastReadField2(buf[offset:]) offset += l if err != nil { @@ -1620,13 +1620,26 @@ func (p *TaskConfig) FastReadField1(buf []byte) (int, error) { func (p *TaskConfig) FastReadField2(buf []byte) (int, error) { offset := 0 - _field := NewDatasetConfig() - if l, err := _field.FastRead(buf[offset:]); err != nil { + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { return offset, err - } else { - offset += l } - p.DataReflowConfig = _field + _field := make([]*DataReflowConfig, 0, size) + values := make([]DataReflowConfig, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.DataReflowConfigs = _field return offset, nil } @@ -1672,9 +1685,16 @@ func (p *TaskConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { func (p *TaskConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetDataReflowConfig() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 2) - offset += p.DataReflowConfig.FastWriteNocopy(buf[offset:], w) + if p.IsSetDataReflowConfigs() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.DataReflowConfigs { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) } return offset } @@ -1694,9 +1714,13 @@ func (p *TaskConfig) field1Length() int { func (p *TaskConfig) field2Length() int { l := 0 - if p.IsSetDataReflowConfig() { + if p.IsSetDataReflowConfigs() { l += thrift.Binary.FieldBeginLength() - l += p.DataReflowConfig.BLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.DataReflowConfigs { + _ = v + l += v.BLength() + } } return l } @@ -1722,19 +1746,25 @@ func (p *TaskConfig) DeepCopy(s interface{}) error { } } - var _dataReflowConfig *DatasetConfig - if src.DataReflowConfig != nil { - _dataReflowConfig = &DatasetConfig{} - if err := _dataReflowConfig.DeepCopy(src.DataReflowConfig); err != nil { - return err + if src.DataReflowConfigs != nil { + p.DataReflowConfigs = make([]*DataReflowConfig, 0, len(src.DataReflowConfigs)) + for _, elem := range src.DataReflowConfigs { + var _elem *DataReflowConfig + if elem != nil { + _elem = &DataReflowConfig{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.DataReflowConfigs = append(p.DataReflowConfigs, _elem) } } - p.DataReflowConfig = _dataReflowConfig return nil } -func (p *DatasetConfig) FastRead(buf []byte) (int, error) { +func (p *DataReflowConfig) FastRead(buf []byte) (int, error) { var err error var offset int @@ -1820,12 +1850,12 @@ func (p *DatasetConfig) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DatasetConfig[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DataReflowConfig[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) } -func (p *DatasetConfig) FastReadField1(buf []byte) (int, error) { +func (p *DataReflowConfig) FastReadField1(buf []byte) (int, error) { offset := 0 var _field *int64 @@ -1839,7 +1869,7 @@ func (p *DatasetConfig) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *DatasetConfig) FastReadField2(buf []byte) (int, error) { +func (p *DataReflowConfig) FastReadField2(buf []byte) (int, error) { offset := 0 var _field *string @@ -1853,7 +1883,7 @@ func (p *DatasetConfig) FastReadField2(buf []byte) (int, error) { return offset, nil } -func (p *DatasetConfig) FastReadField3(buf []byte) (int, error) { +func (p *DataReflowConfig) FastReadField3(buf []byte) (int, error) { offset := 0 _field := dataset.NewDatasetSchema() if l, err := _field.FastRead(buf[offset:]); err != nil { @@ -1865,7 +1895,7 @@ func (p *DatasetConfig) FastReadField3(buf []byte) (int, error) { return offset, nil } -func (p *DatasetConfig) FastReadField4(buf []byte) (int, error) { +func (p *DataReflowConfig) FastReadField4(buf []byte) (int, error) { offset := 0 _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) @@ -1890,11 +1920,11 @@ func (p *DatasetConfig) FastReadField4(buf []byte) (int, error) { return offset, nil } -func (p *DatasetConfig) FastWrite(buf []byte) int { +func (p *DataReflowConfig) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *DatasetConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *DataReflowConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -1906,7 +1936,7 @@ func (p *DatasetConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { return offset } -func (p *DatasetConfig) BLength() int { +func (p *DataReflowConfig) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -1918,7 +1948,7 @@ func (p *DatasetConfig) BLength() int { return l } -func (p *DatasetConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *DataReflowConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetDatasetID() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) @@ -1927,7 +1957,7 @@ func (p *DatasetConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { return offset } -func (p *DatasetConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { +func (p *DataReflowConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetDatasetName() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) @@ -1936,7 +1966,7 @@ func (p *DatasetConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { return offset } -func (p *DatasetConfig) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { +func (p *DataReflowConfig) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetDatasetSchema() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 3) @@ -1945,7 +1975,7 @@ func (p *DatasetConfig) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { return offset } -func (p *DatasetConfig) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { +func (p *DataReflowConfig) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetFieldMappings() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 4) @@ -1961,7 +1991,7 @@ func (p *DatasetConfig) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { return offset } -func (p *DatasetConfig) field1Length() int { +func (p *DataReflowConfig) field1Length() int { l := 0 if p.IsSetDatasetID() { l += thrift.Binary.FieldBeginLength() @@ -1970,7 +2000,7 @@ func (p *DatasetConfig) field1Length() int { return l } -func (p *DatasetConfig) field2Length() int { +func (p *DataReflowConfig) field2Length() int { l := 0 if p.IsSetDatasetName() { l += thrift.Binary.FieldBeginLength() @@ -1979,7 +2009,7 @@ func (p *DatasetConfig) field2Length() int { return l } -func (p *DatasetConfig) field3Length() int { +func (p *DataReflowConfig) field3Length() int { l := 0 if p.IsSetDatasetSchema() { l += thrift.Binary.FieldBeginLength() @@ -1988,7 +2018,7 @@ func (p *DatasetConfig) field3Length() int { return l } -func (p *DatasetConfig) field4Length() int { +func (p *DataReflowConfig) field4Length() int { l := 0 if p.IsSetFieldMappings() { l += thrift.Binary.FieldBeginLength() @@ -2001,8 +2031,8 @@ func (p *DatasetConfig) field4Length() int { return l } -func (p *DatasetConfig) DeepCopy(s interface{}) error { - src, ok := s.(*DatasetConfig) +func (p *DataReflowConfig) DeepCopy(s interface{}) error { + src, ok := s.(*DataReflowConfig) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 0dabd9507..95772b964 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -2173,7 +2173,7 @@ type TaskConfig struct { // 配置的评测规则信息 AutoEvaluateConfigs []*AutoEvaluateConfig `thrift:"auto_evaluate_configs,1,optional" frugal:"1,optional,list" form:"auto_evaluate_configs" json:"auto_evaluate_configs,omitempty" query:"auto_evaluate_configs"` // 配置的数据回流的数据集信息 - DataReflowConfig *DatasetConfig `thrift:"data_reflow_config,2,optional" frugal:"2,optional,DatasetConfig" form:"data_reflow_config" json:"data_reflow_config,omitempty" query:"data_reflow_config"` + DataReflowConfigs []*DataReflowConfig `thrift:"data_reflow_configs,2,optional" frugal:"2,optional,list" form:"data_reflow_configs" json:"data_reflow_configs,omitempty" query:"data_reflow_configs"` } func NewTaskConfig() *TaskConfig { @@ -2195,35 +2195,35 @@ func (p *TaskConfig) GetAutoEvaluateConfigs() (v []*AutoEvaluateConfig) { return p.AutoEvaluateConfigs } -var TaskConfig_DataReflowConfig_DEFAULT *DatasetConfig +var TaskConfig_DataReflowConfigs_DEFAULT []*DataReflowConfig -func (p *TaskConfig) GetDataReflowConfig() (v *DatasetConfig) { +func (p *TaskConfig) GetDataReflowConfigs() (v []*DataReflowConfig) { if p == nil { return } - if !p.IsSetDataReflowConfig() { - return TaskConfig_DataReflowConfig_DEFAULT + if !p.IsSetDataReflowConfigs() { + return TaskConfig_DataReflowConfigs_DEFAULT } - return p.DataReflowConfig + return p.DataReflowConfigs } func (p *TaskConfig) SetAutoEvaluateConfigs(val []*AutoEvaluateConfig) { p.AutoEvaluateConfigs = val } -func (p *TaskConfig) SetDataReflowConfig(val *DatasetConfig) { - p.DataReflowConfig = val +func (p *TaskConfig) SetDataReflowConfigs(val []*DataReflowConfig) { + p.DataReflowConfigs = val } var fieldIDToName_TaskConfig = map[int16]string{ 1: "auto_evaluate_configs", - 2: "data_reflow_config", + 2: "data_reflow_configs", } func (p *TaskConfig) IsSetAutoEvaluateConfigs() bool { return p.AutoEvaluateConfigs != nil } -func (p *TaskConfig) IsSetDataReflowConfig() bool { - return p.DataReflowConfig != nil +func (p *TaskConfig) IsSetDataReflowConfigs() bool { + return p.DataReflowConfigs != nil } func (p *TaskConfig) Read(iprot thrift.TProtocol) (err error) { @@ -2253,7 +2253,7 @@ func (p *TaskConfig) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 2: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.LIST { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } @@ -2313,11 +2313,26 @@ func (p *TaskConfig) ReadField1(iprot thrift.TProtocol) error { return nil } func (p *TaskConfig) ReadField2(iprot thrift.TProtocol) error { - _field := NewDatasetConfig() - if err := _field.Read(iprot); err != nil { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*DataReflowConfig, 0, size) + values := make([]DataReflowConfig, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { return err } - p.DataReflowConfig = _field + p.DataReflowConfigs = _field return nil } @@ -2380,11 +2395,19 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } func (p *TaskConfig) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetDataReflowConfig() { - if err = oprot.WriteFieldBegin("data_reflow_config", thrift.STRUCT, 2); err != nil { + if p.IsSetDataReflowConfigs() { + if err = oprot.WriteFieldBegin("data_reflow_configs", thrift.LIST, 2); err != nil { goto WriteFieldBeginError } - if err := p.DataReflowConfig.Write(oprot); err != nil { + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.DataReflowConfigs)); err != nil { + return err + } + for _, v := range p.DataReflowConfigs { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -2415,7 +2438,7 @@ func (p *TaskConfig) DeepEqual(ano *TaskConfig) bool { if !p.Field1DeepEqual(ano.AutoEvaluateConfigs) { return false } - if !p.Field2DeepEqual(ano.DataReflowConfig) { + if !p.Field2DeepEqual(ano.DataReflowConfigs) { return false } return true @@ -2434,15 +2457,21 @@ func (p *TaskConfig) Field1DeepEqual(src []*AutoEvaluateConfig) bool { } return true } -func (p *TaskConfig) Field2DeepEqual(src *DatasetConfig) bool { +func (p *TaskConfig) Field2DeepEqual(src []*DataReflowConfig) bool { - if !p.DataReflowConfig.DeepEqual(src) { + if len(p.DataReflowConfigs) != len(src) { return false } + for i, v := range p.DataReflowConfigs { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } return true } -type DatasetConfig struct { +type DataReflowConfig struct { // 数据集id,新增数据集时可为空 DatasetID *int64 `thrift:"dataset_id,1,optional" frugal:"1,optional,i64" json:"dataset_id" form:"dataset_id" query:"dataset_id"` // 数据集名称 @@ -2452,97 +2481,97 @@ type DatasetConfig struct { FieldMappings []*dataset.FieldMapping `thrift:"field_mappings,4,optional" frugal:"4,optional,list" form:"field_mappings" json:"field_mappings,omitempty"` } -func NewDatasetConfig() *DatasetConfig { - return &DatasetConfig{} +func NewDataReflowConfig() *DataReflowConfig { + return &DataReflowConfig{} } -func (p *DatasetConfig) InitDefault() { +func (p *DataReflowConfig) InitDefault() { } -var DatasetConfig_DatasetID_DEFAULT int64 +var DataReflowConfig_DatasetID_DEFAULT int64 -func (p *DatasetConfig) GetDatasetID() (v int64) { +func (p *DataReflowConfig) GetDatasetID() (v int64) { if p == nil { return } if !p.IsSetDatasetID() { - return DatasetConfig_DatasetID_DEFAULT + return DataReflowConfig_DatasetID_DEFAULT } return *p.DatasetID } -var DatasetConfig_DatasetName_DEFAULT string +var DataReflowConfig_DatasetName_DEFAULT string -func (p *DatasetConfig) GetDatasetName() (v string) { +func (p *DataReflowConfig) GetDatasetName() (v string) { if p == nil { return } if !p.IsSetDatasetName() { - return DatasetConfig_DatasetName_DEFAULT + return DataReflowConfig_DatasetName_DEFAULT } return *p.DatasetName } -var DatasetConfig_DatasetSchema_DEFAULT *dataset.DatasetSchema +var DataReflowConfig_DatasetSchema_DEFAULT *dataset.DatasetSchema -func (p *DatasetConfig) GetDatasetSchema() (v *dataset.DatasetSchema) { +func (p *DataReflowConfig) GetDatasetSchema() (v *dataset.DatasetSchema) { if p == nil { return } if !p.IsSetDatasetSchema() { - return DatasetConfig_DatasetSchema_DEFAULT + return DataReflowConfig_DatasetSchema_DEFAULT } return p.DatasetSchema } -var DatasetConfig_FieldMappings_DEFAULT []*dataset.FieldMapping +var DataReflowConfig_FieldMappings_DEFAULT []*dataset.FieldMapping -func (p *DatasetConfig) GetFieldMappings() (v []*dataset.FieldMapping) { +func (p *DataReflowConfig) GetFieldMappings() (v []*dataset.FieldMapping) { if p == nil { return } if !p.IsSetFieldMappings() { - return DatasetConfig_FieldMappings_DEFAULT + return DataReflowConfig_FieldMappings_DEFAULT } return p.FieldMappings } -func (p *DatasetConfig) SetDatasetID(val *int64) { +func (p *DataReflowConfig) SetDatasetID(val *int64) { p.DatasetID = val } -func (p *DatasetConfig) SetDatasetName(val *string) { +func (p *DataReflowConfig) SetDatasetName(val *string) { p.DatasetName = val } -func (p *DatasetConfig) SetDatasetSchema(val *dataset.DatasetSchema) { +func (p *DataReflowConfig) SetDatasetSchema(val *dataset.DatasetSchema) { p.DatasetSchema = val } -func (p *DatasetConfig) SetFieldMappings(val []*dataset.FieldMapping) { +func (p *DataReflowConfig) SetFieldMappings(val []*dataset.FieldMapping) { p.FieldMappings = val } -var fieldIDToName_DatasetConfig = map[int16]string{ +var fieldIDToName_DataReflowConfig = map[int16]string{ 1: "dataset_id", 2: "dataset_name", 3: "dataset_schema", 4: "field_mappings", } -func (p *DatasetConfig) IsSetDatasetID() bool { +func (p *DataReflowConfig) IsSetDatasetID() bool { return p.DatasetID != nil } -func (p *DatasetConfig) IsSetDatasetName() bool { +func (p *DataReflowConfig) IsSetDatasetName() bool { return p.DatasetName != nil } -func (p *DatasetConfig) IsSetDatasetSchema() bool { +func (p *DataReflowConfig) IsSetDatasetSchema() bool { return p.DatasetSchema != nil } -func (p *DatasetConfig) IsSetFieldMappings() bool { +func (p *DataReflowConfig) IsSetFieldMappings() bool { return p.FieldMappings != nil } -func (p *DatasetConfig) Read(iprot thrift.TProtocol) (err error) { +func (p *DataReflowConfig) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -2611,7 +2640,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DatasetConfig[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DataReflowConfig[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -2621,7 +2650,7 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *DatasetConfig) ReadField1(iprot thrift.TProtocol) error { +func (p *DataReflowConfig) ReadField1(iprot thrift.TProtocol) error { var _field *int64 if v, err := iprot.ReadI64(); err != nil { @@ -2632,7 +2661,7 @@ func (p *DatasetConfig) ReadField1(iprot thrift.TProtocol) error { p.DatasetID = _field return nil } -func (p *DatasetConfig) ReadField2(iprot thrift.TProtocol) error { +func (p *DataReflowConfig) ReadField2(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -2643,7 +2672,7 @@ func (p *DatasetConfig) ReadField2(iprot thrift.TProtocol) error { p.DatasetName = _field return nil } -func (p *DatasetConfig) ReadField3(iprot thrift.TProtocol) error { +func (p *DataReflowConfig) ReadField3(iprot thrift.TProtocol) error { _field := dataset.NewDatasetSchema() if err := _field.Read(iprot); err != nil { return err @@ -2651,7 +2680,7 @@ func (p *DatasetConfig) ReadField3(iprot thrift.TProtocol) error { p.DatasetSchema = _field return nil } -func (p *DatasetConfig) ReadField4(iprot thrift.TProtocol) error { +func (p *DataReflowConfig) ReadField4(iprot thrift.TProtocol) error { _, size, err := iprot.ReadListBegin() if err != nil { return err @@ -2675,9 +2704,9 @@ func (p *DatasetConfig) ReadField4(iprot thrift.TProtocol) error { return nil } -func (p *DatasetConfig) Write(oprot thrift.TProtocol) (err error) { +func (p *DataReflowConfig) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DatasetConfig"); err != nil { + if err = oprot.WriteStructBegin("DataReflowConfig"); err != nil { goto WriteStructBeginError } if p != nil { @@ -2715,7 +2744,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *DatasetConfig) writeField1(oprot thrift.TProtocol) (err error) { +func (p *DataReflowConfig) writeField1(oprot thrift.TProtocol) (err error) { if p.IsSetDatasetID() { if err = oprot.WriteFieldBegin("dataset_id", thrift.I64, 1); err != nil { goto WriteFieldBeginError @@ -2733,7 +2762,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *DatasetConfig) writeField2(oprot thrift.TProtocol) (err error) { +func (p *DataReflowConfig) writeField2(oprot thrift.TProtocol) (err error) { if p.IsSetDatasetName() { if err = oprot.WriteFieldBegin("dataset_name", thrift.STRING, 2); err != nil { goto WriteFieldBeginError @@ -2751,7 +2780,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *DatasetConfig) writeField3(oprot thrift.TProtocol) (err error) { +func (p *DataReflowConfig) writeField3(oprot thrift.TProtocol) (err error) { if p.IsSetDatasetSchema() { if err = oprot.WriteFieldBegin("dataset_schema", thrift.STRUCT, 3); err != nil { goto WriteFieldBeginError @@ -2769,7 +2798,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } -func (p *DatasetConfig) writeField4(oprot thrift.TProtocol) (err error) { +func (p *DataReflowConfig) writeField4(oprot thrift.TProtocol) (err error) { if p.IsSetFieldMappings() { if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 4); err != nil { goto WriteFieldBeginError @@ -2796,15 +2825,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } -func (p *DatasetConfig) String() string { +func (p *DataReflowConfig) String() string { if p == nil { return "" } - return fmt.Sprintf("DatasetConfig(%+v)", *p) + return fmt.Sprintf("DataReflowConfig(%+v)", *p) } -func (p *DatasetConfig) DeepEqual(ano *DatasetConfig) bool { +func (p *DataReflowConfig) DeepEqual(ano *DataReflowConfig) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -2825,7 +2854,7 @@ func (p *DatasetConfig) DeepEqual(ano *DatasetConfig) bool { return true } -func (p *DatasetConfig) Field1DeepEqual(src *int64) bool { +func (p *DataReflowConfig) Field1DeepEqual(src *int64) bool { if p.DatasetID == src { return true @@ -2837,7 +2866,7 @@ func (p *DatasetConfig) Field1DeepEqual(src *int64) bool { } return true } -func (p *DatasetConfig) Field2DeepEqual(src *string) bool { +func (p *DataReflowConfig) Field2DeepEqual(src *string) bool { if p.DatasetName == src { return true @@ -2849,14 +2878,14 @@ func (p *DatasetConfig) Field2DeepEqual(src *string) bool { } return true } -func (p *DatasetConfig) Field3DeepEqual(src *dataset.DatasetSchema) bool { +func (p *DataReflowConfig) Field3DeepEqual(src *dataset.DatasetSchema) bool { if !p.DatasetSchema.DeepEqual(src) { return false } return true } -func (p *DatasetConfig) Field4DeepEqual(src []*dataset.FieldMapping) bool { +func (p *DataReflowConfig) Field4DeepEqual(src []*dataset.FieldMapping) bool { if len(p.FieldMappings) != len(src) { return false diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go index 251913f50..3d1b1291e 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go @@ -79,14 +79,9 @@ func (p *EffectiveTime) IsValid() error { return nil } func (p *TaskConfig) IsValid() error { - if p.DataReflowConfig != nil { - if err := p.DataReflowConfig.IsValid(); err != nil { - return fmt.Errorf("field DataReflowConfig not valid, %w", err) - } - } return nil } -func (p *DatasetConfig) IsValid() error { +func (p *DataReflowConfig) IsValid() error { if p.DatasetSchema == nil { return fmt.Errorf("field DatasetSchema not_nil rule failed") } diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift index 4f6758d10..b6ae37865 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift @@ -12,13 +12,13 @@ struct CreateTaskRequest { } struct CreateTaskResponse { - 1: optional i64 task_id (api.js_conv="true" api.body = "task_id"), + 1: optional i64 task_id (api.js_conv="true" api.body="task_id"), 255: optional base.BaseResp BaseResp } struct UpdateTaskRequest { - 1: required i64 task_id (api.js_conv="true" api.path = "task_id"), + 1: required i64 task_id (api.js_conv="true" api.path="task_id"), 2: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"', api.body="workspace_id", vt.gt="0") 3: optional task.TaskStatus task_status (api.body = "task_status"), 4: optional string description (api.body = "description"), @@ -45,7 +45,7 @@ struct ListTasksRequest { struct ListTasksResponse { 1: optional list tasks (api.body = "tasks"), - 100: optional i64 total (api.js_conv="true" api.body = "total"), + 100: optional i64 total (api.js_conv="true" api.body="total"), 255: optional base.BaseResp BaseResp } @@ -57,7 +57,7 @@ struct GetTaskRequest { } struct GetTaskResponse { - 1: optional task.Task task (api.body = "task"), + 1: optional task.Task task (api.body="task"), 255: optional base.BaseResp BaseResp } @@ -69,8 +69,8 @@ struct CheckTaskNameRequest { } struct CheckTaskNameResponse { - 1: optional bool Pass (agw.key = 'pass') - 2: optional string Message (agw.key ='message') + 1: optional bool Pass (agw.key='pass') + 2: optional string Message (agw.key='message') 255: base.BaseResp BaseResp } diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 4831e6986..6e0c0ca76 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -65,11 +65,11 @@ struct EffectiveTime { // TaskConfig struct TaskConfig { - 1: optional list auto_evaluate_configs // 配置的评测规则信息 - 2: optional DatasetConfig data_reflow_config // 配置的数据回流的数据集信息 + 1: optional list auto_evaluate_configs // 配置的评测规则信息 + 2: optional list data_reflow_configs // 配置的数据回流的数据集信息 } -struct DatasetConfig { +struct DataReflowConfig { 1: optional i64 dataset_id (api.js_conv="true", go.tag='json:"dataset_id"') // 数据集id,新增数据集时可为空 2: optional string dataset_name // 数据集名称 3: optional export_dataset.DatasetSchema dataset_schema (vt.not_nil="true") // 数据集列数据schema From 71ca47e4478ad823d75299d6410ab58a90008582 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 5 Sep 2025 16:04:24 +0800 Subject: [PATCH 072/462] feat: [Coda] add redis cache layer for task repository CRUD operations (LogID: 20250905155038010091108038747D807) Co-Authored-By: Coda --- .../loop/observability/domain/task/k-task.go | 414 +++++++++++-- .../loop/observability/domain/task/task.go | 561 +++++++++++++++--- .../evaluation/domain/entity/evaluation.go | 4 + .../application/convertor/task/task.go | 2 + .../modules/observability/application/task.go | 30 +- .../modules/observability/application/wire.go | 8 +- .../domain/component/rpc/evaluation.go | 67 +++ .../observability/domain/task/entity/event.go | 77 ++- .../observability/domain/task/entity/task.go | 18 +- .../observability/domain/task/repo/task.go | 2 + .../task/taskexe/processor/auto_evaluate.go | 455 ++++++++++++++ .../task/taskexe/processor/data_reflow.go | 37 ++ .../domain/task/taskexe/processor/factory.go | 36 ++ .../task/taskexe/processor/singleton.go | 4 + .../domain/task/taskexe/tracehub/trace_hub.go | 114 +++- .../domain/task/taskexe/types.go | 10 + .../domain/trace/entity/dataset.go | 16 + .../domain/trace/service/trace_service.go | 2 +- .../infra/mq/consumer/task_consumer.go | 4 +- .../observability/infra/repo/mysql/task.go | 27 + .../infra/repo/redis/convert/task.go | 53 ++ .../infra/repo/redis/dao/task.go | 347 +++++++++++ .../observability/infra/repo/redis/task.go | 38 -- .../modules/observability/infra/repo/task.go | 225 ++++++- .../infra/rpc/evaluation/evaluation.go | 106 ++++ .../infra/repo/mysql/cache/cache_manager.go | 247 ++++++++ .../infra/repo/mysql/cache/key_generator.go | 55 ++ .../infra/repo/mysql/cache/redis_client.go | 52 ++ .../observability/infra/repo/mysql/task.go | 8 +- .../loop/observability/domain/task.thrift | 16 +- 30 files changed, 2811 insertions(+), 224 deletions(-) create mode 100644 backend/modules/evaluation/domain/entity/evaluation.go create mode 100644 backend/modules/observability/domain/component/rpc/evaluation.go create mode 100644 backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go create mode 100644 backend/modules/observability/domain/task/taskexe/processor/data_reflow.go create mode 100644 backend/modules/observability/domain/task/taskexe/processor/factory.go create mode 100644 backend/modules/observability/domain/task/taskexe/processor/singleton.go create mode 100644 backend/modules/observability/infra/repo/redis/convert/task.go create mode 100644 backend/modules/observability/infra/repo/redis/dao/task.go delete mode 100644 backend/modules/observability/infra/repo/redis/task.go create mode 100644 backend/modules/observability/infra/rpc/evaluation/evaluation.go create mode 100755 backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/cache_manager.go create mode 100755 backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/key_generator.go create mode 100755 backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/redis_client.go diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index 1e9400a10..6c96d4582 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -1639,7 +1639,7 @@ func (p *TaskConfig) FastReadField2(buf []byte) (int, error) { _field = append(_field, _elem) } - p.DataReflowConfigs = _field + p.DataReflowConfig = _field return offset, nil } @@ -1685,12 +1685,12 @@ func (p *TaskConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { func (p *TaskConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetDataReflowConfigs() { + if p.IsSetDataReflowConfig() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 2) listBeginOffset := offset offset += thrift.Binary.ListBeginLength() var length int - for _, v := range p.DataReflowConfigs { + for _, v := range p.DataReflowConfig { length++ offset += v.FastWriteNocopy(buf[offset:], w) } @@ -1714,10 +1714,10 @@ func (p *TaskConfig) field1Length() int { func (p *TaskConfig) field2Length() int { l := 0 - if p.IsSetDataReflowConfigs() { + if p.IsSetDataReflowConfig() { l += thrift.Binary.FieldBeginLength() l += thrift.Binary.ListBeginLength() - for _, v := range p.DataReflowConfigs { + for _, v := range p.DataReflowConfig { _ = v l += v.BLength() } @@ -1746,9 +1746,9 @@ func (p *TaskConfig) DeepCopy(s interface{}) error { } } - if src.DataReflowConfigs != nil { - p.DataReflowConfigs = make([]*DataReflowConfig, 0, len(src.DataReflowConfigs)) - for _, elem := range src.DataReflowConfigs { + if src.DataReflowConfig != nil { + p.DataReflowConfig = make([]*DataReflowConfig, 0, len(src.DataReflowConfig)) + for _, elem := range src.DataReflowConfig { var _elem *DataReflowConfig if elem != nil { _elem = &DataReflowConfig{} @@ -1757,7 +1757,7 @@ func (p *TaskConfig) DeepCopy(s interface{}) error { } } - p.DataReflowConfigs = append(p.DataReflowConfigs, _elem) + p.DataReflowConfig = append(p.DataReflowConfig, _elem) } } @@ -3577,9 +3577,14 @@ func (p *AutoEvaluateRunConfig) FastRead(buf []byte) (int, error) { var l int var fieldTypeId thrift.TType var fieldId int16 - var issetEvaluatorVersionID bool = false - var issetEvaluatorID bool = false - var issetFieldMappings bool = false + var issetExptID bool = false + var issetExptRunID bool = false + var issetEvalID bool = false + var issetSchemaID bool = false + var issetEndAt bool = false + var issetCycleStartAt bool = false + var issetCycleEndAt bool = false + var issetStatus bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -3597,7 +3602,7 @@ func (p *AutoEvaluateRunConfig) FastRead(buf []byte) (int, error) { if err != nil { goto ReadFieldError } - issetEvaluatorVersionID = true + issetExptID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -3612,7 +3617,7 @@ func (p *AutoEvaluateRunConfig) FastRead(buf []byte) (int, error) { if err != nil { goto ReadFieldError } - issetEvaluatorID = true + issetExptRunID = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -3621,13 +3626,102 @@ func (p *AutoEvaluateRunConfig) FastRead(buf []byte) (int, error) { } } case 3: - if fieldTypeId == thrift.LIST { + if fieldTypeId == thrift.I64 { l, err = p.FastReadField3(buf[offset:]) offset += l if err != nil { goto ReadFieldError } - issetFieldMappings = true + issetEvalID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetSchemaID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEndAt = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 7: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField7(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetCycleStartAt = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 8: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField8(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetCycleEndAt = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 9: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField9(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetStatus = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -3644,20 +3738,45 @@ func (p *AutoEvaluateRunConfig) FastRead(buf []byte) (int, error) { } } - if !issetEvaluatorVersionID { + if !issetExptID { fieldId = 1 goto RequiredFieldNotSetError } - if !issetEvaluatorID { + if !issetExptRunID { fieldId = 2 goto RequiredFieldNotSetError } - if !issetFieldMappings { + if !issetEvalID { fieldId = 3 goto RequiredFieldNotSetError } + + if !issetSchemaID { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetEndAt { + fieldId = 6 + goto RequiredFieldNotSetError + } + + if !issetCycleStartAt { + fieldId = 7 + goto RequiredFieldNotSetError + } + + if !issetCycleEndAt { + fieldId = 8 + goto RequiredFieldNotSetError + } + + if !issetStatus { + fieldId = 9 + goto RequiredFieldNotSetError + } return offset, nil ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) @@ -3679,7 +3798,7 @@ func (p *AutoEvaluateRunConfig) FastReadField1(buf []byte) (int, error) { offset += l _field = v } - p.EvaluatorVersionID = _field + p.ExptID = _field return offset, nil } @@ -3693,32 +3812,105 @@ func (p *AutoEvaluateRunConfig) FastReadField2(buf []byte) (int, error) { offset += l _field = v } - p.EvaluatorID = _field + p.ExptRunID = _field return offset, nil } func (p *AutoEvaluateRunConfig) FastReadField3(buf []byte) (int, error) { offset := 0 - _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) - offset += l - if err != nil { + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { return offset, err + } else { + offset += l + _field = v } - _field := make([]*FieldMapping, 0, size) - values := make([]FieldMapping, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - if l, err := _elem.FastRead(buf[offset:]); err != nil { - return offset, err - } else { - offset += l - } + p.EvalID = _field + return offset, nil +} - _field = append(_field, _elem) +func (p *AutoEvaluateRunConfig) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v } - p.FieldMappings = _field + p.SchemaID = _field + return offset, nil +} + +func (p *AutoEvaluateRunConfig) FastReadField5(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Schema = _field + return offset, nil +} + +func (p *AutoEvaluateRunConfig) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EndAt = _field + return offset, nil +} + +func (p *AutoEvaluateRunConfig) FastReadField7(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.CycleStartAt = _field + return offset, nil +} + +func (p *AutoEvaluateRunConfig) FastReadField8(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.CycleEndAt = _field + return offset, nil +} + +func (p *AutoEvaluateRunConfig) FastReadField9(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.Status = _field return offset, nil } @@ -3732,6 +3924,12 @@ func (p *AutoEvaluateRunConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWrite offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField7(buf[offset:], w) + offset += p.fastWriteField8(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField9(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -3743,6 +3941,12 @@ func (p *AutoEvaluateRunConfig) BLength() int { l += p.field1Length() l += p.field2Length() l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field6Length() + l += p.field7Length() + l += p.field8Length() + l += p.field9Length() } l += thrift.Binary.FieldStopLength() return l @@ -3751,28 +3955,65 @@ func (p *AutoEvaluateRunConfig) BLength() int { func (p *AutoEvaluateRunConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorVersionID) + offset += thrift.Binary.WriteI64(buf[offset:], p.ExptID) return offset } func (p *AutoEvaluateRunConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) - offset += thrift.Binary.WriteI64(buf[offset:], p.EvaluatorID) + offset += thrift.Binary.WriteI64(buf[offset:], p.ExptRunID) return offset } func (p *AutoEvaluateRunConfig) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { offset := 0 - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 3) - listBeginOffset := offset - offset += thrift.Binary.ListBeginLength() - var length int - for _, v := range p.FieldMappings { - length++ - offset += v.FastWriteNocopy(buf[offset:], w) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 3) + offset += thrift.Binary.WriteI64(buf[offset:], p.EvalID) + return offset +} + +func (p *AutoEvaluateRunConfig) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 4) + offset += thrift.Binary.WriteI64(buf[offset:], p.SchemaID) + return offset +} + +func (p *AutoEvaluateRunConfig) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSchema() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 5) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Schema) } - thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + return offset +} + +func (p *AutoEvaluateRunConfig) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 6) + offset += thrift.Binary.WriteI64(buf[offset:], p.EndAt) + return offset +} + +func (p *AutoEvaluateRunConfig) fastWriteField7(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 7) + offset += thrift.Binary.WriteI64(buf[offset:], p.CycleStartAt) + return offset +} + +func (p *AutoEvaluateRunConfig) fastWriteField8(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 8) + offset += thrift.Binary.WriteI64(buf[offset:], p.CycleEndAt) + return offset +} + +func (p *AutoEvaluateRunConfig) fastWriteField9(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 9) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.Status) return offset } @@ -3793,37 +4034,84 @@ func (p *AutoEvaluateRunConfig) field2Length() int { func (p *AutoEvaluateRunConfig) field3Length() int { l := 0 l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.ListBeginLength() - for _, v := range p.FieldMappings { - _ = v - l += v.BLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AutoEvaluateRunConfig) field4Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AutoEvaluateRunConfig) field5Length() int { + l := 0 + if p.IsSetSchema() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Schema) } return l } +func (p *AutoEvaluateRunConfig) field6Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AutoEvaluateRunConfig) field7Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AutoEvaluateRunConfig) field8Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *AutoEvaluateRunConfig) field9Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.Status) + return l +} + func (p *AutoEvaluateRunConfig) DeepCopy(s interface{}) error { src, ok := s.(*AutoEvaluateRunConfig) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - p.EvaluatorVersionID = src.EvaluatorVersionID + p.ExptID = src.ExptID - p.EvaluatorID = src.EvaluatorID + p.ExptRunID = src.ExptRunID - if src.FieldMappings != nil { - p.FieldMappings = make([]*FieldMapping, 0, len(src.FieldMappings)) - for _, elem := range src.FieldMappings { - var _elem *FieldMapping - if elem != nil { - _elem = &FieldMapping{} - if err := _elem.DeepCopy(elem); err != nil { - return err - } - } + p.EvalID = src.EvalID - p.FieldMappings = append(p.FieldMappings, _elem) + p.SchemaID = src.SchemaID + + if src.Schema != nil { + var tmp string + if *src.Schema != "" { + tmp = kutils.StringDeepCopy(*src.Schema) } + p.Schema = &tmp + } + + p.EndAt = src.EndAt + + p.CycleStartAt = src.CycleStartAt + + p.CycleEndAt = src.CycleEndAt + + if src.Status != "" { + p.Status = kutils.StringDeepCopy(src.Status) } return nil diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 95772b964..339b1bdc4 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -2173,7 +2173,7 @@ type TaskConfig struct { // 配置的评测规则信息 AutoEvaluateConfigs []*AutoEvaluateConfig `thrift:"auto_evaluate_configs,1,optional" frugal:"1,optional,list" form:"auto_evaluate_configs" json:"auto_evaluate_configs,omitempty" query:"auto_evaluate_configs"` // 配置的数据回流的数据集信息 - DataReflowConfigs []*DataReflowConfig `thrift:"data_reflow_configs,2,optional" frugal:"2,optional,list" form:"data_reflow_configs" json:"data_reflow_configs,omitempty" query:"data_reflow_configs"` + DataReflowConfig []*DataReflowConfig `thrift:"data_reflow_config,2,optional" frugal:"2,optional,list" form:"data_reflow_config" json:"data_reflow_config,omitempty" query:"data_reflow_config"` } func NewTaskConfig() *TaskConfig { @@ -2195,35 +2195,35 @@ func (p *TaskConfig) GetAutoEvaluateConfigs() (v []*AutoEvaluateConfig) { return p.AutoEvaluateConfigs } -var TaskConfig_DataReflowConfigs_DEFAULT []*DataReflowConfig +var TaskConfig_DataReflowConfig_DEFAULT []*DataReflowConfig -func (p *TaskConfig) GetDataReflowConfigs() (v []*DataReflowConfig) { +func (p *TaskConfig) GetDataReflowConfig() (v []*DataReflowConfig) { if p == nil { return } - if !p.IsSetDataReflowConfigs() { - return TaskConfig_DataReflowConfigs_DEFAULT + if !p.IsSetDataReflowConfig() { + return TaskConfig_DataReflowConfig_DEFAULT } - return p.DataReflowConfigs + return p.DataReflowConfig } func (p *TaskConfig) SetAutoEvaluateConfigs(val []*AutoEvaluateConfig) { p.AutoEvaluateConfigs = val } -func (p *TaskConfig) SetDataReflowConfigs(val []*DataReflowConfig) { - p.DataReflowConfigs = val +func (p *TaskConfig) SetDataReflowConfig(val []*DataReflowConfig) { + p.DataReflowConfig = val } var fieldIDToName_TaskConfig = map[int16]string{ 1: "auto_evaluate_configs", - 2: "data_reflow_configs", + 2: "data_reflow_config", } func (p *TaskConfig) IsSetAutoEvaluateConfigs() bool { return p.AutoEvaluateConfigs != nil } -func (p *TaskConfig) IsSetDataReflowConfigs() bool { - return p.DataReflowConfigs != nil +func (p *TaskConfig) IsSetDataReflowConfig() bool { + return p.DataReflowConfig != nil } func (p *TaskConfig) Read(iprot thrift.TProtocol) (err error) { @@ -2332,7 +2332,7 @@ func (p *TaskConfig) ReadField2(iprot thrift.TProtocol) error { if err := iprot.ReadListEnd(); err != nil { return err } - p.DataReflowConfigs = _field + p.DataReflowConfig = _field return nil } @@ -2395,14 +2395,14 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } func (p *TaskConfig) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetDataReflowConfigs() { - if err = oprot.WriteFieldBegin("data_reflow_configs", thrift.LIST, 2); err != nil { + if p.IsSetDataReflowConfig() { + if err = oprot.WriteFieldBegin("data_reflow_config", thrift.LIST, 2); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.DataReflowConfigs)); err != nil { + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.DataReflowConfig)); err != nil { return err } - for _, v := range p.DataReflowConfigs { + for _, v := range p.DataReflowConfig { if err := v.Write(oprot); err != nil { return err } @@ -2438,7 +2438,7 @@ func (p *TaskConfig) DeepEqual(ano *TaskConfig) bool { if !p.Field1DeepEqual(ano.AutoEvaluateConfigs) { return false } - if !p.Field2DeepEqual(ano.DataReflowConfigs) { + if !p.Field2DeepEqual(ano.DataReflowConfig) { return false } return true @@ -2459,10 +2459,10 @@ func (p *TaskConfig) Field1DeepEqual(src []*AutoEvaluateConfig) bool { } func (p *TaskConfig) Field2DeepEqual(src []*DataReflowConfig) bool { - if len(p.DataReflowConfigs) != len(src) { + if len(p.DataReflowConfig) != len(src) { return false } - for i, v := range p.DataReflowConfigs { + for i, v := range p.DataReflowConfig { _src := src[i] if !v.DeepEqual(_src) { return false @@ -4928,9 +4928,15 @@ func (p *TaskRunConfig) Field1DeepEqual(src *AutoEvaluateRunConfig) bool { } type AutoEvaluateRunConfig struct { - EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` - EvaluatorID int64 `thrift:"evaluator_id,2,required" frugal:"2,required,i64" form:"evaluator_id,required" json:"evaluator_id,required" query:"evaluator_id,required"` - FieldMappings []*FieldMapping `thrift:"field_mappings,3,required" frugal:"3,required,list" form:"field_mappings,required" json:"field_mappings,required" query:"field_mappings,required"` + ExptID int64 `thrift:"expt_id,1,required" frugal:"1,required,i64" form:"expt_id,required" json:"expt_id,required" query:"expt_id,required"` + ExptRunID int64 `thrift:"expt_run_id,2,required" frugal:"2,required,i64" form:"expt_run_id,required" json:"expt_run_id,required" query:"expt_run_id,required"` + EvalID int64 `thrift:"eval_id,3,required" frugal:"3,required,i64" form:"eval_id,required" json:"eval_id,required" query:"eval_id,required"` + SchemaID int64 `thrift:"schema_id,4,required" frugal:"4,required,i64" form:"schema_id,required" json:"schema_id,required" query:"schema_id,required"` + Schema *string `thrift:"schema,5,optional" frugal:"5,optional,string" form:"schema" json:"schema,omitempty" query:"schema"` + EndAt int64 `thrift:"end_at,6,required" frugal:"6,required,i64" form:"end_at,required" json:"end_at,required" query:"end_at,required"` + CycleStartAt int64 `thrift:"cycle_start_at,7,required" frugal:"7,required,i64" form:"cycle_start_at,required" json:"cycle_start_at,required" query:"cycle_start_at,required"` + CycleEndAt int64 `thrift:"cycle_end_at,8,required" frugal:"8,required,i64" form:"cycle_end_at,required" json:"cycle_end_at,required" query:"cycle_end_at,required"` + Status string `thrift:"status,9,required" frugal:"9,required,string" form:"status,required" json:"status,required" query:"status,required"` } func NewAutoEvaluateRunConfig() *AutoEvaluateRunConfig { @@ -4940,48 +4946,128 @@ func NewAutoEvaluateRunConfig() *AutoEvaluateRunConfig { func (p *AutoEvaluateRunConfig) InitDefault() { } -func (p *AutoEvaluateRunConfig) GetEvaluatorVersionID() (v int64) { +func (p *AutoEvaluateRunConfig) GetExptID() (v int64) { if p != nil { - return p.EvaluatorVersionID + return p.ExptID } return } -func (p *AutoEvaluateRunConfig) GetEvaluatorID() (v int64) { +func (p *AutoEvaluateRunConfig) GetExptRunID() (v int64) { if p != nil { - return p.EvaluatorID + return p.ExptRunID } return } -func (p *AutoEvaluateRunConfig) GetFieldMappings() (v []*FieldMapping) { +func (p *AutoEvaluateRunConfig) GetEvalID() (v int64) { if p != nil { - return p.FieldMappings + return p.EvalID } return } -func (p *AutoEvaluateRunConfig) SetEvaluatorVersionID(val int64) { - p.EvaluatorVersionID = val + +func (p *AutoEvaluateRunConfig) GetSchemaID() (v int64) { + if p != nil { + return p.SchemaID + } + return } -func (p *AutoEvaluateRunConfig) SetEvaluatorID(val int64) { - p.EvaluatorID = val + +var AutoEvaluateRunConfig_Schema_DEFAULT string + +func (p *AutoEvaluateRunConfig) GetSchema() (v string) { + if p == nil { + return + } + if !p.IsSetSchema() { + return AutoEvaluateRunConfig_Schema_DEFAULT + } + return *p.Schema } -func (p *AutoEvaluateRunConfig) SetFieldMappings(val []*FieldMapping) { - p.FieldMappings = val + +func (p *AutoEvaluateRunConfig) GetEndAt() (v int64) { + if p != nil { + return p.EndAt + } + return +} + +func (p *AutoEvaluateRunConfig) GetCycleStartAt() (v int64) { + if p != nil { + return p.CycleStartAt + } + return +} + +func (p *AutoEvaluateRunConfig) GetCycleEndAt() (v int64) { + if p != nil { + return p.CycleEndAt + } + return +} + +func (p *AutoEvaluateRunConfig) GetStatus() (v string) { + if p != nil { + return p.Status + } + return +} +func (p *AutoEvaluateRunConfig) SetExptID(val int64) { + p.ExptID = val +} +func (p *AutoEvaluateRunConfig) SetExptRunID(val int64) { + p.ExptRunID = val +} +func (p *AutoEvaluateRunConfig) SetEvalID(val int64) { + p.EvalID = val +} +func (p *AutoEvaluateRunConfig) SetSchemaID(val int64) { + p.SchemaID = val +} +func (p *AutoEvaluateRunConfig) SetSchema(val *string) { + p.Schema = val +} +func (p *AutoEvaluateRunConfig) SetEndAt(val int64) { + p.EndAt = val +} +func (p *AutoEvaluateRunConfig) SetCycleStartAt(val int64) { + p.CycleStartAt = val +} +func (p *AutoEvaluateRunConfig) SetCycleEndAt(val int64) { + p.CycleEndAt = val +} +func (p *AutoEvaluateRunConfig) SetStatus(val string) { + p.Status = val } var fieldIDToName_AutoEvaluateRunConfig = map[int16]string{ - 1: "evaluator_version_id", - 2: "evaluator_id", - 3: "field_mappings", + 1: "expt_id", + 2: "expt_run_id", + 3: "eval_id", + 4: "schema_id", + 5: "schema", + 6: "end_at", + 7: "cycle_start_at", + 8: "cycle_end_at", + 9: "status", +} + +func (p *AutoEvaluateRunConfig) IsSetSchema() bool { + return p.Schema != nil } func (p *AutoEvaluateRunConfig) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetEvaluatorVersionID bool = false - var issetEvaluatorID bool = false - var issetFieldMappings bool = false + var issetExptID bool = false + var issetExptRunID bool = false + var issetEvalID bool = false + var issetSchemaID bool = false + var issetEndAt bool = false + var issetCycleStartAt bool = false + var issetCycleEndAt bool = false + var issetStatus bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -5002,7 +5088,7 @@ func (p *AutoEvaluateRunConfig) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetEvaluatorVersionID = true + issetExptID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -5011,16 +5097,69 @@ func (p *AutoEvaluateRunConfig) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } - issetEvaluatorID = true + issetExptRunID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 3: - if fieldTypeId == thrift.LIST { + if fieldTypeId == thrift.I64 { if err = p.ReadField3(iprot); err != nil { goto ReadFieldError } - issetFieldMappings = true + issetEvalID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.I64 { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + issetSchemaID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.STRING { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.I64 { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + issetEndAt = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 7: + if fieldTypeId == thrift.I64 { + if err = p.ReadField7(iprot); err != nil { + goto ReadFieldError + } + issetCycleStartAt = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 8: + if fieldTypeId == thrift.I64 { + if err = p.ReadField8(iprot); err != nil { + goto ReadFieldError + } + issetCycleEndAt = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 9: + if fieldTypeId == thrift.STRING { + if err = p.ReadField9(iprot); err != nil { + goto ReadFieldError + } + issetStatus = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -5037,20 +5176,45 @@ func (p *AutoEvaluateRunConfig) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } - if !issetEvaluatorVersionID { + if !issetExptID { fieldId = 1 goto RequiredFieldNotSetError } - if !issetEvaluatorID { + if !issetExptRunID { fieldId = 2 goto RequiredFieldNotSetError } - if !issetFieldMappings { + if !issetEvalID { fieldId = 3 goto RequiredFieldNotSetError } + + if !issetSchemaID { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetEndAt { + fieldId = 6 + goto RequiredFieldNotSetError + } + + if !issetCycleStartAt { + fieldId = 7 + goto RequiredFieldNotSetError + } + + if !issetCycleEndAt { + fieldId = 8 + goto RequiredFieldNotSetError + } + + if !issetStatus { + fieldId = 9 + goto RequiredFieldNotSetError + } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) @@ -5077,7 +5241,7 @@ func (p *AutoEvaluateRunConfig) ReadField1(iprot thrift.TProtocol) error { } else { _field = v } - p.EvaluatorVersionID = _field + p.ExptID = _field return nil } func (p *AutoEvaluateRunConfig) ReadField2(iprot thrift.TProtocol) error { @@ -5088,30 +5252,84 @@ func (p *AutoEvaluateRunConfig) ReadField2(iprot thrift.TProtocol) error { } else { _field = v } - p.EvaluatorID = _field + p.ExptRunID = _field return nil } func (p *AutoEvaluateRunConfig) ReadField3(iprot thrift.TProtocol) error { - _, size, err := iprot.ReadListBegin() - if err != nil { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { return err + } else { + _field = v } - _field := make([]*FieldMapping, 0, size) - values := make([]FieldMapping, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() + p.EvalID = _field + return nil +} +func (p *AutoEvaluateRunConfig) ReadField4(iprot thrift.TProtocol) error { - if err := _elem.Read(iprot); err != nil { - return err - } + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.SchemaID = _field + return nil +} +func (p *AutoEvaluateRunConfig) ReadField5(iprot thrift.TProtocol) error { - _field = append(_field, _elem) + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v } - if err := iprot.ReadListEnd(); err != nil { + p.Schema = _field + return nil +} +func (p *AutoEvaluateRunConfig) ReadField6(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { return err + } else { + _field = v } - p.FieldMappings = _field + p.EndAt = _field + return nil +} +func (p *AutoEvaluateRunConfig) ReadField7(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.CycleStartAt = _field + return nil +} +func (p *AutoEvaluateRunConfig) ReadField8(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.CycleEndAt = _field + return nil +} +func (p *AutoEvaluateRunConfig) ReadField9(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.Status = _field return nil } @@ -5133,6 +5351,30 @@ func (p *AutoEvaluateRunConfig) Write(oprot thrift.TProtocol) (err error) { fieldId = 3 goto WriteFieldError } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + if err = p.writeField7(oprot); err != nil { + fieldId = 7 + goto WriteFieldError + } + if err = p.writeField8(oprot); err != nil { + fieldId = 8 + goto WriteFieldError + } + if err = p.writeField9(oprot); err != nil { + fieldId = 9 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -5152,10 +5394,10 @@ WriteStructEndError: } func (p *AutoEvaluateRunConfig) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluator_version_id", thrift.I64, 1); err != nil { + if err = oprot.WriteFieldBegin("expt_id", thrift.I64, 1); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.EvaluatorVersionID); err != nil { + if err := oprot.WriteI64(p.ExptID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -5168,10 +5410,10 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } func (p *AutoEvaluateRunConfig) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("evaluator_id", thrift.I64, 2); err != nil { + if err = oprot.WriteFieldBegin("expt_run_id", thrift.I64, 2); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.EvaluatorID); err != nil { + if err := oprot.WriteI64(p.ExptRunID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -5184,18 +5426,60 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } func (p *AutoEvaluateRunConfig) writeField3(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("field_mappings", thrift.LIST, 3); err != nil { + if err = oprot.WriteFieldBegin("eval_id", thrift.I64, 3); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FieldMappings)); err != nil { + if err := oprot.WriteI64(p.EvalID); err != nil { return err } - for _, v := range p.FieldMappings { - if err := v.Write(oprot); err != nil { + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *AutoEvaluateRunConfig) writeField4(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("schema_id", thrift.I64, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.SchemaID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *AutoEvaluateRunConfig) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetSchema() { + if err = oprot.WriteFieldBegin("schema", thrift.STRING, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Schema); err != nil { return err } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } - if err := oprot.WriteListEnd(); err != nil { + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *AutoEvaluateRunConfig) writeField6(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("end_at", thrift.I64, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EndAt); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -5203,9 +5487,57 @@ func (p *AutoEvaluateRunConfig) writeField3(oprot thrift.TProtocol) (err error) } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} +func (p *AutoEvaluateRunConfig) writeField7(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("cycle_start_at", thrift.I64, 7); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.CycleStartAt); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) +} +func (p *AutoEvaluateRunConfig) writeField8(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("cycle_end_at", thrift.I64, 8); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.CycleEndAt); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 8 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 8 end error: ", p), err) +} +func (p *AutoEvaluateRunConfig) writeField9(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("status", thrift.STRING, 9); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.Status); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 end error: ", p), err) } func (p *AutoEvaluateRunConfig) String() string { @@ -5222,13 +5554,31 @@ func (p *AutoEvaluateRunConfig) DeepEqual(ano *AutoEvaluateRunConfig) bool { } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.EvaluatorVersionID) { + if !p.Field1DeepEqual(ano.ExptID) { return false } - if !p.Field2DeepEqual(ano.EvaluatorID) { + if !p.Field2DeepEqual(ano.ExptRunID) { return false } - if !p.Field3DeepEqual(ano.FieldMappings) { + if !p.Field3DeepEqual(ano.EvalID) { + return false + } + if !p.Field4DeepEqual(ano.SchemaID) { + return false + } + if !p.Field5DeepEqual(ano.Schema) { + return false + } + if !p.Field6DeepEqual(ano.EndAt) { + return false + } + if !p.Field7DeepEqual(ano.CycleStartAt) { + return false + } + if !p.Field8DeepEqual(ano.CycleEndAt) { + return false + } + if !p.Field9DeepEqual(ano.Status) { return false } return true @@ -5236,28 +5586,69 @@ func (p *AutoEvaluateRunConfig) DeepEqual(ano *AutoEvaluateRunConfig) bool { func (p *AutoEvaluateRunConfig) Field1DeepEqual(src int64) bool { - if p.EvaluatorVersionID != src { + if p.ExptID != src { return false } return true } func (p *AutoEvaluateRunConfig) Field2DeepEqual(src int64) bool { - if p.EvaluatorID != src { + if p.ExptRunID != src { return false } return true } -func (p *AutoEvaluateRunConfig) Field3DeepEqual(src []*FieldMapping) bool { +func (p *AutoEvaluateRunConfig) Field3DeepEqual(src int64) bool { - if len(p.FieldMappings) != len(src) { + if p.EvalID != src { return false } - for i, v := range p.FieldMappings { - _src := src[i] - if !v.DeepEqual(_src) { - return false - } + return true +} +func (p *AutoEvaluateRunConfig) Field4DeepEqual(src int64) bool { + + if p.SchemaID != src { + return false + } + return true +} +func (p *AutoEvaluateRunConfig) Field5DeepEqual(src *string) bool { + + if p.Schema == src { + return true + } else if p.Schema == nil || src == nil { + return false + } + if strings.Compare(*p.Schema, *src) != 0 { + return false + } + return true +} +func (p *AutoEvaluateRunConfig) Field6DeepEqual(src int64) bool { + + if p.EndAt != src { + return false + } + return true +} +func (p *AutoEvaluateRunConfig) Field7DeepEqual(src int64) bool { + + if p.CycleStartAt != src { + return false + } + return true +} +func (p *AutoEvaluateRunConfig) Field8DeepEqual(src int64) bool { + + if p.CycleEndAt != src { + return false + } + return true +} +func (p *AutoEvaluateRunConfig) Field9DeepEqual(src string) bool { + + if strings.Compare(p.Status, src) != 0 { + return false } return true } diff --git a/backend/modules/evaluation/domain/entity/evaluation.go b/backend/modules/evaluation/domain/entity/evaluation.go new file mode 100644 index 000000000..8edaf6d23 --- /dev/null +++ b/backend/modules/evaluation/domain/entity/evaluation.go @@ -0,0 +1,4 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package entity diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 9a960e327..5a08befa8 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -248,6 +248,8 @@ func CreateTaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *en UpdatedAt: time.Now(), CreatedBy: userID, UpdatedBy: userID, + //BackfillTaskDetail: ptr.Of(ToJSONString(ctx, taskDO.GetBackfillTaskDetail())), + //BackfillEffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetBackfillEffectiveTime())), } } func SpanFilterDTO2PO(ctx context.Context, filters *filter.SpanFilterFields, workspaceID int64) *string { diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 7bcead061..19ed8e685 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -12,37 +12,45 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/tracehub" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) type ITaskQueueConsumer interface { - TraceHub(ctx context.Context, event *entity.TaskEvent) error + TraceHub(ctx context.Context, event *entity.RawSpan) error } type ITaskApplication interface { task.TaskService + //ITaskQueueConsumer } func NewTaskApplication( taskService service.ITaskService, authService rpc.IAuthProvider, evalService rpc.IEvaluatorRPCAdapter, + evaluationService rpc.IEvaluationRPCAdapter, userService rpc.IUserProvider, + tracehubSvc tracehub.ITraceHubService, ) (ITaskApplication, error) { return &TaskApplication{ - taskSvc: taskService, - authSvc: authService, - evalSvc: evalService, - userSvc: userService, + taskSvc: taskService, + authSvc: authService, + evalSvc: evalService, + evaluationSvc: evaluationService, + userSvc: userService, + tracehubSvc: tracehubSvc, }, nil } type TaskApplication struct { - taskSvc service.ITaskService - authSvc rpc.IAuthProvider - evalSvc rpc.IEvaluatorRPCAdapter - userSvc rpc.IUserProvider + taskSvc service.ITaskService + authSvc rpc.IAuthProvider + evalSvc rpc.IEvaluatorRPCAdapter + evaluationSvc rpc.IEvaluationRPCAdapter + userSvc rpc.IUserProvider + tracehubSvc tracehub.ITraceHubService } func (t *TaskApplication) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest) (*task.CheckTaskNameResponse, error) { @@ -203,3 +211,7 @@ func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) return resp, nil } + +func (t *TaskApplication) TraceHub(ctx context.Context, event *entity.RawSpan) error { + return t.tracehubSvc.TraceHub(ctx, event) +} diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 7164eb1aa..216d8ee96 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -18,6 +18,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/tag/tagservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluationsetservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluatorservice" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/experimentservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/auth/authservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/file/fileservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/user/userservice" @@ -43,6 +44,7 @@ import ( mysqldao "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/auth" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/dataset" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/evaluation" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/evaluationset" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/evaluator" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/file" @@ -109,6 +111,8 @@ var ( auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, + evaluation.NewEvaluationRPCProvider, + NewDatasetServiceAdapter, taskDomainSet, ) ) @@ -233,7 +237,9 @@ func InitTaskApplication( idgen idgen.IIDGenerator, userClient userservice.Client, authClient authservice.Client, - evalService evaluatorservice.Client) (ITaskApplication, error) { + evalService evaluatorservice.Client, + evalSetService evaluationsetservice.Client, + exptService experimentservice.Client) (ITaskApplication, error) { wire.Build(taskSet) return nil, nil } diff --git a/backend/modules/observability/domain/component/rpc/evaluation.go b/backend/modules/observability/domain/component/rpc/evaluation.go new file mode 100644 index 000000000..80c0070c8 --- /dev/null +++ b/backend/modules/observability/domain/component/rpc/evaluation.go @@ -0,0 +1,67 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package rpc + +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/eval_target" + "github.com/coze-dev/coze-loop/backend/modules/evaluation/domain/entity" +) + +type GetEvaluationSetReq struct { + WorkspaceID int64 + EvaluationSetID int64 +} +type CreateEvaluationSetReq struct { + EvaluationSet *entity.EvaluationSet + Session *common.Session +} +type SubmitExperimentReq struct { + WorkspaceID int64 + EvalSetVersionID *int64 + TargetVersionID *int64 + EvaluatorVersionIds []int64 + Name *string + Desc *string + EvalSetID *int64 + TargetID *int64 + TargetFieldMapping *expt.TargetFieldMapping + EvaluatorFieldMapping []*expt.EvaluatorFieldMapping + ItemConcurNum *int32 + EvaluatorsConcurNum *int32 + CreateEvalTargetParam *eval_target.CreateEvalTargetParam + ExptType *expt.ExptType + MaxAliveTime *int64 + SourceType *expt.SourceType + SourceID *string + Session *common.Session +} +type InvokeExperimentReq struct { + WorkspaceID int64 + EvaluationSetID int64 + Items []*eval_set.EvaluationSetItem + // items 中存在无效数据时,默认不会写入任何数据;设置 skipInvalidItems=true 会跳过无效数据,写入有效数据 // items 中存在无效数据时,默认不会写入任何数据;设置 skipInvalidItems=true 会跳过无效数据,写入有效数据 + SkipInvalidItems *bool + // 批量写入 items 如果超出数据集容量限制,默认不会写入任何数据;设置 partialAdd=true 会写入不超出容量限制的前 N 条 + AllowPartialAdd *bool + ExperimentID *int64 + ExperimentRunID *int64 + Ext map[string]string + Session *common.Session +} +type FinishExperimentReq struct { + WorkspaceID int64 + ExperimentID int64 + ExperimentRunID int64 + Session *common.Session +} +type IEvaluationRPCAdapter interface { + SubmitExperiment(ctx context.Context, param *SubmitExperimentReq) (exptID, exptRunID int64, err error) + InvokeExperiment(ctx context.Context, param *InvokeExperimentReq) (addedItems int64, err error) + FinishExperiment(ctx context.Context, param *FinishExperimentReq) (err error) +} diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go index f46e1f9fe..9779ec6fe 100644 --- a/backend/modules/observability/domain/task/entity/event.go +++ b/backend/modules/observability/domain/task/entity/event.go @@ -3,5 +3,80 @@ package entity -type TaskEvent struct { +type RawSpan struct { + TraceID string `json:"_trace_id"` + LogID string `json:"__logid"` + Method string `json:"_method"` + SpanID string `json:"_span_id"` + ParentID string `json:"_parent_id"` + Events []*EventInRawSpan `json:"_events"` + DurationInUs int64 `json:"_duration"` // unit: microsecond + StartTimeInUs int64 `json:"_start_time"` // unix microsecond + StatusCode int32 `json:"_status_code"` + SpanName string `json:"_span_name"` + SpanType string `json:"_span_type"` + ServerEnv *ServerInRawSpan `json:"_server_env"` + Tags map[string]any `json:"_tags"` // value can be: [float64, int64, bool, string, []byte] + Tenant string `json:"tenant"` + SensitiveTags *SensitiveTags `json:"sensitive_tags"` +} +type EventInRawSpan struct { + Type string `json:"_type,omitempty"` + Name string `json:"_name,omitempty"` + Tags []*RawSpanTag `json:"_tags,omitempty"` + StartTime int64 `json:"_start_time,omitempty"` + Data []byte `json:"_data,omitempty"` +} +type RawSpanTag struct { + Key string + Value any // value can be: [float64, int64, bool, string, []byte] +} +type SensitiveTags struct { + Input string `json:"input"` + Output string `json:"output"` + InputTokens int64 `json:"input_tokens"` + OutputTokens int64 `json:"output_tokens"` + Tokens int64 `json:"tokens"` +} + +type ServerInRawSpan struct { + PSM string `json:"psm,omitempty"` + Cluster string `json:"cluster,omitempty"` + DC string `json:"dc,omitempty"` + Env string `json:"env,omitempty"` + PodName string `json:"pod_name,omitempty"` + Stage string `json:"stage,omitempty"` + Region string `json:"_region,omitempty"` +} + +var MockRawSpan = &RawSpan{ + TraceID: "1", + LogID: "2", + Method: "3", + SpanID: "4", + ParentID: "0", + DurationInUs: 0, + StartTimeInUs: 0, + StatusCode: 0, + SpanName: "xun_test", + Tags: map[string]any{ + "span_type": "root", + "tokens": 3, + "input": "世界上最美的火山", + "output": "富士山", + }, + Tenant: "fornax_saas", +} + +func (s *RawSpan) GetSensitiveTags() *SensitiveTags { + if s == nil { + return nil + } + return s.SensitiveTags +} +func (s *RawSpan) GetServerEnv() *ServerInRawSpan { + if s == nil { + return nil + } + return s.ServerEnv } diff --git a/backend/modules/observability/domain/task/entity/task.go b/backend/modules/observability/domain/task/entity/task.go index 1160ec7f8..738d481bd 100644 --- a/backend/modules/observability/domain/task/entity/task.go +++ b/backend/modules/observability/domain/task/entity/task.go @@ -17,7 +17,7 @@ type ObservabilityTask struct { Description *string // 任务描述 TaskType string // 任务类型 TaskStatus string // 任务状态 - TaskDetail *string // 任务运行状态详情 + TaskDetail *string // 任务运行详情 SpanFilter *string // span 过滤条件 EffectiveTime *string // 生效时间 Sampler *string // 采样器 @@ -26,9 +26,25 @@ type ObservabilityTask struct { UpdatedAt time.Time // 更新时间 CreatedBy string // 创建人 UpdatedBy string // 更新人 + + TaskRuns []*TaskRun } type SpanFilter struct { Filters loop_span.FilterFields `json:"filters,omitempty"` PlatformType common.PlatformType `json:"platform_type,omitempty"` SpanListType common.SpanListType `json:"span_list_type,omitempty"` } + +type TaskRun struct { + ID int64 // Task Run ID + TaskID int64 // Task ID + WorkspaceID int64 // 空间ID + TaskType string // 任务类型 + RunStatus string // Task Run状态 + RunDetail *string // Task Run运行详情 + BackfillDetail *string // 历史回溯运行详情 + RunStartAt time.Time // run 开始时间 + RunEndAt time.Time // run 结束时间 + CreatedAt time.Time // 创建时间 + UpdatedAt time.Time // 更新时间 +} diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index af717d38a..77aa3b0d4 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -17,4 +17,6 @@ type ITaskRepo interface { UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error + ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) + UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error } diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go new file mode 100644 index 000000000..48d0a0b61 --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -0,0 +1,455 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package processor + +import ( + "context" + "fmt" + "strconv" + "time" + + "github.com/apaxa-go/helper/strconvh" + "github.com/bytedance/gg/gptr" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" + eval_target_d "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_target" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/eval_target" + dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/slices" + "github.com/coze-dev/coze-loop/backend/pkg/logs" + "github.com/coze-dev/cozeloop-go/spec/tracespec" +) + +var _ taskexe.Processor = (*AutoEvaluteProcessor)(nil) + +type AutoEvaluteProcessor struct { + evalSvc rpc.IEvaluatorRPCAdapter + evaluationSvc rpc.IEvaluationRPCAdapter + datasetServiceAdaptor *DatasetServiceAdaptor + TaskRepo repo.ITaskRepo +} + +func newAutoEvaluteProcessor() *AutoEvaluteProcessor { + return &AutoEvaluteProcessor{} +} + +func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any, workspaceID int64) error { + + return nil +} + +func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { + cfg, ok := config.(*task.TaskRun) + if !ok { + return taskexe.ErrInvalidConfig + } + workspaceID := trigger.Task.GetWorkspaceID() + session := getSession(ctx, trigger.Task) + var mapping []*task.FieldMapping + for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { + mapping = append(mapping, autoEvaluateConfig.FieldMappings...) + } + turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema()) + if len(turns) == 0 { + logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") + return nil + } + _, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ + WorkspaceID: workspaceID, + EvaluationSetID: cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), + Items: []*eval_set.EvaluationSetItem{ + { + WorkspaceID: gptr.Of(workspaceID), + EvaluationSetID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID()), + SchemaID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchemaID()), + Turns: turns, + ItemKey: gptr.Of(trigger.Span.SpanID), + }, + }, + SkipInvalidItems: gptr.Of(true), + AllowPartialAdd: gptr.Of(true), + ExperimentID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), + ExperimentRunID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), + Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID())}, + Session: session, + }) + if err != nil { + return err + } + return nil +} + +func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger *taskexe.Trigger) error { + //todo:[xun]加锁 + session := getSession(ctx, trigger.Task) + cfg, ok := config.(*task.TaskRun) + if !ok { + return taskexe.ErrInvalidConfig + } + if err := p.evaluationSvc.FinishExperiment(ctx, &rpc.FinishExperimentReq{ + WorkspaceID: trigger.Task.GetWorkspaceID(), + ExperimentID: cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID(), + ExperimentRunID: cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID(), + Session: session, + }); err != nil { + return err + } + //todo:[xun]根据是否是真的结束实验做处理 + return nil +} +func (p *AutoEvaluteProcessor) getDatasetProvider(category entity.DatasetCategory) rpc.IDatasetProvider { + return p.datasetServiceAdaptor.getDatasetProvider(category) +} + +type DatasetServiceAdaptor struct { + datasetServiceMap map[entity.DatasetCategory]rpc.IDatasetProvider +} + +func NewDatasetServiceAdaptor() *DatasetServiceAdaptor { + return &DatasetServiceAdaptor{} +} + +func (d *DatasetServiceAdaptor) Register(category entity.DatasetCategory, provider rpc.IDatasetProvider) { + if d.datasetServiceMap == nil { + d.datasetServiceMap = make(map[entity.DatasetCategory]rpc.IDatasetProvider) + } + d.datasetServiceMap[category] = provider +} + +func (d *DatasetServiceAdaptor) getDatasetProvider(category entity.DatasetCategory) rpc.IDatasetProvider { + datasetProvider, ok := d.datasetServiceMap[category] + if !ok { + return rpc.NoopDatasetProvider + } + return datasetProvider +} + +func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { + //todo:[xun]加锁 + session := getSession(ctx, currentTask) + var evaluationSetColumns []string + var evaluatorVersionIds []int64 + var evaluatorFieldMappings []*expt.EvaluatorFieldMapping + evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id") + autoEvaluateConfigs := currentTask.GetTaskConfig().GetAutoEvaluateConfigs() + evaluationSetSchema, fromEvalSet := getBasicEvaluationSetSchema(evaluationSetColumns) + for _, autoEvaluateConfig := range autoEvaluateConfigs { + evaluatorVersionIds = append(evaluatorVersionIds, autoEvaluateConfig.EvaluatorVersionID) + filedMappings := autoEvaluateConfig.GetFieldMappings() + for _, fieldMapping := range filedMappings { + if fieldMapping.GetFieldSchema() == nil { + continue + } + fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ + FieldName: gptr.Of(fieldMapping.GetFieldSchema().GetName()), + FromFieldName: gptr.Of(fieldMapping.GetEvalSetName()), + }) + if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { + continue + } + // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, + evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ + Name: gptr.Of(fieldMapping.GetEvalSetName()), + Description: gptr.Of(fieldMapping.TraceFieldJsonpath), + ContentType: gptr.Of(fieldMapping.GetFieldSchema().GetContentType()), + //DefaultDisplayFormat: gptr.Of(dataset.FieldDisplayFormat_PlainText), + TextSchema: fieldMapping.GetFieldSchema().TextSchema, + //Hidden: gptr.Of(false), + }) + evaluationSetColumns = append(evaluationSetColumns, fieldMapping.GetEvalSetName()) + } + + evaluatorFieldMappings = append(evaluatorFieldMappings, &expt.EvaluatorFieldMapping{ + EvaluatorVersionID: autoEvaluateConfig.GetEvaluatorVersionID(), + FromEvalSet: fromEvalSet, + }) + } + category := getCategory(currentTask.TaskType) + schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) + // 1、创建评测集 + datasetID, err := p.getDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( + 0, + currentTask.GetWorkspaceID(), + fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()), + category, + schema, + )) + if err != nil { + return err + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) + // 2、创建实验 + maxAliveTime := currentTask.GetRule().GetEffectiveTime().GetEndAt() - currentTask.GetRule().GetEffectiveTime().GetStartAt() + if currentTask.GetRule().GetSampler().GetIsCycle() { + switch *currentTask.GetRule().GetSampler().CycleTimeUnit { + case task.TimeUnitDay: + maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 24 * time.Hour.Milliseconds() + case task.TimeUnitWeek: + maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 7 * 24 * time.Hour.Milliseconds() + default: + maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 10 * time.Minute.Milliseconds() + } + } + submitExperimentReq := rpc.SubmitExperimentReq{ + WorkspaceID: currentTask.GetWorkspaceID(), + EvalSetVersionID: gptr.Of(datasetID), + EvaluatorVersionIds: evaluatorVersionIds, + Name: gptr.Of(fmt.Sprintf("自动化任务实验_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day())), + Desc: gptr.Of("自动化任务实验"), + EvalSetID: gptr.Of(datasetID), + EvaluatorFieldMapping: evaluatorFieldMappings, + TargetFieldMapping: &expt.TargetFieldMapping{ + FromEvalSet: []*expt.FieldMapping{}, + }, + CreateEvalTargetParam: &eval_target.CreateEvalTargetParam{ + SourceTargetID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), + EvalTargetType: gptr.Of(eval_target_d.EvalTargetType_Trace), + }, + ExptType: gptr.Of(expt.ExptType_Online), + MaxAliveTime: gptr.Of(maxAliveTime), + SourceType: gptr.Of(expt.SourceType_AutoTask), + SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), + Session: session, + } + exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) + if err != nil { + return err + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) + // 3、更新任务状态 + if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { + updateMap := map[string]interface{}{ + "task_status": task.TaskStatusRunning, + } + err = p.TaskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) + if err != nil { + return err + } + } + // 4、更新任务配置 + return nil + +} + +func getSession(ctx context.Context, task *task.Task) *common.Session { + userID, err := strconv.ParseInt(task.BaseInfo.CreatedBy.GetUserID(), 10, 64) + if err != nil { + logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor OnChangeProcessor, ParseInt err:%v", err) + } + return &common.Session{ + UserID: gptr.Of(userID), + AppID: gptr.Of(int32(717152)), + } +} +func getBasicEvaluationSetSchema(basicColumns []string) (*dataset0.DatasetSchema, []*expt.FieldMapping) { + evaluationSetSchema := dataset0.NewDatasetSchema() + var fromEvalSet []*expt.FieldMapping + for _, column := range basicColumns { + evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ + Key: gptr.Of(column), + Name: gptr.Of(column), + Description: gptr.Of(column), + ContentType: gptr.Of(common.ContentTypeText), + TextSchema: gptr.Of("{\"type\": \"string\"}"), + }) + fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ + FieldName: gptr.Of(column), + FromFieldName: gptr.Of(column), + }) + } + return evaluationSetSchema, fromEvalSet +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +// convertDatasetSchemaDTO2DO 转换数据集模式 +func convertDatasetSchemaDTO2DO(schema *dataset0.DatasetSchema) entity.DatasetSchema { + if schema == nil { + return entity.DatasetSchema{} + } + + result := entity.DatasetSchema{} + + if schema.IsSetFieldSchemas() { + fieldSchemas := schema.GetFieldSchemas() + result.FieldSchemas = make([]entity.FieldSchema, len(fieldSchemas)) + for i, fs := range fieldSchemas { + key := fs.GetKey() + name := fs.GetName() + description := fs.GetDescription() + textSchema := fs.GetTextSchema() + result.FieldSchemas[i] = entity.FieldSchema{ + Key: &key, + Name: name, + Description: description, + ContentType: convertContentTypeDTO2DO(fs.GetContentType()), + TextSchema: textSchema, + } + } + } + + return result +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +// convertContentTypeDTO2DO 转换内容类型 +func convertContentTypeDTO2DO(contentType common.ContentType) entity.ContentType { + switch contentType { + case common.ContentTypeText: + return entity.ContentType_Text + case common.ContentTypeImage: + return entity.ContentType_Image + case common.ContentTypeAudio: + return entity.ContentType_Audio + case common.ContentTypeMultiPart: + return entity.ContentType_MultiPart + default: + return entity.ContentType_Text + } +} + +func getCategory(taskType task.TaskType) entity.DatasetCategory { + switch taskType { + case task.TaskTypeAutoEval: + return entity.DatasetCategory_Evaluation + default: + return entity.DatasetCategory_General + } +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*task.FieldMapping, + evaluationSetSchema string) (turns []*eval_set.Turn) { + turns = make([]*eval_set.Turn, 0, len(spans)) + for _, span := range spans { + fieldData := buildItem(ctx, span, fieldMappings, evaluationSetSchema) + if len(fieldData) == 0 { + continue + } + turns = append(turns, &eval_set.Turn{ + FieldDataList: fieldData, + }) + } + return turns +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.FieldMapping, + evaluationSetSchema string) []*eval_set.FieldData { + var fieldDatas []*eval_set.FieldData + fieldDatas = append(fieldDatas, &eval_set.FieldData{ + Key: gptr.Of("trace_id"), + Name: gptr.Of("trace_id"), + Content: &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(span.TraceID), + }, + }) + fieldDatas = append(fieldDatas, &eval_set.FieldData{ + Key: gptr.Of("span_id"), + Name: gptr.Of("span_id"), + Content: &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(span.SpanID), + }, + }) + for _, mapping := range fieldMappings { + // 前端传入的是Name,评测集需要的是key,需要做一下mapping + if mapping.EvalSetName == nil { + logs.CtxInfo(ctx, "Evaluator field name is nil") + continue + } + var evaluationSetSchemas []*eval_set.FieldSchema + if evaluationSetSchema == "" { + logs.CtxInfo(ctx, "Evaluation set schema is nil") + continue + } + err := json.Unmarshal([]byte(evaluationSetSchema), &evaluationSetSchemas) + if err != nil { + logs.CtxInfo(ctx, "Unmarshal evaluation set schema failed, err:%v", err) + continue + } + for _, fieldSchema := range evaluationSetSchemas { + if fieldSchema.GetKey() == *mapping.EvalSetName { + key := fieldSchema.GetKey() + if key == "" { + logs.CtxInfo(ctx, "Evaluator field key is empty, name:%v", *mapping.FieldSchema.Name) + continue + } + value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) + if err != nil { + logs.CtxInfo(ctx, "Extract field failed, err:%v", err) + continue + } + content, err := GetContentInfo(ctx, fieldSchema.GetContentType(), value) + if err != nil { + logs.CtxInfo(ctx, "GetContentInfo failed, err:%v", err) + return nil + } + fieldDatas = append(fieldDatas, &eval_set.FieldData{ + Key: gptr.Of(key), + Name: gptr.Of(fieldSchema.GetName()), + Content: content, + }) + } + } + } + return fieldDatas +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +func GetContentInfo(ctx context.Context, contentType common.ContentType, value string) (*common.Content, error) { + var content *common.Content + switch contentType { + case common.ContentTypeMultiPart: + var parts []tracespec.ModelMessagePart + err := json.Unmarshal([]byte(value), &parts) + if err != nil { + logs.CtxInfo(ctx, "Unmarshal multi part failed, err:%v", err) + return nil, err + } + var multiPart []*common.Content + for _, part := range parts { + // 本期仅支持回流图片的多模态数据,非ImageURL信息的,打包放进text + switch part.Type { + case tracespec.ModelMessagePartTypeImage: + if part.ImageURL == nil { + continue + } + multiPart = append(multiPart, &common.Content{ + ContentType: gptr.Of(common.ContentTypeImage), + Image: &common.Image{ + Name: gptr.Of(part.ImageURL.Name), + URL: gptr.Of(part.ImageURL.URL), + }, + }) + case tracespec.ModelMessagePartTypeText, tracespec.ModelMessagePartTypeFile: + multiPart = append(multiPart, &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(part.Text), + }) + default: + logs.CtxWarn(ctx, "Unsupported part type: %s", part.Type) + return nil, err + } + } + content = &common.Content{ + ContentType: gptr.Of(common.ContentTypeMultiPart), + MultiPart: multiPart, + } + default: + content = &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(value), + } + } + return content, nil +} diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go new file mode 100644 index 000000000..7ae471ba0 --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -0,0 +1,37 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package processor + +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" +) + +var _ taskexe.Processor = (*DataReflowProcessor)(nil) + +type DataReflowProcessor struct { +} + +func newDataReflowProcessor() *DataReflowProcessor { + return &DataReflowProcessor{} +} + +func (p *DataReflowProcessor) ValidateConfig(ctx context.Context, config any, workspaceID int64) error { + + return nil +} + +func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { + return nil +} + +func (p *DataReflowProcessor) Finish(ctx context.Context, config any, trigger *taskexe.Trigger) error { + return nil +} + +func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { + return nil +} diff --git a/backend/modules/observability/domain/task/taskexe/processor/factory.go b/backend/modules/observability/domain/task/taskexe/processor/factory.go new file mode 100644 index 000000000..6c324eb3b --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/processor/factory.go @@ -0,0 +1,36 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package processor + +import ( + "context" + "fmt" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" +) + +var ( + autoEvaluteProc *AutoEvaluteProcessor + dataReflowProc *DataReflowProcessor +) + +func NewProcessor(ctx context.Context, taskType task.TaskType) (taskexe.Processor, error) { + switch taskType { + case task.TaskTypeAutoEval: + if autoEvaluteProc == nil { + return nil, errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg("nil proc of span_eval")) + } + return autoEvaluteProc, nil + default: + return nil, errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg(fmt.Sprintf("invalid task_type='%s' when new processor", taskType))) + } +} + +func InitProcessor() { + autoEvaluteProc = newAutoEvaluteProcessor() + dataReflowProc = newDataReflowProcessor() +} diff --git a/backend/modules/observability/domain/task/taskexe/processor/singleton.go b/backend/modules/observability/domain/task/taskexe/processor/singleton.go new file mode 100644 index 000000000..7a3848cdf --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/processor/singleton.go @@ -0,0 +1,4 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package processor diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 34fa4f592..d402dbff8 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -7,9 +7,14 @@ import ( "context" "time" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" config "github.com/coze-dev/coze-loop/backend/modules/data/domain/component/conf" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/consumer" + "github.com/coze-dev/coze-loop/backend/pkg/logs" goredis "github.com/redis/go-redis/v9" ) @@ -19,12 +24,115 @@ type TraceHub struct { redis *goredis.Client ticker *time.Ticker stopChan chan struct{} + TaskRepo repo.ITaskRepo } -type ITaskEvent interface { - TraceHub(ctx context.Context, event *entity.TaskEvent) error +type ITraceHubService interface { + TraceHub(ctx context.Context, event *entity.RawSpan) error +} + +func NewTraceHubImpl( + tRepo repo.ITaskRepo, +) (ITraceHubService, error) { + return &TraceHubServiceImpl{ + TaskRepo: tRepo, + }, nil +} + +type TraceHubServiceImpl struct { + TaskRepo repo.ITaskRepo +} + +func (t *TraceHubServiceImpl) TraceHub(ctx context.Context, span *entity.RawSpan) error { + // 转换成 + return nil } func NewTraceHub(redisCli *goredis.Client, cfg *config.ConsumerConfig) (*TraceHub, error) { - return nil, nil + // 初始化tracehub结构体 + h := &TraceHub{ + c: nil, + cfg: cfg, + redis: redisCli, + ticker: time.NewTicker(5 * time.Minute), // 每x分钟执行一次定时任务 + stopChan: make(chan struct{}), + } + // 定时任务处理? + return h, nil +} + +func (h *TraceHub) Start(ctx context.Context, handler entity.RawSpan) error { + // 启动定时任务 + go func() { + for { + select { + case <-h.ticker.C: + // 执行定时任务 + h.runScheduledTask() + case <-h.stopChan: + // 停止定时任务 + h.ticker.Stop() + return + } + } + }() + // 启动消费trace数据 + return nil +} +func (h *TraceHub) runScheduledTask() { + ctx := context.Background() + // 执行定时任务 + for { + select { + case <-h.ticker.C: + logs.CtxInfo(ctx, "定时任务开始执行...") + // 读取所有非终态(成功/禁用)任务 + taskPOs, err := h.TaskRepo.ListNonFinalTask(ctx) + if err != nil { + logs.CtxError(ctx, "ListNonFinalTask err:%v", err) + continue + } + tasks := tconv.TaskPOs2DOs(ctx, taskPOs, nil) + // 遍历任务 + for _, taskInfo := range tasks { + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) + + endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) + startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()*int64(time.Millisecond)) + proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) + if err != nil { + logs.CtxError(ctx, "NewProcessor err:%v", err) + continue + } + // 达到任务时间期限 + // 到任务结束时间就结束 + if time.Now().After(endTime) { + updateMap := map[string]interface{}{ + "task_status": task.TaskStatusSuccess, + } + err = h.TaskRepo.UpdateTaskWithOCC(ctx, taskInfo.GetID(), taskInfo.GetWorkspaceID(), updateMap) + if err != nil { + logs.CtxError(ctx, "[task-debug] UpdateTask err:%v", err) + continue + } + } + // 如果任务状态为unstarted,到任务开始时间就开始create + if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { + err = proc.OnChangeProcessor(ctx, taskInfo, task.TaskStatusUnstarted) + if err != nil { + logs.CtxError(ctx, "OnChangeProcessor err:%v", err) + continue + } + } + } + case <-h.stopChan: + h.ticker.Stop() + logs.CtxInfo(ctx, "定时任务已停止") + return + } + } +} +func (h *TraceHub) Stop() { + // 停止定时任务 } diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index e8a796af8..8d0cb567e 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -5,12 +5,22 @@ package taskexe import ( "context" + "errors" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" ) type Trigger struct { + Task *task.Task + Span *loop_span.Span } + +var ( + ErrInvalidConfig = errors.New("invalid config") + ErrInvalidTrigger = errors.New("invalid span trigger") +) + type Processor interface { ValidateConfig(ctx context.Context, config any, workspaceID int64) error // 校验配置项是否有效 Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 diff --git a/backend/modules/observability/domain/trace/entity/dataset.go b/backend/modules/observability/domain/trace/entity/dataset.go index ca8a2d5ed..8b844cb3f 100644 --- a/backend/modules/observability/domain/trace/entity/dataset.go +++ b/backend/modules/observability/domain/trace/entity/dataset.go @@ -8,6 +8,8 @@ import ( "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" + "github.com/coze-dev/coze-loop/backend/modules/evaluation/domain/entity" "github.com/coze-dev/coze-loop/backend/pkg/json" "github.com/coze-dev/coze-loop/backend/pkg/logs" "github.com/coze-dev/cozeloop-go/spec/tracespec" @@ -320,3 +322,17 @@ func CommonContentTypeDO2DTO(contentType ContentType) *common.ContentType { return gptr.Of(common.ContentTypeText) } } + +func EvaluationSetSchemaDT2ODO(dto *eval_set.EvaluationSetSchema) (*entity.EvaluationSetSchema, error) { + // 当前数据结构一致,用json转换。以后改成同一个idl + bs, err := json.Marshal(dto) + if err != nil { + return nil, err + } + var do *entity.EvaluationSetSchema + err = json.Unmarshal(bs, &do) + if err != nil { + return nil, err + } + return do, nil +} diff --git a/backend/modules/observability/domain/trace/service/trace_service.go b/backend/modules/observability/domain/trace/service/trace_service.go index 172ec25c2..33225865b 100644 --- a/backend/modules/observability/domain/trace/service/trace_service.go +++ b/backend/modules/observability/domain/trace/service/trace_service.go @@ -1228,12 +1228,12 @@ func (r *TraceServiceImpl) ExtractSpanInfo(ctx context.Context, req *ExtractSpan logs.CtxInfo(ctx, "Extract field failed, err:%v", err) return resp, err } + content := buildContent(value) // 前端传入的是Name,评测集需要的是key,需要做一下mapping if mapping.FieldSchema.Name == "" { logs.CtxInfo(ctx, "Evaluator field name is nil") continue } - content := buildContent(value) fieldList = append(fieldList, &dataset.FieldData{ Key: mapping.FieldSchema.Key, Name: gptr.Of(mapping.FieldSchema.Name), diff --git a/backend/modules/observability/infra/mq/consumer/task_consumer.go b/backend/modules/observability/infra/mq/consumer/task_consumer.go index 18ec487a1..f3d231a2a 100644 --- a/backend/modules/observability/infra/mq/consumer/task_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/task_consumer.go @@ -46,11 +46,11 @@ func (e *TaskConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, err } func (e *TaskConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) error { - event := new(entity.TaskEvent) + event := new(entity.RawSpan) if err := json.Unmarshal(ext.Body, event); err != nil { logs.CtxError(ctx, "Task msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) return nil } - logs.CtxInfo(ctx, "Handle Task message %+v", event) + logs.CtxInfo(ctx, "Handle Task message %+v,log_id=%s, trace_id=%s, span_id=%s", event, event.LogID, event.TraceID, event.SpanID) return e.handler.TraceHub(ctx, event) } diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index 21764e487..696d31ee1 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -44,6 +44,8 @@ type ITaskDao interface { UpdateTask(ctx context.Context, po *model.ObservabilityTask) error DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) + ListNonFinalTask(ctx context.Context) ([]*model.ObservabilityTask, error) + UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error } func NewTaskDaoImpl(db db.Provider) ITaskDao { @@ -283,3 +285,28 @@ func (d *TaskDaoImpl) order(q *query.Query, orderBy string, asc bool) field.Expr } return orderExpr.Desc() } + +func (v *TaskDaoImpl) ListNonFinalTask(ctx context.Context) ([]*model.ObservabilityTask, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)) + qd := q.WithContext(ctx).ObservabilityTask + qd = qd.Where(q.ObservabilityTask.TaskStatus.NotIn("success", "disabled")) + + results, err := qd.Limit(500).Find() + if err != nil { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, nil +} + +func (v *TaskDaoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { + //todo[xun]: 乐观锁 + q := genquery.Use(v.dbMgr.NewSession(ctx)) + qd := q.WithContext(ctx).ObservabilityTask + qd = qd.Where(q.ObservabilityTask.ID.Eq(id)).Where(q.ObservabilityTask.WorkspaceID.Eq(workspaceID)) + info, err := qd.Updates(updateMap) + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + logs.CtxInfo(ctx, "%d rows updated", info.RowsAffected) + return nil +} diff --git a/backend/modules/observability/infra/repo/redis/convert/task.go b/backend/modules/observability/infra/repo/redis/convert/task.go new file mode 100644 index 000000000..b1180fcc4 --- /dev/null +++ b/backend/modules/observability/infra/repo/redis/convert/task.go @@ -0,0 +1,53 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package convert + +import ( + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" + "github.com/samber/lo" +) + +func NewTaskConverter() *TaskConverter { + return &TaskConverter{} +} + +type TaskConverter struct{} + +func (TaskConverter) FromDO(qse *entity.ObservabilityTask) ([]byte, error) { + bytes, err := json.Marshal(qse) + if err != nil { + return nil, errorx.Wrapf(err, "TaskExpt json marshal failed") + } + return bytes, nil +} + +func (TaskConverter) ToDO(b []byte) (*entity.ObservabilityTask, error) { + qse := &entity.ObservabilityTask{} + bytes := toBytes(b) + if err := lo.TernaryF( + len(bytes) > 0, + func() error { return json.Unmarshal(bytes, qse) }, + func() error { return nil }, + ); err != nil { + return nil, errorx.Wrapf(err, "TaskExpt json unmarshal failed") + } + return qse, nil +} + +// toBytes +// +//nolint:staticcheck,S1034 +func toBytes(v any) []byte { + switch v.(type) { + case string: + return conv.UnsafeStringToBytes(v.(string)) + case []byte: + return v.([]byte) + default: + return nil + } +} diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go new file mode 100644 index 000000000..3b49bb0e6 --- /dev/null +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -0,0 +1,347 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package dao + +import ( + "context" + "crypto/md5" + "encoding/hex" + "fmt" + "time" + + "github.com/coze-dev/coze-loop/backend/infra/redis" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/convert" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) +//go:generate mockgen -destination=mocks/Task_dao.go -package=mocks . ITaskDAO +type ITaskDAO interface { + // 原有方法 + MSetTaskConfig(ctx context.Context, taskConfig *entity.ObservabilityTask) error + MGetTaskConfig(ctx context.Context, taskID int64) (taskConfig *entity.ObservabilityTask, err error) + MGetTaskCount(ctx context.Context, taskID int64) (count int64, err error) + MGetTaskRunCount(ctx context.Context, taskID, runID int64) (count int64, err error) + MIncrTaskCount(ctx context.Context, taskID int64, count int64) error + MDecrTaskCount(ctx context.Context, taskID int64, count int64) error + MIncrTaskRunCount(ctx context.Context, taskID, runID int64, count int64) error + MDecrTaskRunCount(ctx context.Context, taskID, runID int64, count int64) error + + // 新增 CRUD 缓存方法 + GetTask(ctx context.Context, id int64) (*entity.ObservabilityTask, error) + SetTask(ctx context.Context, task *entity.ObservabilityTask, ttl time.Duration) error + DeleteTask(ctx context.Context, id int64) error + + GetTaskList(ctx context.Context, key string) ([]*entity.ObservabilityTask, int64, error) + SetTaskList(ctx context.Context, key string, tasks []*entity.ObservabilityTask, total int64, ttl time.Duration) error + DeleteTaskList(ctx context.Context, pattern string) error + + GetNonFinalTaskList(ctx context.Context) ([]*entity.ObservabilityTask, error) + SetNonFinalTaskList(ctx context.Context, tasks []*entity.ObservabilityTask, ttl time.Duration) error + DeleteNonFinalTaskList(ctx context.Context) error + + GetTaskCount(ctx context.Context, workspaceID int64) (int64, error) + SetTaskCount(ctx context.Context, workspaceID int64, count int64, ttl time.Duration) error + DeleteTaskCount(ctx context.Context, workspaceID int64) error +} + +type TaskDAOImpl struct { + cmdable redis.Cmdable +} + +// NewTaskDAO creates a new TaskDAO instance +func NewTaskDAO(cmdable redis.Cmdable) ITaskDAO { + return &TaskDAOImpl{ + cmdable: cmdable, + } +} +// 原有 key 生成方法 +func (q *TaskDAOImpl) makeTaskConfigKey(taskID int64) string { + return fmt.Sprintf("task_config_%d", taskID) +} + +func (q *TaskDAOImpl) makeTaskCountKey(taskID int64) string { + return fmt.Sprintf("count_%d", taskID) +} + +func (q *TaskDAOImpl) makeTaskRunCountKey(taskID, runID int64) string { + return fmt.Sprintf("count_%d_%d", taskID, runID) +} + +// 新增 key 生成方法 +func (q *TaskDAOImpl) makeTaskDetailKey(id int64) string { + return fmt.Sprintf("task:detail:%d", id) +} + +func (q *TaskDAOImpl) makeTaskListKey(workspaceID int64, filterHash string, page, size int32) string { + return fmt.Sprintf("task:list:%d:%s:%d:%d", workspaceID, filterHash, page, size) +} + +func (q *TaskDAOImpl) makeNonFinalTaskListKey() string { + return "task:list:non_final" +} + +func (q *TaskDAOImpl) makeTaskCountCacheKey(workspaceID int64) string { + return fmt.Sprintf("task:count:%d", workspaceID) +} + +// generateFilterHash 生成过滤条件的 hash +func (q *TaskDAOImpl) generateFilterHash(param mysql.ListTaskParam) string { + if param.TaskFilters == nil { + return "no_filter" + } + + // 将过滤条件序列化为 JSON 字符串 + filterBytes, err := json.Marshal(param.TaskFilters) + if err != nil { + logs.Error("failed to marshal filter: %v", err) + return "no_filter" + } + + // 生成 MD5 hash + hash := md5.Sum(filterBytes) + return hex.EncodeToString(hash[:]) +} + +func (p *TaskDAOImpl) MSetTaskConfig(ctx context.Context, taskConfig *entity.ObservabilityTask) error { + bytes, err := convert.NewTaskConverter().FromDO(taskConfig) + if err != nil { + return err + } + key := p.makeTaskConfigKey(taskConfig.ID) + if err := p.cmdable.Set(ctx, key, bytes, time.Hour*24*2).Err(); err != nil { + return errorx.Wrapf(err, "redis set key: %v", key) + } + return nil +} + +func (p *TaskDAOImpl) MGetTaskConfig(ctx context.Context, taskID int64) (taskConfig *entity.ObservabilityTask, err error) { + key := p.makeTaskConfigKey(taskID) + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil && !redis.IsNilError(err) { + return nil, errorx.Wrapf(err, "redis get fail, key: %v", key) + } + return convert.NewTaskConverter().ToDO(conv.UnsafeStringToBytes(got)) +} + +func (p *TaskDAOImpl) MGetTaskCount(ctx context.Context, taskID int64) (count int64, err error) { + key := p.makeTaskCountKey(taskID) + got, err := p.cmdable.Get(ctx, key).Int64() + if err != nil && !redis.IsNilError(err) { + return 0, errorx.Wrapf(err, "redis get fail, key: %v", key) + } + return got, nil +} + +func (p *TaskDAOImpl) MGetTaskRunCount(ctx context.Context, taskID, runID int64) (count int64, err error) { + key := p.makeTaskRunCountKey(taskID, runID) + got, err := p.cmdable.Get(ctx, key).Int64() + if err != nil && !redis.IsNilError(err) { + return 0, errorx.Wrapf(err, "redis get fail, key: %v", key) + } + return got, nil +} + +func (p *TaskDAOImpl) MIncrTaskCount(ctx context.Context, taskID int64, count int64) error { + key := p.makeTaskCountKey(taskID) + if err := p.cmdable.IncrBy(ctx, key, count).Err(); err != nil { + return errorx.Wrapf(err, "redis incr key: %v", key) + } + return nil +} +func (p *TaskDAOImpl) MDecrTaskCount(ctx context.Context, taskID int64, count int64) error { + key := p.makeTaskCountKey(taskID) + if err := p.cmdable.DecrBy(ctx, key, count).Err(); err != nil { + return errorx.Wrapf(err, "redis decr key: %v", key) + } + return nil +} + +func (p *TaskDAOImpl) MIncrTaskRunCount(ctx context.Context, taskID, runID int64, count int64) error { + key := p.makeTaskRunCountKey(taskID, runID) + if err := p.cmdable.IncrBy(ctx, key, count).Err(); err != nil { + return errorx.Wrapf(err, "redis incr key: %v", key) + } + return nil +} +func (p *TaskDAOImpl) MDecrTaskRunCount(ctx context.Context, taskID, runID int64, count int64) error { + key := p.makeTaskRunCountKey(taskID, runID) + if err := p.cmdable.DecrBy(ctx, key, count).Err(); err != nil { + return errorx.Wrapf(err, "redis decr key: %v", key) + } + return nil +} + +// 新增 CRUD 缓存方法实现 + +// GetTask 获取单个任务缓存 +func (p *TaskDAOImpl) GetTask(ctx context.Context, id int64) (*entity.ObservabilityTask, error) { + key := p.makeTaskDetailKey(id) + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil // 缓存未命中 + } + return nil, errorx.Wrapf(err, "redis get task fail, key: %v", key) + } + return convert.NewTaskConverter().ToDO(conv.UnsafeStringToBytes(got)) +} + +// SetTask 设置单个任务缓存 +func (p *TaskDAOImpl) SetTask(ctx context.Context, task *entity.ObservabilityTask, ttl time.Duration) error { + bytes, err := convert.NewTaskConverter().FromDO(task) + if err != nil { + return err + } + key := p.makeTaskDetailKey(task.ID) + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set task key: %v", key) + } + return nil +} + +// DeleteTask 删除单个任务缓存 +func (p *TaskDAOImpl) DeleteTask(ctx context.Context, id int64) error { + key := p.makeTaskDetailKey(id) + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete task key: %v", key) + } + return nil +} + +// TaskListCache 任务列表缓存结构 +type TaskListCache struct { + Items []*entity.ObservabilityTask `json:"items"` + Total int64 `json:"total"` + CachedAt time.Time `json:"cached_at"` +} + +// GetTaskList 获取任务列表缓存 +func (p *TaskDAOImpl) GetTaskList(ctx context.Context, key string) ([]*entity.ObservabilityTask, int64, error) { + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, 0, nil // 缓存未命中 + } + return nil, 0, errorx.Wrapf(err, "redis get task list fail, key: %v", key) + } + + var cache TaskListCache + if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &cache); err != nil { + return nil, 0, errorx.Wrapf(err, "unmarshal task list cache failed") + } + + return cache.Items, cache.Total, nil +} + +// SetTaskList 设置任务列表缓存 +func (p *TaskDAOImpl) SetTaskList(ctx context.Context, key string, tasks []*entity.ObservabilityTask, total int64, ttl time.Duration) error { + cache := TaskListCache{ + Items: tasks, + Total: total, + CachedAt: time.Now(), + } + + bytes, err := json.Marshal(cache) + if err != nil { + return errorx.Wrapf(err, "marshal task list cache failed") + } + + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set task list cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set task list key: %v", key) + } + return nil +} + +// DeleteTaskList 删除任务列表缓存(支持模糊匹配) +func (p *TaskDAOImpl) DeleteTaskList(ctx context.Context, pattern string) error { + // 由于 redis.Cmdable 接口没有 Keys 方法,这里简化处理 + // 在实际生产环境中,可能需要使用 SCAN 命令或其他方式来实现模糊删除 + logs.CtxWarn(ctx, "DeleteTaskList with pattern not fully implemented", "pattern", pattern) + return nil +} + +// GetNonFinalTaskList 获取非最终状态任务列表缓存 +func (p *TaskDAOImpl) GetNonFinalTaskList(ctx context.Context) ([]*entity.ObservabilityTask, error) { + key := p.makeNonFinalTaskListKey() + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil // 缓存未命中 + } + return nil, errorx.Wrapf(err, "redis get non final task list fail, key: %v", key) + } + + var tasks []*entity.ObservabilityTask + if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &tasks); err != nil { + return nil, errorx.Wrapf(err, "unmarshal non final task list cache failed") + } + + return tasks, nil +} + +// SetNonFinalTaskList 设置非最终状态任务列表缓存 +func (p *TaskDAOImpl) SetNonFinalTaskList(ctx context.Context, tasks []*entity.ObservabilityTask, ttl time.Duration) error { + key := p.makeNonFinalTaskListKey() + + bytes, err := json.Marshal(tasks) + if err != nil { + return errorx.Wrapf(err, "marshal non final task list cache failed") + } + + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set non final task list cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set non final task list key: %v", key) + } + return nil +} + +// DeleteNonFinalTaskList 删除非最终状态任务列表缓存 +func (p *TaskDAOImpl) DeleteNonFinalTaskList(ctx context.Context) error { + key := p.makeNonFinalTaskListKey() + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete non final task list cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete non final task list key: %v", key) + } + return nil +} + +// GetTaskCount 获取任务计数缓存 +func (p *TaskDAOImpl) GetTaskCount(ctx context.Context, workspaceID int64) (int64, error) { + key := p.makeTaskCountCacheKey(workspaceID) + got, err := p.cmdable.Get(ctx, key).Int64() + if err != nil { + if redis.IsNilError(err) { + return -1, nil // 缓存未命中,返回-1表示未缓存 + } + return 0, errorx.Wrapf(err, "redis get task count fail, key: %v", key) + } + return got, nil +} + +// SetTaskCount 设置任务计数缓存 +func (p *TaskDAOImpl) SetTaskCount(ctx context.Context, workspaceID int64, count int64, ttl time.Duration) error { + key := p.makeTaskCountCacheKey(workspaceID) + if err := p.cmdable.Set(ctx, key, count, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set task count cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set task count key: %v", key) + } + return nil +} + +// DeleteTaskCount 删除任务计数缓存 +func (p *TaskDAOImpl) DeleteTaskCount(ctx context.Context, workspaceID int64) error { + key := p.makeTaskCountCacheKey(workspaceID) + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete task count cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete task count key: %v", key) + } + return nil +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/redis/task.go b/backend/modules/observability/infra/repo/redis/task.go deleted file mode 100644 index 1f46d2be0..000000000 --- a/backend/modules/observability/infra/repo/redis/task.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 - -package redis - -import ( - "context" - - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" -) - -//go:generate mockgen -destination=mocks/Task_dao.go -package=mocks . ITaskDAO -type ITaskDAO interface { - MSet(ctx context.Context, Tasks []*entity.ObservabilityTask) error - MGet(ctx context.Context, queries []TaskQuery) (TaskMap map[TaskQuery]*entity.ObservabilityTask, err error) -} - -type TaskQuery struct { - TaskID int64 - - WithCommit bool - CommitVersion string -} - -type TaskDAOImpl struct{} - -// NewTaskDAO noop impl -func NewTaskDAO() ITaskDAO { - return &TaskDAOImpl{} -} - -func (p *TaskDAOImpl) MSet(ctx context.Context, Tasks []*entity.ObservabilityTask) error { - return nil -} - -func (p *TaskDAOImpl) MGet(ctx context.Context, queries []TaskQuery) (TaskMap map[TaskQuery]*entity.ObservabilityTask, err error) { - return nil, nil -} diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 9f3a8f876..e103bca85 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -5,43 +5,109 @@ package repo import ( "context" + "fmt" + "time" "github.com/coze-dev/coze-loop/backend/infra/idgen" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/convertor" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/dao" + "github.com/coze-dev/coze-loop/backend/pkg/logs" ) -func NewTaskRepoImpl(TaskDao mysql.ITaskDao, idGenerator idgen.IIDGenerator) repo.ITaskRepo { +func NewTaskRepoImpl(TaskDao mysql.ITaskDao, idGenerator idgen.IIDGenerator, taskRedisDao dao.ITaskDAO) repo.ITaskRepo { return &TaskRepoImpl{ - TaskDao: TaskDao, - idGenerator: idGenerator, + TaskDao: TaskDao, + idGenerator: idGenerator, + TaskRedisDao: taskRedisDao, } } type TaskRepoImpl struct { - TaskDao mysql.ITaskDao - idGenerator idgen.IIDGenerator + TaskDao mysql.ITaskDao + TaskRedisDao dao.ITaskDAO + idGenerator idgen.IIDGenerator } +// 缓存 TTL 常量 +const ( + TaskDetailTTL = 30 * time.Minute // 单个任务缓存30分钟 + TaskListTTL = 5 * time.Minute // 任务列表缓存5分钟 + NonFinalTaskListTTL = 1 * time.Minute // 非最终状态任务缓存1分钟 + TaskCountTTL = 10 * time.Minute // 任务计数缓存10分钟 +) + func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityTask, error) { + // 先查 Redis 缓存 + cachedTask, err := v.TaskRedisDao.GetTask(ctx, id) + if err != nil { + logs.CtxWarn(ctx, "failed to get task from redis cache", "id", id, "err", err) + } else if cachedTask != nil { + // 验证权限(workspaceID 和 userID) + if workspaceID != nil && cachedTask.WorkspaceID != *workspaceID { + return nil, nil // 权限不符,返回空 + } + if userID != nil && cachedTask.CreatedBy != *userID { + return nil, nil // 权限不符,返回空 + } + return cachedTask, nil + } + + // 缓存未命中,查询数据库 TaskPo, err := v.TaskDao.GetTask(ctx, id, workspaceID, userID) if err != nil { return nil, err } - return convertor.TaskPO2DO(TaskPo), nil + + taskDO := convertor.TaskPO2DO(TaskPo) + + // 异步缓存到 Redis + go func() { + if err := v.TaskRedisDao.SetTask(context.Background(), taskDO, TaskDetailTTL); err != nil { + logs.Error("failed to set task cache", "id", id, "err", err) + } + }() + + return taskDO, nil } func (v *TaskRepoImpl) ListTasks(ctx context.Context, param mysql.ListTaskParam) ([]*entity.ObservabilityTask, int64, error) { + // 生成缓存 key + var workspaceID int64 + if len(param.WorkspaceIDs) > 0 { + workspaceID = param.WorkspaceIDs[0] // 简化处理,取第一个 + } + filterHash := v.generateFilterHash(param) + cacheKey := fmt.Sprintf("task:list:%d:%s:%d:%d", workspaceID, filterHash, param.ReqOffset, param.ReqLimit) + + // 先查 Redis 缓存 + cachedTasks, cachedTotal, err := v.TaskRedisDao.GetTaskList(ctx, cacheKey) + if err != nil { + logs.CtxWarn(ctx, "failed to get task list from redis cache", "key", cacheKey, "err", err) + } else if cachedTasks != nil { + return cachedTasks, cachedTotal, nil + } + + // 缓存未命中,查询数据库 results, total, err := v.TaskDao.ListTasks(ctx, param) if err != nil { return nil, 0, err } + resp := make([]*entity.ObservabilityTask, len(results)) for i, result := range results { resp[i] = convertor.TaskPO2DO(result) } + + // 异步缓存到 Redis + go func() { + if err := v.TaskRedisDao.SetTaskList(context.Background(), cacheKey, resp, total, TaskListTTL); err != nil { + logs.Error("failed to set task list cache", "key", cacheKey, "err", err) + } + }() + return resp, total, nil } @@ -52,14 +118,155 @@ func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityT } TaskPo := convertor.TaskDO2PO(do) TaskPo.ID = id - return v.TaskDao.CreateTask(ctx, TaskPo) + + // 先执行数据库操作 + createdID, err := v.TaskDao.CreateTask(ctx, TaskPo) + if err != nil { + return 0, err + } + + // 数据库操作成功后,更新缓存 + do.ID = createdID + go func() { + // 缓存新创建的任务 + if err := v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { + logs.Error("failed to set task cache after create", "id", createdID, "err", err) + } + + // 清理相关列表缓存 + v.clearListCaches(context.Background(), do.WorkspaceID) + }() + + return createdID, nil } func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error { TaskPo := convertor.TaskDO2PO(do) - return v.TaskDao.UpdateTask(ctx, TaskPo) + + // 先执行数据库操作 + err := v.TaskDao.UpdateTask(ctx, TaskPo) + if err != nil { + return err + } + + // 数据库操作成功后,更新缓存 + go func() { + // 更新单个任务缓存 + if err := v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { + logs.Error("failed to update task cache", "id", do.ID, "err", err) + } + + // 清理相关列表缓存 + v.clearListCaches(context.Background(), do.WorkspaceID) + }() + + return nil } func (v *TaskRepoImpl) DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error { - return v.TaskDao.DeleteTask(ctx, id, workspaceID, userID) + // 先执行数据库操作 + err := v.TaskDao.DeleteTask(ctx, id, workspaceID, userID) + if err != nil { + return err + } + + // 数据库操作成功后,删除缓存 + go func() { + // 删除单个任务缓存 + if err := v.TaskRedisDao.DeleteTask(context.Background(), id); err != nil { + logs.Error("failed to delete task cache", "id", id, "err", err) + } + + // 清理相关列表缓存 + v.clearListCaches(context.Background(), workspaceID) + }() + + return nil +} + +func (v *TaskRepoImpl) ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) { + // 先查 Redis 缓存 + cachedTasks, err := v.TaskRedisDao.GetNonFinalTaskList(ctx) + if err != nil { + logs.CtxWarn(ctx, "failed to get non final task list from redis cache", "err", err) + } else if cachedTasks != nil { + return cachedTasks, nil + } + + // 缓存未命中,查询数据库 + results, err := v.TaskDao.ListNonFinalTask(ctx) + if err != nil { + return nil, err + } + + resp := make([]*entity.ObservabilityTask, len(results)) + for i, result := range results { + resp[i] = convertor.TaskPO2DO(result) + } + + // 异步缓存到 Redis(短TTL,因为非最终状态变化频繁) + go func() { + if err := v.TaskRedisDao.SetNonFinalTaskList(context.Background(), resp, NonFinalTaskListTTL); err != nil { + logs.Error("failed to set non final task list cache", "err", err) + } + }() + + return resp, nil } +func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { + // 先执行数据库操作 + err := v.TaskDao.UpdateTaskWithOCC(ctx, id, workspaceID, updateMap) + if err != nil { + return err + } + + // 数据库操作成功后,删除缓存(因为无法直接更新部分字段) + go func() { + // 删除单个任务缓存,下次查询时会重新加载 + if err := v.TaskRedisDao.DeleteTask(context.Background(), id); err != nil { + logs.Error("failed to delete task cache after OCC update", "id", id, "err", err) + } + + // 清理相关列表缓存 + v.clearListCaches(context.Background(), workspaceID) + + // 清理非最终状态任务缓存(状态可能发生变化) + if err := v.TaskRedisDao.DeleteNonFinalTaskList(context.Background()); err != nil { + logs.Error("failed to delete non final task list cache after OCC update", "err", err) + } + }() + + return nil +} + +// clearListCaches 清理与指定 workspace 相关的列表缓存 +func (v *TaskRepoImpl) clearListCaches(ctx context.Context, workspaceID int64) { + // 清理任务列表缓存(使用模糊匹配) + pattern := fmt.Sprintf("task:list:%d:*", workspaceID) + if err := v.TaskRedisDao.DeleteTaskList(ctx, pattern); err != nil { + logs.Error("failed to delete task list cache", "pattern", pattern, "err", err) + } + + // 清理任务计数缓存 + if err := v.TaskRedisDao.DeleteTaskCount(ctx, workspaceID); err != nil { + logs.Error("failed to delete task count cache", "workspaceID", workspaceID, "err", err) + } + + // 清理非最终状态任务缓存 + if err := v.TaskRedisDao.DeleteNonFinalTaskList(ctx); err != nil { + logs.Error("failed to delete non final task list cache", "err", err) + } +} + +// generateFilterHash 生成过滤条件的 hash +func (v *TaskRepoImpl) generateFilterHash(param mysql.ListTaskParam) string { + if param.TaskFilters == nil { + return "no_filter" + } + + // 将过滤条件序列化为字符串 + filterStr := fmt.Sprintf("%+v", param.TaskFilters) + + // 生成简单的 hash(在实际生产环境中可能需要更复杂的 hash 算法) + return fmt.Sprintf("%x", len(filterStr)) +} \ No newline at end of file diff --git a/backend/modules/observability/infra/rpc/evaluation/evaluation.go b/backend/modules/observability/infra/rpc/evaluation/evaluation.go new file mode 100644 index 000000000..26a74f9e6 --- /dev/null +++ b/backend/modules/observability/infra/rpc/evaluation/evaluation.go @@ -0,0 +1,106 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package evaluation + +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/experimentservice" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/expt" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +type EvaluationProvider struct { + client experimentservice.Client +} + +func NewEvaluationRPCProvider(client experimentservice.Client) *EvaluationProvider { + return &EvaluationProvider{client: client} +} + +func (e *EvaluationProvider) SubmitExperiment(ctx context.Context, param *rpc.SubmitExperimentReq) (exptID, exptRunID int64, err error) { + if param.WorkspaceID == 0 { + return 0, 0, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("workspace ID is nil")) + } + logs.CtxDebug(ctx, "SubmitExperiment, param: %+v", param) + resp, err := e.client.SubmitExperiment(ctx, &expt.SubmitExperimentRequest{ + WorkspaceID: param.WorkspaceID, + EvalSetVersionID: param.EvalSetVersionID, + TargetVersionID: param.TargetVersionID, + EvaluatorVersionIds: param.EvaluatorVersionIds, + Name: param.Name, + Desc: param.Desc, + EvalSetID: param.EvalSetID, + TargetID: param.TargetID, + TargetFieldMapping: param.TargetFieldMapping, + EvaluatorFieldMapping: param.EvaluatorFieldMapping, + ItemConcurNum: param.ItemConcurNum, + EvaluatorsConcurNum: param.EvaluatorsConcurNum, + CreateEvalTargetParam: param.CreateEvalTargetParam, + ExptType: param.ExptType, + MaxAliveTime: param.MaxAliveTime, + SourceType: param.SourceType, + SourceID: param.SourceID, + Session: param.Session, + }) + if err != nil { + logs.CtxError(ctx, "SubmitExperiment failed, err: %v", err) + return 0, 0, errorx.NewByCode(obErrorx.CommonRPCErrorCode, errorx.WithExtraMsg("SubmitExperiment failed")) + } + return resp.GetExperiment().GetID(), resp.GetRunID(), nil +} + +func (e *EvaluationProvider) InvokeExperiment(ctx context.Context, param *rpc.InvokeExperimentReq) (addedItems int64, err error) { + if param.WorkspaceID == 0 { + return 0, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("workspace ID is nil")) + } + if param.EvaluationSetID == 0 { + return 0, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("evaluation set ID is nil")) + } + logs.CtxDebug(ctx, "InvokeExperiment, param: %+v", param) + resp, err := e.client.InvokeExperiment(ctx, &expt.InvokeExperimentRequest{ + WorkspaceID: param.WorkspaceID, + EvaluationSetID: param.EvaluationSetID, + Items: param.Items, + SkipInvalidItems: param.SkipInvalidItems, + AllowPartialAdd: param.AllowPartialAdd, + ExperimentID: param.ExperimentID, + ExperimentRunID: param.ExperimentRunID, + Ext: param.Ext, + Session: param.Session, + }) + if err != nil { + logs.CtxError(ctx, "InvokeExperiment failed, err: %v", err) + return 0, errorx.NewByCode(obErrorx.CommonRPCErrorCode, errorx.WithExtraMsg("InvokeExperiment failed")) + } + return int64(len(resp.GetAddedItems())), nil +} + +func (e *EvaluationProvider) FinishExperiment(ctx context.Context, param *rpc.FinishExperimentReq) (err error) { + if param.WorkspaceID == 0 { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("workspace ID is nil")) + } + if param.ExperimentID == 0 { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("experiment ID is nil")) + } + if param.ExperimentRunID == 0 { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("experiment run ID is nil")) + } + logs.CtxDebug(ctx, "FinishExperiment, param: %+v", param) + _, err = e.client.FinishExperiment(ctx, &expt.FinishExperimentRequest{ + WorkspaceID: ptr.Of(param.WorkspaceID), + ExperimentID: ptr.Of(param.ExperimentID), + ExperimentRunID: ptr.Of(param.ExperimentRunID), + Session: param.Session, + }) + if err != nil { + logs.CtxError(ctx, "FinishExperiment failed, err: %v", err) + return errorx.NewByCode(obErrorx.CommonRPCErrorCode, errorx.WithExtraMsg("FinishExperiment failed")) + } + return nil +} diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/cache_manager.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/cache_manager.go new file mode 100755 index 000000000..0f1f444da --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/cache_manager.go @@ -0,0 +1,247 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package cache + +import ( + "context" + "encoding/json" + "fmt" + "time" + + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +// TTL策略常量 +const ( + TaskTTL = 30 * time.Minute // 单个任务/任务运行记录:30分钟 + TaskListTTL = 10 * time.Minute // 任务列表:10分钟 + TaskRunTTL = 30 * time.Minute // 单个任务运行记录:30分钟 + TaskRunListTTL = 5 * time.Minute // 任务运行记录列表:5分钟 +) + +// CacheManager 缓存管理器接口 +type CacheManager interface { + // 任务缓存操作 + GetTask(ctx context.Context, id int64) (*model.ObservabilityTask, error) + SetTask(ctx context.Context, task *model.ObservabilityTask) error + DeleteTask(ctx context.Context, id int64) error + + // 任务列表缓存操作 + GetTaskList(ctx context.Context, key string) ([]*model.ObservabilityTask, error) + SetTaskList(ctx context.Context, key string, tasks []*model.ObservabilityTask) error + DeleteTaskListByPattern(ctx context.Context, pattern string) error + + // 任务运行记录缓存操作 + GetTaskRun(ctx context.Context, id int64) (*model.ObservabilityTaskRun, error) + SetTaskRun(ctx context.Context, taskRun *model.ObservabilityTaskRun) error + DeleteTaskRun(ctx context.Context, id int64) error + + // 任务运行记录列表缓存操作 + GetTaskRunList(ctx context.Context, key string) ([]*model.ObservabilityTaskRun, error) + SetTaskRunList(ctx context.Context, key string, taskRuns []*model.ObservabilityTaskRun) error + DeleteTaskRunListByPattern(ctx context.Context, pattern string) error +} + +// cacheManagerImpl 缓存管理器实现 +type cacheManagerImpl struct { + redisClient RedisClient + keyGenerator KeyGenerator +} + +// NewCacheManager 创建缓存管理器 +func NewCacheManager(redisClient RedisClient, keyGenerator KeyGenerator) CacheManager { + return &cacheManagerImpl{ + redisClient: redisClient, + keyGenerator: keyGenerator, + } +} + +// GetTask 获取任务缓存 +func (c *cacheManagerImpl) GetTask(ctx context.Context, id int64) (*model.ObservabilityTask, error) { + key := c.keyGenerator.TaskKey(id) + data, err := c.redisClient.Get(ctx, key) + if err != nil { + logs.CtxWarn(ctx, "Failed to get task from cache: %v", err) + return nil, err + } + + if data == "" { + return nil, nil // 缓存未命中 + } + + var task model.ObservabilityTask + if err := json.Unmarshal([]byte(data), &task); err != nil { + logs.CtxWarn(ctx, "Failed to unmarshal task from cache: %v", err) + return nil, err + } + + return &task, nil +} + +// SetTask 设置任务缓存 +func (c *cacheManagerImpl) SetTask(ctx context.Context, task *model.ObservabilityTask) error { + key := c.keyGenerator.TaskKey(task.ID) + data, err := json.Marshal(task) + if err != nil { + logs.CtxWarn(ctx, "Failed to marshal task for cache: %v", err) + return err + } + + if err := c.redisClient.Set(ctx, key, string(data), TaskTTL); err != nil { + logs.CtxWarn(ctx, "Failed to set task cache: %v", err) + return err + } + + return nil +} + +// DeleteTask 删除任务缓存 +func (c *cacheManagerImpl) DeleteTask(ctx context.Context, id int64) error { + key := c.keyGenerator.TaskKey(id) + if err := c.redisClient.Del(ctx, key); err != nil { + logs.CtxWarn(ctx, "Failed to delete task cache: %v", err) + return err + } + return nil +} + +// GetTaskList 获取任务列表缓存 +func (c *cacheManagerImpl) GetTaskList(ctx context.Context, key string) ([]*model.ObservabilityTask, error) { + data, err := c.redisClient.Get(ctx, key) + if err != nil { + logs.CtxWarn(ctx, "Failed to get task list from cache: %v", err) + return nil, err + } + + if data == "" { + return nil, nil // 缓存未命中 + } + + var tasks []*model.ObservabilityTask + if err := json.Unmarshal([]byte(data), &tasks); err != nil { + logs.CtxWarn(ctx, "Failed to unmarshal task list from cache: %v", err) + return nil, err + } + + return tasks, nil +} + +// SetTaskList 设置任务列表缓存 +func (c *cacheManagerImpl) SetTaskList(ctx context.Context, key string, tasks []*model.ObservabilityTask) error { + data, err := json.Marshal(tasks) + if err != nil { + logs.CtxWarn(ctx, "Failed to marshal task list for cache: %v", err) + return err + } + + if err := c.redisClient.Set(ctx, key, string(data), TaskListTTL); err != nil { + logs.CtxWarn(ctx, "Failed to set task list cache: %v", err) + return err + } + + return nil +} + +// DeleteTaskListByPattern 按模式删除任务列表缓存 +func (c *cacheManagerImpl) DeleteTaskListByPattern(ctx context.Context, pattern string) error { + // TODO: 实现按模式删除缓存的逻辑 + // 这里需要根据具体的Redis客户端实现来扫描和删除匹配的key + logs.CtxInfo(ctx, "Deleting task list cache by pattern: %s", pattern) + return nil +} + +// GetTaskRun 获取任务运行记录缓存 +func (c *cacheManagerImpl) GetTaskRun(ctx context.Context, id int64) (*model.ObservabilityTaskRun, error) { + key := c.keyGenerator.TaskRunKey(id) + data, err := c.redisClient.Get(ctx, key) + if err != nil { + logs.CtxWarn(ctx, "Failed to get task run from cache: %v", err) + return nil, err + } + + if data == "" { + return nil, nil // 缓存未命中 + } + + var taskRun model.ObservabilityTaskRun + if err := json.Unmarshal([]byte(data), &taskRun); err != nil { + logs.CtxWarn(ctx, "Failed to unmarshal task run from cache: %v", err) + return nil, err + } + + return &taskRun, nil +} + +// SetTaskRun 设置任务运行记录缓存 +func (c *cacheManagerImpl) SetTaskRun(ctx context.Context, taskRun *model.ObservabilityTaskRun) error { + key := c.keyGenerator.TaskRunKey(taskRun.ID) + data, err := json.Marshal(taskRun) + if err != nil { + logs.CtxWarn(ctx, "Failed to marshal task run for cache: %v", err) + return err + } + + if err := c.redisClient.Set(ctx, key, string(data), TaskRunTTL); err != nil { + logs.CtxWarn(ctx, "Failed to set task run cache: %v", err) + return err + } + + return nil +} + +// DeleteTaskRun 删除任务运行记录缓存 +func (c *cacheManagerImpl) DeleteTaskRun(ctx context.Context, id int64) error { + key := c.keyGenerator.TaskRunKey(id) + if err := c.redisClient.Del(ctx, key); err != nil { + logs.CtxWarn(ctx, "Failed to delete task run cache: %v", err) + return err + } + return nil +} + +// GetTaskRunList 获取任务运行记录列表缓存 +func (c *cacheManagerImpl) GetTaskRunList(ctx context.Context, key string) ([]*model.ObservabilityTaskRun, error) { + data, err := c.redisClient.Get(ctx, key) + if err != nil { + logs.CtxWarn(ctx, "Failed to get task run list from cache: %v", err) + return nil, err + } + + if data == "" { + return nil, nil // 缓存未命中 + } + + var taskRuns []*model.ObservabilityTaskRun + if err := json.Unmarshal([]byte(data), &taskRuns); err != nil { + logs.CtxWarn(ctx, "Failed to unmarshal task run list from cache: %v", err) + return nil, err + } + + return taskRuns, nil +} + +// SetTaskRunList 设置任务运行记录列表缓存 +func (c *cacheManagerImpl) SetTaskRunList(ctx context.Context, key string, taskRuns []*model.ObservabilityTaskRun) error { + data, err := json.Marshal(taskRuns) + if err != nil { + logs.CtxWarn(ctx, "Failed to marshal task run list for cache: %v", err) + return err + } + + if err := c.redisClient.Set(ctx, key, string(data), TaskRunListTTL); err != nil { + logs.CtxWarn(ctx, "Failed to set task run list cache: %v", err) + return err + } + + return nil +} + +// DeleteTaskRunListByPattern 按模式删除任务运行记录列表缓存 +func (c *cacheManagerImpl) DeleteTaskRunListByPattern(ctx context.Context, pattern string) error { + // TODO: 实现按模式删除缓存的逻辑 + // 这里需要根据具体的Redis客户端实现来扫描和删除匹配的key + logs.CtxInfo(ctx, "Deleting task run list cache by pattern: %s", pattern) + return nil +} \ No newline at end of file diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/key_generator.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/key_generator.go new file mode 100755 index 000000000..ab995bac0 --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/key_generator.go @@ -0,0 +1,55 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package cache + +import ( + "crypto/md5" + "fmt" + "strconv" +) + +// KeyGenerator 缓存Key生成器接口 +type KeyGenerator interface { + TaskKey(id int64) string + TaskListKey(workspaceID int64, filterHash string) string + TaskRunKey(id int64) string + TaskRunListKey(taskID int64, filterHash string) string + GenerateFilterHash(param interface{}) string +} + +// keyGeneratorImpl Key生成器实现 +type keyGeneratorImpl struct{} + +// NewKeyGenerator 创建Key生成器 +func NewKeyGenerator() KeyGenerator { + return &keyGeneratorImpl{} +} + +// TaskKey 生成任务缓存Key +func (k *keyGeneratorImpl) TaskKey(id int64) string { + return fmt.Sprintf("observability:task:%d", id) +} + +// TaskListKey 生成任务列表缓存Key +func (k *keyGeneratorImpl) TaskListKey(workspaceID int64, filterHash string) string { + return fmt.Sprintf("observability:task:list:%d:%s", workspaceID, filterHash) +} + +// TaskRunKey 生成任务运行记录缓存Key +func (k *keyGeneratorImpl) TaskRunKey(id int64) string { + return fmt.Sprintf("observability:taskrun:%d", id) +} + +// TaskRunListKey 生成任务运行记录列表缓存Key +func (k *keyGeneratorImpl) TaskRunListKey(taskID int64, filterHash string) string { + return fmt.Sprintf("observability:taskrun:list:%d:%s", taskID, filterHash) +} + +// GenerateFilterHash 基于查询参数生成哈希值 +func (k *keyGeneratorImpl) GenerateFilterHash(param interface{}) string { + // 将参数转换为字符串并生成MD5哈希 + paramStr := fmt.Sprintf("%+v", param) + hash := md5.Sum([]byte(paramStr)) + return fmt.Sprintf("%x", hash) +} \ No newline at end of file diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/redis_client.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/redis_client.go new file mode 100755 index 000000000..733fb051e --- /dev/null +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/cache/redis_client.go @@ -0,0 +1,52 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package cache + +import ( + "context" + "time" +) + +// RedisClient Redis客户端接口 +type RedisClient interface { + Get(ctx context.Context, key string) (string, error) + Set(ctx context.Context, key string, value interface{}, expiration time.Duration) error + Del(ctx context.Context, keys ...string) error + Exists(ctx context.Context, keys ...string) (int64, error) +} + +// redisClientImpl Redis客户端实现 +type redisClientImpl struct { + // 这里可以注入具体的Redis客户端,比如go-redis或者内部的Redis SDK + // 为了示例,我们暂时使用接口,实际使用时需要注入具体实现 +} + +// NewRedisClient 创建Redis客户端 +func NewRedisClient() RedisClient { + return &redisClientImpl{} +} + +func (r *redisClientImpl) Get(ctx context.Context, key string) (string, error) { + // TODO: 实现Redis GET操作 + // 实际实现时需要注入具体的Redis客户端 + return "", nil +} + +func (r *redisClientImpl) Set(ctx context.Context, key string, value interface{}, expiration time.Duration) error { + // TODO: 实现Redis SET操作 + // 实际实现时需要注入具体的Redis客户端 + return nil +} + +func (r *redisClientImpl) Del(ctx context.Context, keys ...string) error { + // TODO: 实现Redis DEL操作 + // 实际实现时需要注入具体的Redis客户端 + return nil +} + +func (r *redisClientImpl) Exists(ctx context.Context, keys ...string) (int64, error) { + // TODO: 实现Redis EXISTS操作 + // 实际实现时需要注入具体的Redis客户端 + return 0, nil +} \ No newline at end of file diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go index 22002a7bb..ac39d4192 100644 --- a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go @@ -1,9 +1,5 @@ // Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 - -package mysql - -import ( +// SPDX-License-Identifier: Apache-2.0import ( "context" "errors" "fmt" @@ -277,4 +273,4 @@ func (d *TaskDaoImpl) order(q *query.Query, orderBy string, asc bool) field.Expr return orderExpr.Asc() } return orderExpr.Desc() -} +} \ No newline at end of file diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 6e0c0ca76..04ccb8273 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -65,8 +65,8 @@ struct EffectiveTime { // TaskConfig struct TaskConfig { - 1: optional list auto_evaluate_configs // 配置的评测规则信息 - 2: optional list data_reflow_configs // 配置的数据回流的数据集信息 + 1: optional list auto_evaluate_configs // 配置的评测规则信息 + 2: optional list data_reflow_config // 配置的数据回流的数据集信息 } struct DataReflowConfig { @@ -114,7 +114,13 @@ struct TaskRunConfig { 1: optional AutoEvaluateRunConfig auto_evaluate_run_config // 自动评测对应的运行配置信息 } struct AutoEvaluateRunConfig { - 1: required i64 evaluator_version_id - 2: required i64 evaluator_id - 3: required list field_mappings + 1: required i64 expt_id + 2: required i64 expt_run_id + 3: required i64 eval_id + 4: required i64 schema_id + 5: optional string schema + 6: required i64 end_at + 7: required i64 cycle_start_at + 8: required i64 cycle_end_at + 9: required string status } \ No newline at end of file From dcce63cffb9baff278a25e0be6866428c5b76b59 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 5 Sep 2025 18:04:06 +0800 Subject: [PATCH 073/462] feat:fix idl --- .../loop/observability/domain/task/task.go | 2 +- .../task/taskexe/processor/auto_evaluate.go | 66 +++++++++++++++ .../infra/repo/redis/dao/task.go | 40 +++++----- .../modules/observability/infra/repo/task.go | 80 ++++++------------- .../loop/observability/domain/task.thrift | 2 +- 5 files changed, 115 insertions(+), 75 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 339b1bdc4..6662cbfb6 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -54,7 +54,7 @@ type Task struct { // 描述 Description *string `thrift:"description,3,optional" frugal:"3,optional,string" form:"description" json:"description,omitempty" query:"description"` // 所在空间 - WorkspaceID *int64 `thrift:"workspace_id,4,optional" frugal:"4,optional,i64" form:"workspace_id" json:"workspace_id,omitempty" query:"workspace_id"` + WorkspaceID *int64 `thrift:"workspace_id,4,optional" frugal:"4,optional,i64" form:"workspace_id" json:"workspace_id,string,omitempty" query:"workspace_id"` // 类型 TaskType TaskType `thrift:"task_type,5,required" frugal:"5,required,string" form:"task_type,required" json:"task_type,required" query:"task_type,required"` // 状态 diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 48d0a0b61..6097f6483 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -19,6 +19,7 @@ import ( dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" @@ -236,10 +237,75 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas } } // 4、更新任务配置 + effectiveTime := currentTask.GetRule().GetEffectiveTime() + taskConfig, err := p.TaskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) + if err != nil { + return err + } + var cycleStartAt, cycleEndAt int64 + currentTime := time.Now().UnixMilli() + + if len(taskConfig.TaskRuns) == 0 { + // 首次创建 taskrun,从任务生效时间开始 + cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) + } else { + // 找到最新的 cycleEndAt 作为新的 cycleStartAt + for _, run := range taskConfig.TaskRuns { + if run.RunStartAt.UnixMilli() > cycleStartAt { + cycleStartAt = run.RunEndAt.UnixMilli() + } + } + cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) + } + cycleEndAt = cycleStartAt + maxAliveTime + + // 确保周期开始时间不早于任务生效时间 + if cycleStartAt < effectiveTime.GetStartAt() { + cycleStartAt = effectiveTime.GetStartAt() + cycleEndAt = cycleStartAt + maxAliveTime + } + + // 确保周期结束时间不晚于任务结束时间 + if cycleEndAt > effectiveTime.GetEndAt() { + cycleEndAt = effectiveTime.GetEndAt() + } + logs.CtxInfo(ctx, "Creating taskrun with cycle: startAt=%d, endAt=%d, currentTime=%d", cycleStartAt, cycleEndAt, currentTime) + // 5、创建 taskrun + taskConfig.TaskRuns = append(taskConfig.TaskRuns, &task_entity.TaskRun{ + ID: exptID, + TaskID: currentTask.GetID(), + WorkspaceID: currentTask.GetWorkspaceID(), + TaskType: currentTask.GetTaskType(), + RunStatus: task.RunStatusRunning, + RunDetail: nil, + BackfillDetail: nil, + RunStartAt: time.UnixMilli(cycleStartAt), + RunEndAt: time.UnixMilli(cycleEndAt), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }) + // 6、更新任务配置 + // todo:[xun]改task_run? + err = p.TaskRepo.UpdateTask(ctx, taskConfig) + if err != nil { + return err + } return nil } +func resetStartTime(currentTime int64, originalStartTime int64, maxAliveTime int64) int64 { + if currentTime > originalStartTime { + // 计算需要跳过的周期数 + timeDiff := currentTime - originalStartTime + skipCycles := timeDiff / maxAliveTime + + // 跳过过期的时间段,直接计算新的周期开始时间 + return originalStartTime + (skipCycles * maxAliveTime) + } + return originalStartTime +} + func getSession(ctx context.Context, task *task.Task) *common.Session { userID, err := strconv.ParseInt(task.BaseInfo.CreatedBy.GetUserID(), 10, 64) if err != nil { diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 3b49bb0e6..8404b2fc0 100644 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -19,6 +19,7 @@ import ( "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) + //go:generate mockgen -destination=mocks/Task_dao.go -package=mocks . ITaskDAO type ITaskDAO interface { // 原有方法 @@ -35,15 +36,15 @@ type ITaskDAO interface { GetTask(ctx context.Context, id int64) (*entity.ObservabilityTask, error) SetTask(ctx context.Context, task *entity.ObservabilityTask, ttl time.Duration) error DeleteTask(ctx context.Context, id int64) error - + GetTaskList(ctx context.Context, key string) ([]*entity.ObservabilityTask, int64, error) SetTaskList(ctx context.Context, key string, tasks []*entity.ObservabilityTask, total int64, ttl time.Duration) error DeleteTaskList(ctx context.Context, pattern string) error - + GetNonFinalTaskList(ctx context.Context) ([]*entity.ObservabilityTask, error) SetNonFinalTaskList(ctx context.Context, tasks []*entity.ObservabilityTask, ttl time.Duration) error DeleteNonFinalTaskList(ctx context.Context) error - + GetTaskCount(ctx context.Context, workspaceID int64) (int64, error) SetTaskCount(ctx context.Context, workspaceID int64, count int64, ttl time.Duration) error DeleteTaskCount(ctx context.Context, workspaceID int64) error @@ -59,6 +60,7 @@ func NewTaskDAO(cmdable redis.Cmdable) ITaskDAO { cmdable: cmdable, } } + // 原有 key 生成方法 func (q *TaskDAOImpl) makeTaskConfigKey(taskID int64) string { return fmt.Sprintf("task_config_%d", taskID) @@ -94,14 +96,14 @@ func (q *TaskDAOImpl) generateFilterHash(param mysql.ListTaskParam) string { if param.TaskFilters == nil { return "no_filter" } - + // 将过滤条件序列化为 JSON 字符串 filterBytes, err := json.Marshal(param.TaskFilters) if err != nil { logs.Error("failed to marshal filter: %v", err) return "no_filter" } - + // 生成 MD5 hash hash := md5.Sum(filterBytes) return hex.EncodeToString(hash[:]) @@ -180,7 +182,7 @@ func (p *TaskDAOImpl) MDecrTaskRunCount(ctx context.Context, taskID, runID int64 // GetTask 获取单个任务缓存 func (p *TaskDAOImpl) GetTask(ctx context.Context, id int64) (*entity.ObservabilityTask, error) { - key := p.makeTaskDetailKey(id) + key := p.makeTaskConfigKey(id) got, err := p.cmdable.Get(ctx, key).Result() if err != nil { if redis.IsNilError(err) { @@ -197,7 +199,7 @@ func (p *TaskDAOImpl) SetTask(ctx context.Context, task *entity.ObservabilityTas if err != nil { return err } - key := p.makeTaskDetailKey(task.ID) + key := p.makeTaskConfigKey(task.ID) if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { logs.CtxError(ctx, "redis set task cache failed", "key", key, "err", err) return errorx.Wrapf(err, "redis set task key: %v", key) @@ -217,9 +219,9 @@ func (p *TaskDAOImpl) DeleteTask(ctx context.Context, id int64) error { // TaskListCache 任务列表缓存结构 type TaskListCache struct { - Items []*entity.ObservabilityTask `json:"items"` - Total int64 `json:"total"` - CachedAt time.Time `json:"cached_at"` + Items []*entity.ObservabilityTask `json:"items"` + Total int64 `json:"total"` + CachedAt time.Time `json:"cached_at"` } // GetTaskList 获取任务列表缓存 @@ -231,12 +233,12 @@ func (p *TaskDAOImpl) GetTaskList(ctx context.Context, key string) ([]*entity.Ob } return nil, 0, errorx.Wrapf(err, "redis get task list fail, key: %v", key) } - + var cache TaskListCache if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &cache); err != nil { return nil, 0, errorx.Wrapf(err, "unmarshal task list cache failed") } - + return cache.Items, cache.Total, nil } @@ -247,12 +249,12 @@ func (p *TaskDAOImpl) SetTaskList(ctx context.Context, key string, tasks []*enti Total: total, CachedAt: time.Now(), } - + bytes, err := json.Marshal(cache) if err != nil { return errorx.Wrapf(err, "marshal task list cache failed") } - + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { logs.CtxError(ctx, "redis set task list cache failed", "key", key, "err", err) return errorx.Wrapf(err, "redis set task list key: %v", key) @@ -278,24 +280,24 @@ func (p *TaskDAOImpl) GetNonFinalTaskList(ctx context.Context) ([]*entity.Observ } return nil, errorx.Wrapf(err, "redis get non final task list fail, key: %v", key) } - + var tasks []*entity.ObservabilityTask if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &tasks); err != nil { return nil, errorx.Wrapf(err, "unmarshal non final task list cache failed") } - + return tasks, nil } // SetNonFinalTaskList 设置非最终状态任务列表缓存 func (p *TaskDAOImpl) SetNonFinalTaskList(ctx context.Context, tasks []*entity.ObservabilityTask, ttl time.Duration) error { key := p.makeNonFinalTaskListKey() - + bytes, err := json.Marshal(tasks) if err != nil { return errorx.Wrapf(err, "marshal non final task list cache failed") } - + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { logs.CtxError(ctx, "redis set non final task list cache failed", "key", key, "err", err) return errorx.Wrapf(err, "redis set non final task list key: %v", key) @@ -344,4 +346,4 @@ func (p *TaskDAOImpl) DeleteTaskCount(ctx context.Context, workspaceID int64) er return errorx.Wrapf(err, "redis delete task count key: %v", key) } return nil -} \ No newline at end of file +} diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index e103bca85..7f52ce60c 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -34,9 +34,7 @@ type TaskRepoImpl struct { // 缓存 TTL 常量 const ( TaskDetailTTL = 30 * time.Minute // 单个任务缓存30分钟 - TaskListTTL = 5 * time.Minute // 任务列表缓存5分钟 NonFinalTaskListTTL = 1 * time.Minute // 非最终状态任务缓存1分钟 - TaskCountTTL = 10 * time.Minute // 任务计数缓存10分钟 ) func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityTask, error) { @@ -60,54 +58,28 @@ func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64 if err != nil { return nil, err } - + taskDO := convertor.TaskPO2DO(TaskPo) - + // 异步缓存到 Redis go func() { if err := v.TaskRedisDao.SetTask(context.Background(), taskDO, TaskDetailTTL); err != nil { logs.Error("failed to set task cache", "id", id, "err", err) } }() - + return taskDO, nil } func (v *TaskRepoImpl) ListTasks(ctx context.Context, param mysql.ListTaskParam) ([]*entity.ObservabilityTask, int64, error) { - // 生成缓存 key - var workspaceID int64 - if len(param.WorkspaceIDs) > 0 { - workspaceID = param.WorkspaceIDs[0] // 简化处理,取第一个 - } - filterHash := v.generateFilterHash(param) - cacheKey := fmt.Sprintf("task:list:%d:%s:%d:%d", workspaceID, filterHash, param.ReqOffset, param.ReqLimit) - - // 先查 Redis 缓存 - cachedTasks, cachedTotal, err := v.TaskRedisDao.GetTaskList(ctx, cacheKey) - if err != nil { - logs.CtxWarn(ctx, "failed to get task list from redis cache", "key", cacheKey, "err", err) - } else if cachedTasks != nil { - return cachedTasks, cachedTotal, nil - } - - // 缓存未命中,查询数据库 results, total, err := v.TaskDao.ListTasks(ctx, param) if err != nil { return nil, 0, err } - resp := make([]*entity.ObservabilityTask, len(results)) for i, result := range results { resp[i] = convertor.TaskPO2DO(result) } - - // 异步缓存到 Redis - go func() { - if err := v.TaskRedisDao.SetTaskList(context.Background(), cacheKey, resp, total, TaskListTTL); err != nil { - logs.Error("failed to set task list cache", "key", cacheKey, "err", err) - } - }() - return resp, total, nil } @@ -118,13 +90,13 @@ func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityT } TaskPo := convertor.TaskDO2PO(do) TaskPo.ID = id - + // 先执行数据库操作 createdID, err := v.TaskDao.CreateTask(ctx, TaskPo) if err != nil { return 0, err } - + // 数据库操作成功后,更新缓存 do.ID = createdID go func() { @@ -132,34 +104,34 @@ func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityT if err := v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { logs.Error("failed to set task cache after create", "id", createdID, "err", err) } - + // 清理相关列表缓存 v.clearListCaches(context.Background(), do.WorkspaceID) }() - + return createdID, nil } func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error { TaskPo := convertor.TaskDO2PO(do) - + // 先执行数据库操作 err := v.TaskDao.UpdateTask(ctx, TaskPo) if err != nil { return err } - + // 数据库操作成功后,更新缓存 go func() { // 更新单个任务缓存 if err := v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { logs.Error("failed to update task cache", "id", do.ID, "err", err) } - + // 清理相关列表缓存 v.clearListCaches(context.Background(), do.WorkspaceID) }() - + return nil } @@ -169,18 +141,18 @@ func (v *TaskRepoImpl) DeleteTask(ctx context.Context, id int64, workspaceID int if err != nil { return err } - + // 数据库操作成功后,删除缓存 go func() { // 删除单个任务缓存 if err := v.TaskRedisDao.DeleteTask(context.Background(), id); err != nil { logs.Error("failed to delete task cache", "id", id, "err", err) } - + // 清理相关列表缓存 v.clearListCaches(context.Background(), workspaceID) }() - + return nil } @@ -198,19 +170,19 @@ func (v *TaskRepoImpl) ListNonFinalTask(ctx context.Context) ([]*entity.Observab if err != nil { return nil, err } - + resp := make([]*entity.ObservabilityTask, len(results)) for i, result := range results { resp[i] = convertor.TaskPO2DO(result) } - + // 异步缓存到 Redis(短TTL,因为非最终状态变化频繁) go func() { if err := v.TaskRedisDao.SetNonFinalTaskList(context.Background(), resp, NonFinalTaskListTTL); err != nil { logs.Error("failed to set non final task list cache", "err", err) } }() - + return resp, nil } func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { @@ -219,23 +191,23 @@ func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspac if err != nil { return err } - + // 数据库操作成功后,删除缓存(因为无法直接更新部分字段) go func() { // 删除单个任务缓存,下次查询时会重新加载 if err := v.TaskRedisDao.DeleteTask(context.Background(), id); err != nil { logs.Error("failed to delete task cache after OCC update", "id", id, "err", err) } - + // 清理相关列表缓存 v.clearListCaches(context.Background(), workspaceID) - + // 清理非最终状态任务缓存(状态可能发生变化) if err := v.TaskRedisDao.DeleteNonFinalTaskList(context.Background()); err != nil { logs.Error("failed to delete non final task list cache after OCC update", "err", err) } }() - + return nil } @@ -246,12 +218,12 @@ func (v *TaskRepoImpl) clearListCaches(ctx context.Context, workspaceID int64) { if err := v.TaskRedisDao.DeleteTaskList(ctx, pattern); err != nil { logs.Error("failed to delete task list cache", "pattern", pattern, "err", err) } - + // 清理任务计数缓存 if err := v.TaskRedisDao.DeleteTaskCount(ctx, workspaceID); err != nil { logs.Error("failed to delete task count cache", "workspaceID", workspaceID, "err", err) } - + // 清理非最终状态任务缓存 if err := v.TaskRedisDao.DeleteNonFinalTaskList(ctx); err != nil { logs.Error("failed to delete non final task list cache", "err", err) @@ -263,10 +235,10 @@ func (v *TaskRepoImpl) generateFilterHash(param mysql.ListTaskParam) string { if param.TaskFilters == nil { return "no_filter" } - + // 将过滤条件序列化为字符串 filterStr := fmt.Sprintf("%+v", param.TaskFilters) - + // 生成简单的 hash(在实际生产环境中可能需要更复杂的 hash 算法) return fmt.Sprintf("%x", len(filterStr)) -} \ No newline at end of file +} diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 04ccb8273..39e969fea 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -29,7 +29,7 @@ struct Task { 1: optional i64 id // 任务 id 2: required string name // 名称 3: optional string description // 描述 - 4: optional i64 workspace_id // 所在空间 + 4: optional i64 workspace_id(api.js_conv='true') // 所在空间 5: required TaskType task_type // 类型 6: optional TaskStatus task_status // 状态 7: optional Rule rule // 规则 From 539ffe807dee5019794c331b32f723922f587058 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 11:33:44 +0800 Subject: [PATCH 074/462] feat:fix idl --- .../loop/observability/domain/task/task.go | 46 ++++----- .../loop/observability/domain/task.thrift | 94 +++++++++---------- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 6662cbfb6..bad76ee58 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -48,13 +48,13 @@ type RunStatus = string // Task type Task struct { // 任务 id - ID *int64 `thrift:"id,1,optional" frugal:"1,optional,i64" form:"id" json:"id,omitempty" query:"id"` + ID *int64 `thrift:"id,1,optional" frugal:"1,optional,i64" json:"id" form:"id" query:"id"` // 名称 Name string `thrift:"name,2,required" frugal:"2,required,string" form:"name,required" json:"name,required" query:"name,required"` // 描述 Description *string `thrift:"description,3,optional" frugal:"3,optional,string" form:"description" json:"description,omitempty" query:"description"` // 所在空间 - WorkspaceID *int64 `thrift:"workspace_id,4,optional" frugal:"4,optional,i64" form:"workspace_id" json:"workspace_id,string,omitempty" query:"workspace_id"` + WorkspaceID *int64 `thrift:"workspace_id,4,optional" frugal:"4,optional,i64" json:"workspace_id" form:"workspace_id" query:"workspace_id"` // 类型 TaskType TaskType `thrift:"task_type,5,required" frugal:"5,required,string" form:"task_type,required" json:"task_type,required" query:"task_type,required"` // 状态 @@ -1340,13 +1340,13 @@ type Sampler struct { // 采样率 SampleRate *float64 `thrift:"sample_rate,1,optional" frugal:"1,optional,double" form:"sample_rate" json:"sample_rate,omitempty" query:"sample_rate"` // 采样上限 - SampleSize *int64 `thrift:"sample_size,2,optional" frugal:"2,optional,i64" form:"sample_size" json:"sample_size,omitempty" query:"sample_size"` + SampleSize *int64 `thrift:"sample_size,2,optional" frugal:"2,optional,i64" json:"sample_size" form:"sample_size" query:"sample_size"` // 是否启动任务循环 IsCycle *bool `thrift:"is_cycle,3,optional" frugal:"3,optional,bool" form:"is_cycle" json:"is_cycle,omitempty" query:"is_cycle"` // 采样单次上限 - CycleCount *int64 `thrift:"cycle_count,4,optional" frugal:"4,optional,i64" form:"cycle_count" json:"cycle_count,omitempty" query:"cycle_count"` + CycleCount *int64 `thrift:"cycle_count,4,optional" frugal:"4,optional,i64" json:"cycle_count" form:"cycle_count" query:"cycle_count"` // 循环间隔 - CycleInterval *int64 `thrift:"cycle_interval,5,optional" frugal:"5,optional,i64" form:"cycle_interval" json:"cycle_interval,omitempty" query:"cycle_interval"` + CycleInterval *int64 `thrift:"cycle_interval,5,optional" frugal:"5,optional,i64" json:"cycle_interval" form:"cycle_interval" query:"cycle_interval"` // 循环时间单位 CycleTimeUnit *TimeUnit `thrift:"cycle_time_unit,6,optional" frugal:"6,optional,string" form:"cycle_time_unit" json:"cycle_time_unit,omitempty" query:"cycle_time_unit"` } @@ -1910,9 +1910,9 @@ func (p *Sampler) Field6DeepEqual(src *TimeUnit) bool { type EffectiveTime struct { // ms timestamp - StartAt *int64 `thrift:"start_at,1,optional" frugal:"1,optional,i64" form:"start_at" json:"start_at,omitempty" query:"start_at"` + StartAt *int64 `thrift:"start_at,1,optional" frugal:"1,optional,i64" json:"start_at" form:"start_at" query:"start_at"` // ms timestamp - EndAt *int64 `thrift:"end_at,2,optional" frugal:"2,optional,i64" form:"end_at" json:"end_at,omitempty" query:"end_at"` + EndAt *int64 `thrift:"end_at,2,optional" frugal:"2,optional,i64" json:"end_at" form:"end_at" query:"end_at"` } func NewEffectiveTime() *EffectiveTime { @@ -2900,8 +2900,8 @@ func (p *DataReflowConfig) Field4DeepEqual(src []*dataset.FieldMapping) bool { } type AutoEvaluateConfig struct { - EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" form:"evaluator_version_id,required" json:"evaluator_version_id,required" query:"evaluator_version_id,required"` - EvaluatorID int64 `thrift:"evaluator_id,2,required" frugal:"2,required,i64" form:"evaluator_id,required" json:"evaluator_id,required" query:"evaluator_id,required"` + EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" json:"evaluator_version_id" form:"evaluator_version_id,required" query:"evaluator_version_id,required"` + EvaluatorID int64 `thrift:"evaluator_id,2,required" frugal:"2,required,i64" json:"evaluator_id" form:"evaluator_id,required" query:"evaluator_id,required"` FieldMappings []*FieldMapping `thrift:"field_mappings,3,required" frugal:"3,required,list" form:"field_mappings,required" json:"field_mappings,required" query:"field_mappings,required"` } @@ -3236,8 +3236,8 @@ func (p *AutoEvaluateConfig) Field3DeepEqual(src []*FieldMapping) bool { // RunDetail type RunDetail struct { - SuccessCount *int64 `thrift:"success_count,1,optional" frugal:"1,optional,i64" form:"success_count" json:"success_count,omitempty" query:"success_count"` - FailedCount *int64 `thrift:"failed_count,2,optional" frugal:"2,optional,i64" form:"failed_count" json:"failed_count,omitempty" query:"failed_count"` + SuccessCount *int64 `thrift:"success_count,1,optional" frugal:"1,optional,i64" json:"success_count" form:"success_count" query:"success_count"` + FailedCount *int64 `thrift:"failed_count,2,optional" frugal:"2,optional,i64" json:"failed_count" form:"failed_count" query:"failed_count"` } func NewRunDetail() *RunDetail { @@ -3889,11 +3889,11 @@ func (p *FieldMapping) Field4DeepEqual(src *string) bool { // TaskRun type TaskRun struct { // 任务 run id - ID int64 `thrift:"id,1,required" frugal:"1,required,i64" form:"id,required" json:"id,required" query:"id,required"` + ID int64 `thrift:"id,1,required" frugal:"1,required,i64" json:"id" form:"id,required" query:"id,required"` // 所在空间 - WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" form:"workspace_id,required" json:"workspace_id,required" query:"workspace_id,required"` + WorkspaceID int64 `thrift:"workspace_id,2,required" frugal:"2,required,i64" json:"workspace_id" form:"workspace_id,required" query:"workspace_id,required"` // 任务 id - TaskID int64 `thrift:"task_id,3,required" frugal:"3,required,i64" form:"task_id,required" json:"task_id,required" query:"task_id,required"` + TaskID int64 `thrift:"task_id,3,required" frugal:"3,required,i64" json:"task_id" form:"task_id,required" query:"task_id,required"` // 类型 TaskType TaskType `thrift:"task_type,4,required" frugal:"4,required,string" form:"task_type,required" json:"task_type,required" query:"task_type,required"` // 状态 @@ -3902,8 +3902,8 @@ type TaskRun struct { RunDetail *RunDetail `thrift:"run_detail,6,optional" frugal:"6,optional,RunDetail" form:"run_detail" json:"run_detail,omitempty" query:"run_detail"` // 任务历史数据执行详情 BackfillRunDetail *RunDetail `thrift:"backfill_run_detail,7,optional" frugal:"7,optional,RunDetail" form:"backfill_run_detail" json:"backfill_run_detail,omitempty" query:"backfill_run_detail"` - RunStartAt int64 `thrift:"run_start_at,8,required" frugal:"8,required,i64" form:"run_start_at,required" json:"run_start_at,required" query:"run_start_at,required"` - RunEndAt int64 `thrift:"run_end_at,9,required" frugal:"9,required,i64" form:"run_end_at,required" json:"run_end_at,required" query:"run_end_at,required"` + RunStartAt int64 `thrift:"run_start_at,8,required" frugal:"8,required,i64" json:"run_start_at" form:"run_start_at,required" query:"run_start_at,required"` + RunEndAt int64 `thrift:"run_end_at,9,required" frugal:"9,required,i64" json:"run_end_at" form:"run_end_at,required" query:"run_end_at,required"` // 配置 TaskRunConfig *TaskRunConfig `thrift:"task_run_config,10,optional" frugal:"10,optional,TaskRunConfig" form:"task_run_config" json:"task_run_config,omitempty" query:"task_run_config"` // 基础信息 @@ -4928,14 +4928,14 @@ func (p *TaskRunConfig) Field1DeepEqual(src *AutoEvaluateRunConfig) bool { } type AutoEvaluateRunConfig struct { - ExptID int64 `thrift:"expt_id,1,required" frugal:"1,required,i64" form:"expt_id,required" json:"expt_id,required" query:"expt_id,required"` - ExptRunID int64 `thrift:"expt_run_id,2,required" frugal:"2,required,i64" form:"expt_run_id,required" json:"expt_run_id,required" query:"expt_run_id,required"` - EvalID int64 `thrift:"eval_id,3,required" frugal:"3,required,i64" form:"eval_id,required" json:"eval_id,required" query:"eval_id,required"` - SchemaID int64 `thrift:"schema_id,4,required" frugal:"4,required,i64" form:"schema_id,required" json:"schema_id,required" query:"schema_id,required"` + ExptID int64 `thrift:"expt_id,1,required" frugal:"1,required,i64" json:"expt_id" form:"expt_id,required" query:"expt_id,required"` + ExptRunID int64 `thrift:"expt_run_id,2,required" frugal:"2,required,i64" json:"expt_run_id" form:"expt_run_id,required" query:"expt_run_id,required"` + EvalID int64 `thrift:"eval_id,3,required" frugal:"3,required,i64" json:"eval_id" form:"eval_id,required" query:"eval_id,required"` + SchemaID int64 `thrift:"schema_id,4,required" frugal:"4,required,i64" json:"schema_id" form:"schema_id,required" query:"schema_id,required"` Schema *string `thrift:"schema,5,optional" frugal:"5,optional,string" form:"schema" json:"schema,omitempty" query:"schema"` - EndAt int64 `thrift:"end_at,6,required" frugal:"6,required,i64" form:"end_at,required" json:"end_at,required" query:"end_at,required"` - CycleStartAt int64 `thrift:"cycle_start_at,7,required" frugal:"7,required,i64" form:"cycle_start_at,required" json:"cycle_start_at,required" query:"cycle_start_at,required"` - CycleEndAt int64 `thrift:"cycle_end_at,8,required" frugal:"8,required,i64" form:"cycle_end_at,required" json:"cycle_end_at,required" query:"cycle_end_at,required"` + EndAt int64 `thrift:"end_at,6,required" frugal:"6,required,i64" json:"end_at" form:"end_at,required" query:"end_at,required"` + CycleStartAt int64 `thrift:"cycle_start_at,7,required" frugal:"7,required,i64" json:"cycle_start_at" form:"cycle_start_at,required" query:"cycle_start_at,required"` + CycleEndAt int64 `thrift:"cycle_end_at,8,required" frugal:"8,required,i64" json:"cycle_end_at" form:"cycle_end_at,required" query:"cycle_end_at,required"` Status string `thrift:"status,9,required" frugal:"9,required,string" form:"status,required" json:"status,required" query:"status,required"` } diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 39e969fea..f6a9a7aa1 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -26,40 +26,40 @@ const RunStatus RunStatus_Done = "done" // 完成运行 // Task struct Task { - 1: optional i64 id // 任务 id - 2: required string name // 名称 - 3: optional string description // 描述 - 4: optional i64 workspace_id(api.js_conv='true') // 所在空间 - 5: required TaskType task_type // 类型 - 6: optional TaskStatus task_status // 状态 - 7: optional Rule rule // 规则 - 8: optional TaskConfig task_config // 配置 - 9: optional RunDetail task_detail // 任务状态详情 - 10: optional RunDetail backfill_task_detail // 任务历史数据执行详情 - - 100: optional common.BaseInfo base_info // 基础信息 + 1: optional i64 id (api.js_conv="true", go.tag='json:"id"') // 任务 id + 2: required string name // 名称 + 3: optional string description // 描述 + 4: optional i64 workspace_id (api.js_conv="true", go.tag='json:"workspace_id"') // 所在空间 + 5: required TaskType task_type // 类型 + 6: optional TaskStatus task_status // 状态 + 7: optional Rule rule // 规则 + 8: optional TaskConfig task_config // 配置 + 9: optional RunDetail task_detail // 任务状态详情 + 10: optional RunDetail backfill_task_detail // 任务历史数据执行详情 + + 100: optional common.BaseInfo base_info // 基础信息 } // Rule struct Rule { - 1: optional filter.SpanFilterFields span_filters // Span 过滤条件 - 2: optional Sampler sampler // 采样配置 - 3: optional EffectiveTime effective_time // 生效时间窗口 - 4: optional EffectiveTime backfill_effective_time // 历史数据生效时间窗口 + 1: optional filter.SpanFilterFields span_filters // Span 过滤条件 + 2: optional Sampler sampler // 采样配置 + 3: optional EffectiveTime effective_time // 生效时间窗口 + 4: optional EffectiveTime backfill_effective_time // 历史数据生效时间窗口 } struct Sampler { - 1: optional double sample_rate // 采样率 - 2: optional i64 sample_size // 采样上限 - 3: optional bool is_cycle // 是否启动任务循环 - 4: optional i64 cycle_count // 采样单次上限 - 5: optional i64 cycle_interval // 循环间隔 - 6: optional TimeUnit cycle_time_unit // 循环时间单位 + 1: optional double sample_rate // 采样率 + 2: optional i64 sample_size (api.js_conv="true", go.tag='json:"sample_size"') // 采样上限 + 3: optional bool is_cycle // 是否启动任务循环 + 4: optional i64 cycle_count (api.js_conv="true", go.tag='json:"cycle_count"') // 采样单次上限 + 5: optional i64 cycle_interval (api.js_conv="true", go.tag='json:"cycle_interval"') // 循环间隔 + 6: optional TimeUnit cycle_time_unit // 循环时间单位 } struct EffectiveTime { - 1: optional i64 start_at // ms timestamp - 2: optional i64 end_at // ms timestamp + 1: optional i64 start_at (api.js_conv="true", go.tag='json:"start_at"') // ms timestamp + 2: optional i64 end_at (api.js_conv="true", go.tag='json:"end_at"') // ms timestamp } @@ -77,15 +77,15 @@ struct DataReflowConfig { } struct AutoEvaluateConfig { - 1: required i64 evaluator_version_id - 2: required i64 evaluator_id + 1: required i64 evaluator_version_id (api.js_conv="true", go.tag='json:"evaluator_version_id"') + 2: required i64 evaluator_id (api.js_conv="true", go.tag='json:"evaluator_id"') 3: required list field_mappings } // RunDetail struct RunDetail { - 1: optional i64 success_count - 2: optional i64 failed_count + 1: optional i64 success_count (api.js_conv="true", go.tag='json:"success_count"') + 2: optional i64 failed_count (api.js_conv="true", go.tag='json:"failed_count"') } struct FieldMapping { @@ -97,30 +97,30 @@ struct FieldMapping { // TaskRun struct TaskRun { - 1: required i64 id // 任务 run id - 2: required i64 workspace_id // 所在空间 - 3: required i64 task_id // 任务 id - 4: required TaskType task_type // 类型 - 5: required RunStatus run_status // 状态 - 6: optional RunDetail run_detail // 任务状态详情 - 7: optional RunDetail backfill_run_detail // 任务历史数据执行详情 - 8: required i64 run_start_at - 9: required i64 run_end_at - 10: optional TaskRunConfig task_run_config // 配置 - - 100: optional common.BaseInfo base_info // 基础信息 + 1: required i64 id (api.js_conv="true", go.tag='json:"id"') // 任务 run id + 2: required i64 workspace_id (api.js_conv="true", go.tag='json:"workspace_id"') // 所在空间 + 3: required i64 task_id (api.js_conv="true", go.tag='json:"task_id"') // 任务 id + 4: required TaskType task_type // 类型 + 5: required RunStatus run_status // 状态 + 6: optional RunDetail run_detail // 任务状态详情 + 7: optional RunDetail backfill_run_detail // 任务历史数据执行详情 + 8: required i64 run_start_at (api.js_conv="true", go.tag='json:"run_start_at"') + 9: required i64 run_end_at (api.js_conv="true", go.tag='json:"run_end_at"') + 10: optional TaskRunConfig task_run_config // 配置 + + 100: optional common.BaseInfo base_info // 基础信息 } struct TaskRunConfig { 1: optional AutoEvaluateRunConfig auto_evaluate_run_config // 自动评测对应的运行配置信息 } struct AutoEvaluateRunConfig { - 1: required i64 expt_id - 2: required i64 expt_run_id - 3: required i64 eval_id - 4: required i64 schema_id + 1: required i64 expt_id (api.js_conv="true", go.tag='json:"expt_id"') + 2: required i64 expt_run_id (api.js_conv="true", go.tag='json:"expt_run_id"') + 3: required i64 eval_id (api.js_conv="true", go.tag='json:"eval_id"') + 4: required i64 schema_id (api.js_conv="true", go.tag='json:"schema_id"') 5: optional string schema - 6: required i64 end_at - 7: required i64 cycle_start_at - 8: required i64 cycle_end_at + 6: required i64 end_at (api.js_conv="true", go.tag='json:"end_at"') + 7: required i64 cycle_start_at (api.js_conv="true", go.tag='json:"cycle_start_at"') + 8: required i64 cycle_end_at (api.js_conv="true", go.tag='json:"cycle_end_at"') 9: required string status } \ No newline at end of file From 79c13c925a873fd132fe461057a47fc79e0dbb95 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 11:50:56 +0800 Subject: [PATCH 075/462] feat:fix code --- .../modules/observability/infra/repo/mysql/task.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go index ac39d4192..27dce67d1 100644 --- a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go +++ b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go @@ -1,5 +1,8 @@ // Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0import ( +// SPDX-License-Identifier: Apache-2.0 +package mysql + +import ( "context" "errors" "fmt" @@ -273,4 +276,4 @@ func (d *TaskDaoImpl) order(q *query.Query, orderBy string, asc bool) field.Expr return orderExpr.Asc() } return orderExpr.Desc() -} \ No newline at end of file +} From 2af8fde7ebe27acb969a2a03e29be7fc9007a7b1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 16:28:20 +0800 Subject: [PATCH 076/462] feat: [Coda] auto-start scheduled task in NewTraceHubImpl (LogID: 202509081621420100911061797443D55) Co-Authored-By: Coda --- .../observability/domain/task/entity/event.go | 39 ++ .../observability/domain/task/repo/task.go | 4 + .../task/taskexe/tracehub/subscriber.go | 101 +++++ .../domain/task/taskexe/tracehub/trace_hub.go | 347 ++++++++++++++---- .../domain/task/taskexe/tracehub/utils.go | 8 + .../domain/task/taskexe/types.go | 5 +- .../infra/repo/redis/dao/task.go | 32 +- .../modules/observability/infra/repo/task.go | 30 ++ 8 files changed, 481 insertions(+), 85 deletions(-) create mode 100644 backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go index 9779ec6fe..77369223b 100644 --- a/backend/modules/observability/domain/task/entity/event.go +++ b/backend/modules/observability/domain/task/entity/event.go @@ -3,6 +3,10 @@ package entity +import ( + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" +) + type RawSpan struct { TraceID string `json:"_trace_id"` LogID string `json:"__logid"` @@ -80,3 +84,38 @@ func (s *RawSpan) GetServerEnv() *ServerInRawSpan { } return s.ServerEnv } + +func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { + if s == nil { + return nil + } + + result := &loop_span.Span{ + StartTime: s.StartTimeInUs / 1000, + SpanID: s.SpanID, + ParentID: s.ParentID, + LogID: s.LogID, + TraceID: s.TraceID, + DurationMicros: s.DurationInUs / 1000, + PSM: "", + CallType: "", + WorkspaceID: "", + SpanName: s.SpanName, + SpanType: s.SpanType, + Method: s.Method, + StatusCode: s.StatusCode, + Input: "", + Output: "", + ObjectStorage: "", + SystemTagsString: nil, + SystemTagsLong: nil, + SystemTagsDouble: nil, + TagsString: nil, + TagsLong: nil, + TagsDouble: nil, + TagsBool: nil, + TagsByte: nil, + } + + return result +} diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index 77aa3b0d4..c80fa4fbe 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -19,4 +19,8 @@ type ITaskRepo interface { DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error + GetObjListWithTask(ctx context.Context) ([]string, []string) + ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask + GetTaskCount(ctx context.Context, taskID int64) (int64, error) + GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go new file mode 100644 index 000000000..a25a2bffb --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -0,0 +1,101 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package tracehub + +import ( + "context" + "math/rand" + "sync" + "time" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +type spanSubscriber struct { + taskID int64 + sync.RWMutex // protect t, buf + t *task.Task + processor taskexe.Processor + buf []*loop_span.Span + bufCap int // max buffer size + + flushWait sync.WaitGroup + maxFlushInterval time.Duration + taskRepo repo.ITaskRepo +} + +// Sampled 根据采样率计算是否被采样;采样数量将在 flush 时强制校验。 +func (s *spanSubscriber) Sampled() bool { + t := s.getTask() + if t == nil || t.Rule == nil || t.Rule.Sampler == nil { + return false + } + + const base = 10000 + threshold := int64(float64(base) * t.GetRule().GetSampler().GetSampleRate()) + r := rand.Int63n(base) // todo: rand seed + return r <= threshold +} +func (s *spanSubscriber) getTask() *task.Task { + s.RLock() + defer s.RUnlock() + return s.t +} + +// Match 检查 span 是否与 task 的 filter 匹配。 +func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, error) { + + task := s.t + if task == nil || task.Rule == nil { + return false, nil + } + + return true, nil +} +func (s *spanSubscriber) Creative(ctx context.Context) error { + err := s.processor.OnChangeProcessor(ctx, s.t, task.TaskStatusUnstarted) + if err != nil { + return err + } + return nil +} + +func (s *spanSubscriber) AddSpan(ctx context.Context, span *loop_span.Span) error { + taskConfig, err := s.taskRepo.GetTask(ctx, s.t.GetID(), nil, nil) + + var taskRunConfig *entity.TaskRun + if taskConfig != nil { + for _, run := range taskConfig.TaskRuns { + if run.RunStatus == task.TaskStatusRunning { + taskRunConfig = run + break + } + } + } + if taskRunConfig == nil { + logs.CtxWarn(ctx, "no taskRunConfig:%v", taskRunConfig) + return nil + } + if taskRunConfig.RunEndAt.UnixMilli() < time.Now().UnixMilli() || taskRunConfig.RunStartAt.UnixMilli() > time.Now().UnixMilli() { + return nil + } + if Usec2Msec(span.StartTime) < taskRunConfig.RunStartAt.UnixMilli() { + logs.CtxWarn(ctx, "span start time is before task cycle start time, trace_id=%s, span_id=%s", span.TraceID, span.SpanID) + return nil + } + trigger := &taskexe.Trigger{Task: s.t, Span: span} + logs.CtxInfo(ctx, "invoke processor, trigger: %v", trigger) + err = s.processor.Invoke(ctx, taskRunConfig, trigger) + if err != nil { + logs.CtxWarn(ctx, "invoke processor failed, trace_id=%s, span_id=%s, err: %v", span.TraceID, span.SpanID, err) + return err + } + + return nil +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index d402dbff8..2b88c500b 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -5,28 +5,27 @@ package tracehub import ( "context" + "fmt" + "sync" "time" + "github.com/bytedance/gg/gslice" + "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" config "github.com/coze-dev/coze-loop/backend/modules/data/domain/component/conf" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/consumer" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/pkg/logs" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" goredis "github.com/redis/go-redis/v9" ) -type TraceHub struct { - c consumer.Consumer - cfg *config.ConsumerConfig - redis *goredis.Client - ticker *time.Ticker - stopChan chan struct{} - TaskRepo repo.ITaskRepo -} - type ITraceHubService interface { TraceHub(ctx context.Context, event *entity.RawSpan) error } @@ -34,35 +33,238 @@ type ITraceHubService interface { func NewTraceHubImpl( tRepo repo.ITaskRepo, ) (ITraceHubService, error) { - return &TraceHubServiceImpl{ - TaskRepo: tRepo, - }, nil + ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 + impl := &TraceHubServiceImpl{ + taskRepo: tRepo, + ticker: ticker, + stopChan: make(chan struct{}), + } + + // 立即启动定时任务 + impl.startScheduledTask() + + return impl, nil } type TraceHubServiceImpl struct { - TaskRepo repo.ITaskRepo + c consumer.Consumer + cfg *config.ConsumerConfig + redis *goredis.Client + ticker *time.Ticker + stopChan chan struct{} + taskRepo repo.ITaskRepo } -func (t *TraceHubServiceImpl) TraceHub(ctx context.Context, span *entity.RawSpan) error { - // 转换成 +func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawSpan) error { + return nil } -func NewTraceHub(redisCli *goredis.Client, cfg *config.ConsumerConfig) (*TraceHub, error) { - // 初始化tracehub结构体 - h := &TraceHub{ - c: nil, - cfg: cfg, - redis: redisCli, - ticker: time.NewTicker(5 * time.Minute), // 每x分钟执行一次定时任务 - stopChan: make(chan struct{}), +const TagKeyResult = "tag_key" + +func (h *TraceHubServiceImpl) handleMessage(ctx context.Context, rawSpan *entity.RawSpan) error { + var tags []metrics.T + // 1、转换成标准span,并根据space_id初步过滤 + span := rawSpan.RawSpanConvertToLoopSpan() + logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) + spaceList, _ := h.taskRepo.GetObjListWithTask(ctx) + if !gslice.Contains(spaceList, span.WorkspaceID) { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) + logs.CtxInfo(ctx, "no space found for span, %s", logSuffix) + return nil + } + // 2、读redis,获取rule信息,进行匹配,查询订阅者 + subs, err := h.getSubscriberOfSpan(ctx, span) + if err != nil { // 继续执行,不阻塞。 + logs.CtxWarn(ctx, "get subscriber of flow span failed, %s, err: %v", logSuffix, err) + } + + logs.CtxInfo(ctx, "%d subscriber of flow span found, %s", len(subs), logSuffix) + if len(subs) == 0 { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_subscriber"}) + return nil + } + // 3、采样 + subs = gslice.Filter(subs, func(sub *spanSubscriber) bool { return sub.Sampled() }) + logs.CtxInfo(ctx, "%d subscriber of flow span sampled, %s", len(subs), logSuffix) + if len(subs) == 0 { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "sampler_not_hit"}) + return nil + } + // 3. 分发预处理 + err = h.preDispatch(ctx, span, subs) + if err != nil { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "preDispatch_failed"}) + logs.CtxWarn(ctx, "preDispatch flow span failed, %s, err: %v", logSuffix, err) + //return err + } + logs.CtxInfo(ctx, "%d preDispatch success, %v", len(subs), subs) + // 4、按条件分发 + if err = h.dispatch(ctx, span, subs); err != nil { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "dispatch_failed"}) + logs.CtxWarn(ctx, "dispatch flow span failed, %s, err: %v", logSuffix, err) + return err + } + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "dispatched"}) + return nil +} + +func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loop_span.Span) ([]*spanSubscriber, error) { + logs.CtxInfo(ctx, "getSubscriberOfSpan start") + var subscribers []*spanSubscriber + // 获取该空间非终态任务列表 + tasksPOList := h.taskRepo.ListNonFinalTaskBySpaceID(ctx, span.WorkspaceID) + if len(tasksPOList) == 0 { + logs.CtxWarn(ctx, "no subscriber found for span, trace_id=%s, span_id=%s", span.TraceID, span.SpanID) + return nil, nil + } + taskList := tconv.TaskPOs2DOs(ctx, tasksPOList, nil) + for _, taskDO := range taskList { + proc, err := processor.NewProcessor(ctx, taskDO.TaskType) + if err != nil { + return nil, err + } + subscribers = append(subscribers, &spanSubscriber{ + taskID: taskDO.GetID(), + RWMutex: sync.RWMutex{}, + t: taskDO, + processor: proc, + bufCap: 0, + flushWait: sync.WaitGroup{}, + maxFlushInterval: time.Second * 5, + }) + } + + var ( + merr = &multierror.Error{} + keep int + ) + // 按照详细的filter规则匹配数据 + for _, s := range subscribers { + ok, err := s.Match(ctx, span) + if err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "match span,task_id=%d, trace_id=%s, span_id=%s", s.taskID, span.TraceID, span.SpanID)) + continue + } + if ok { + subscribers[keep] = s + keep++ + } + } + return subscribers[:keep], merr.ErrorOrNil() +} + +func (h *TraceHubServiceImpl) dispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { + merr := &multierror.Error{} + for _, sub := range subs { + if sub.t.GetTaskStatus() == task.TaskStatusSuccess { + continue + } + logs.CtxInfo(ctx, " sub.AddSpan: %v", sub) + if err := sub.AddSpan(ctx, span); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "add span to subscriber, task_id=%d", sub.taskID)) + continue + } + logs.CtxInfo(ctx, "add span to subscriber, task_id=%d, log_id=%s, trace_id=%s, span_id=%s", sub.taskID, + span.LogID, span.TraceID, span.SpanID) + } + logs.CtxError(ctx, "dispatch error:%v", merr.ErrorOrNil()) + return merr.ErrorOrNil() +} +func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { + merr := &multierror.Error{} + var needDispatchSubs []*spanSubscriber + for _, sub := range subs { + if Usec2Msec(span.StartTime) < sub.t.GetRule().GetEffectiveTime().GetStartAt() { + logs.CtxWarn(ctx, "span start time is before task cycle start time, trace_id=%s, span_id=%s", span.TraceID, span.SpanID) + continue + } + // 第一步task状态变更的锁 + // taskrun的状态 + if sub.t.GetTaskStatus() == task.TaskStatusUnstarted { + logs.CtxWarn(ctx, "task is unstarted, need sub.Creative") + if err := sub.Creative(ctx); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "task is unstarted, need sub.Creative,creative processor, task_id=%d", sub.taskID)) + needDispatchSubs = append(needDispatchSubs, sub) + continue + } + } + //获取对应的taskconfig + taskConfig, _ := h.taskRepo.GetTask(ctx, sub.taskID, nil, nil) + if taskConfig == nil { + logs.CtxWarn(ctx, "task config not found, task_id=%d", sub.taskID) + } + var taskRunConfig *entity.TaskRun + if taskConfig != nil { + var latestStartAt int64 + for _, run := range taskConfig.TaskRuns { + if run.RunStartAt.UnixMilli() > latestStartAt { + latestStartAt = run.RunStartAt.UnixMilli() + taskRunConfig = run + } + } + } + if taskRunConfig == nil { + continue + } + sampler := sub.t.GetRule().GetSampler() + //获取对应的taskcount和subtaskcount + taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) + taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, taskRunConfig.ID) + + if taskRunConfig == nil { + logs.CtxWarn(ctx, "task run config not found, task_id=%d", sub.taskID) + if err := sub.Creative(ctx); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "task run config not found,creative processor, task_id=%d", sub.taskID)) + needDispatchSubs = append(needDispatchSubs, sub) + continue + } + } + endTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()) + // 达到任务时间期限 + if time.Now().After(endTime) { + if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) + continue + } + } + if sampler.GetIsCycle() { + cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()) + // 达到单次任务时间期限 + if time.Now().After(cycleEndTime) { + logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") + if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: false}); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(cycleEndTime) Finish processor, task_id=%d", sub.taskID)) + } + if err := sub.Creative(ctx); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(cycleEndTime) creative processor, task_id=%d", sub.taskID)) + needDispatchSubs = append(needDispatchSubs, sub) + continue + } + } + // 达到单次任务上限 + if taskRunCount+1 > sampler.GetCycleCount() { + if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: false}); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "subTaskCount > sampler.GetCycleCount()+1 Finish processor, task_id=%d", sub.taskID)) + continue + } + } + } + + // 达到任务上限 + if taskCount+1 > sampler.GetSampleSize() { + if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID)) + continue + } + } } - // 定时任务处理? - return h, nil + subs = needDispatchSubs + return merr.ErrorOrNil() } -func (h *TraceHub) Start(ctx context.Context, handler entity.RawSpan) error { - // 启动定时任务 +// startScheduledTask 启动定时任务goroutine +func (h *TraceHubServiceImpl) startScheduledTask() { go func() { for { select { @@ -76,63 +278,56 @@ func (h *TraceHub) Start(ctx context.Context, handler entity.RawSpan) error { } } }() +} + +func (h *TraceHubServiceImpl) Start(ctx context.Context, handler entity.RawSpan) error { // 启动消费trace数据 return nil } -func (h *TraceHub) runScheduledTask() { +func (h *TraceHubServiceImpl) runScheduledTask() { ctx := context.Background() - // 执行定时任务 - for { - select { - case <-h.ticker.C: - logs.CtxInfo(ctx, "定时任务开始执行...") - // 读取所有非终态(成功/禁用)任务 - taskPOs, err := h.TaskRepo.ListNonFinalTask(ctx) + logs.CtxInfo(ctx, "定时任务开始执行...") + // 读取所有非终态(成功/禁用)任务 + taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) + if err != nil { + logs.CtxError(ctx, "ListNonFinalTask err:%v", err) + return + } + tasks := tconv.TaskPOs2DOs(ctx, taskPOs, nil) + // 遍历任务 + for _, taskInfo := range tasks { + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) + + endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) + startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()*int64(time.Millisecond)) + proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) + if err != nil { + logs.CtxError(ctx, "NewProcessor err:%v", err) + continue + } + // 达到任务时间期限 + // 到任务结束时间就结束 + if time.Now().After(endTime) { + updateMap := map[string]interface{}{ + "task_status": task.TaskStatusSuccess, + } + err = h.taskRepo.UpdateTaskWithOCC(ctx, taskInfo.GetID(), taskInfo.GetWorkspaceID(), updateMap) if err != nil { - logs.CtxError(ctx, "ListNonFinalTask err:%v", err) + logs.CtxError(ctx, "[task-debug] UpdateTask err:%v", err) continue } - tasks := tconv.TaskPOs2DOs(ctx, taskPOs, nil) - // 遍历任务 - for _, taskInfo := range tasks { - logID := logs.NewLogID() - ctx = logs.SetLogID(ctx, logID) - - endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) - startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()*int64(time.Millisecond)) - proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) - if err != nil { - logs.CtxError(ctx, "NewProcessor err:%v", err) - continue - } - // 达到任务时间期限 - // 到任务结束时间就结束 - if time.Now().After(endTime) { - updateMap := map[string]interface{}{ - "task_status": task.TaskStatusSuccess, - } - err = h.TaskRepo.UpdateTaskWithOCC(ctx, taskInfo.GetID(), taskInfo.GetWorkspaceID(), updateMap) - if err != nil { - logs.CtxError(ctx, "[task-debug] UpdateTask err:%v", err) - continue - } - } - // 如果任务状态为unstarted,到任务开始时间就开始create - if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { - err = proc.OnChangeProcessor(ctx, taskInfo, task.TaskStatusUnstarted) - if err != nil { - logs.CtxError(ctx, "OnChangeProcessor err:%v", err) - continue - } - } + } + // 如果任务状态为unstarted,到任务开始时间就开始create + if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { + err = proc.OnChangeProcessor(ctx, taskInfo, task.TaskStatusUnstarted) + if err != nil { + logs.CtxError(ctx, "OnChangeProcessor err:%v", err) + continue } - case <-h.stopChan: - h.ticker.Stop() - logs.CtxInfo(ctx, "定时任务已停止") - return } } } -func (h *TraceHub) Stop() { - // 停止定时任务 -} +func (h *TraceHubServiceImpl) Close() { + close(h.stopChan) +} \ No newline at end of file diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/taskexe/tracehub/utils.go index 02558b881..ed2928e1d 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/utils.go @@ -2,3 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 package tracehub + +import "time" + +// Usec2Msec 微秒转毫秒 +func Usec2Msec(usec int64) int64 { + d := time.Duration(usec) * time.Microsecond + return int64(d / time.Millisecond) +} diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index 8d0cb567e..19b15e644 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -12,8 +12,9 @@ import ( ) type Trigger struct { - Task *task.Task - Span *loop_span.Span + Task *task.Task + Span *loop_span.Span + IsFinish bool } var ( diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 8404b2fc0..5762a9169 100644 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -45,9 +45,11 @@ type ITaskDAO interface { SetNonFinalTaskList(ctx context.Context, tasks []*entity.ObservabilityTask, ttl time.Duration) error DeleteNonFinalTaskList(ctx context.Context) error - GetTaskCount(ctx context.Context, workspaceID int64) (int64, error) - SetTaskCount(ctx context.Context, workspaceID int64, count int64, ttl time.Duration) error - DeleteTaskCount(ctx context.Context, workspaceID int64) error + GetTaskCount(ctx context.Context, taskID int64) (int64, error) + SetTaskCount(ctx context.Context, taskID int64, count int64, ttl time.Duration) error + DeleteTaskCount(ctx context.Context, taskID int64) error + + GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) } type TaskDAOImpl struct { @@ -87,8 +89,11 @@ func (q *TaskDAOImpl) makeNonFinalTaskListKey() string { return "task:list:non_final" } -func (q *TaskDAOImpl) makeTaskCountCacheKey(workspaceID int64) string { - return fmt.Sprintf("task:count:%d", workspaceID) +func (q *TaskDAOImpl) makeTaskCountCacheKey(taskID int64) string { + return fmt.Sprintf("count_%d", taskID) +} +func (q *TaskDAOImpl) makeTaskRunCountCacheKey(taskID, taskRunID int64) string { + return fmt.Sprintf("count_%d_%d", taskID, taskRunID) } // generateFilterHash 生成过滤条件的 hash @@ -316,8 +321,8 @@ func (p *TaskDAOImpl) DeleteNonFinalTaskList(ctx context.Context) error { } // GetTaskCount 获取任务计数缓存 -func (p *TaskDAOImpl) GetTaskCount(ctx context.Context, workspaceID int64) (int64, error) { - key := p.makeTaskCountCacheKey(workspaceID) +func (p *TaskDAOImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, error) { + key := p.makeTaskCountCacheKey(taskID) got, err := p.cmdable.Get(ctx, key).Int64() if err != nil { if redis.IsNilError(err) { @@ -347,3 +352,16 @@ func (p *TaskDAOImpl) DeleteTaskCount(ctx context.Context, workspaceID int64) er } return nil } + +// GetTaskCount 获取任务计数缓存 +func (p *TaskDAOImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { + key := p.makeTaskRunCountCacheKey(taskID, taskRunID) + got, err := p.cmdable.Get(ctx, key).Int64() + if err != nil { + if redis.IsNilError(err) { + return -1, nil // 缓存未命中,返回-1表示未缓存 + } + return 0, errorx.Wrapf(err, "redis get task count fail, key: %v", key) + } + return got, nil +} diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 7f52ce60c..f14aa3ef8 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -185,6 +185,9 @@ func (v *TaskRepoImpl) ListNonFinalTask(ctx context.Context) ([]*entity.Observab return resp, nil } +func (v *TaskRepoImpl) ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask { + return nil +} func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { // 先执行数据库操作 err := v.TaskDao.UpdateTaskWithOCC(ctx, id, workspaceID, updateMap) @@ -242,3 +245,30 @@ func (v *TaskRepoImpl) generateFilterHash(param mysql.ListTaskParam) string { // 生成简单的 hash(在实际生产环境中可能需要更复杂的 hash 算法) return fmt.Sprintf("%x", len(filterStr)) } + +func (v *TaskRepoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string) { + // 先查 Redis 缓存 + var spaceList, botList []string + return spaceList, botList +} + +func (v *TaskRepoImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, error) { + // 先查 Redis 缓存 + count, err := v.TaskRedisDao.GetTaskCount(ctx, taskID) + if err != nil { + logs.CtxWarn(ctx, "failed to get task count from redis cache", "taskID", taskID, "err", err) + } else if count != 0 { + return count, nil + } + return count, nil +} +func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { + // 先查 Redis 缓存 + count, err := v.TaskRedisDao.GetTaskRunCount(ctx, taskID, taskRunID) + if err != nil { + logs.CtxWarn(ctx, "failed to get task run count from redis cache", "taskID", taskID, "err", err) + } else if count != 0 { + return count, nil + } + return count, nil +} From 9bf18db53a3635e51630e1b3e74cb4902956edd3 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 16:30:35 +0800 Subject: [PATCH 077/462] feat:add trace_hub --- .../application/convertor/task/task.go | 13 +------------ backend/modules/observability/application/task.go | 1 - .../domain/task/taskexe/tracehub/trace_hub.go | 13 ++++--------- 3 files changed, 5 insertions(+), 22 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 5a08befa8..4058a536b 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -49,7 +49,6 @@ func TaskPO2DTO(ctx context.Context, v *entity.ObservabilityTask, userMap map[st TaskStatus: ptr.Of(v.TaskStatus), Rule: RulePO2DO(ctx, v.SpanFilter, v.EffectiveTime, v.Sampler), TaskConfig: TaskConfigPO2DO(ctx, v.TaskConfig), - TaskDetail: TaskDetailsPO2DO(ctx, v.TaskDetail), BaseInfo: &common.BaseInfo{ CreatedAt: gptr.Of(v.CreatedAt.UnixMilli()), UpdatedAt: gptr.Of(v.UpdatedAt.UnixMilli()), @@ -76,17 +75,7 @@ func UserInfoPO2DO(userInfo *entity_common.UserInfo, userID string) *common.User Email: ptr.Of(userInfo.Email), } } -func TaskDetailsPO2DO(ctx context.Context, taskDetails *string) *task.TaskDetail { - if taskDetails == nil { - return nil - } - var taskDetailsDO *task.TaskDetail - if err := sonic.Unmarshal([]byte(*taskDetails), &taskDetailsDO); err != nil { - logs.CtxError(ctx, "TaskDetailsPO2DO sonic.Unmarshal err:%v", err) - return nil - } - return taskDetailsDO -} + func RulePO2DO(ctx context.Context, spanFilter, effectiveTime, sampler *string) *task.Rule { var spanFilterDO *filter.SpanFilterFields if spanFilter != nil { diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 19ed8e685..0cf069994 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -23,7 +23,6 @@ type ITaskQueueConsumer interface { } type ITaskApplication interface { task.TaskService - //ITaskQueueConsumer } func NewTaskApplication( diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 2b88c500b..336eebd32 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -39,10 +39,10 @@ func NewTraceHubImpl( ticker: ticker, stopChan: make(chan struct{}), } - + // 立即启动定时任务 impl.startScheduledTask() - + return impl, nil } @@ -55,14 +55,9 @@ type TraceHubServiceImpl struct { taskRepo repo.ITaskRepo } -func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawSpan) error { - - return nil -} - const TagKeyResult = "tag_key" -func (h *TraceHubServiceImpl) handleMessage(ctx context.Context, rawSpan *entity.RawSpan) error { +func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawSpan) error { var tags []metrics.T // 1、转换成标准span,并根据space_id初步过滤 span := rawSpan.RawSpanConvertToLoopSpan() @@ -330,4 +325,4 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } func (h *TraceHubServiceImpl) Close() { close(h.stopChan) -} \ No newline at end of file +} From b2e9c732c4a0e9c880680ce6e255c18585ada236 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 17:18:40 +0800 Subject: [PATCH 078/462] feat:gen wire --- backend/cmd/consumer.go | 3 +- backend/cmd/main.go | 2 +- .../modules/observability/application/task.go | 1 + .../modules/observability/application/wire.go | 8 +++++ .../observability/application/wire_gen.go | 32 +++++++++++++------ .../domain/task/taskexe/tracehub/trace_hub.go | 4 --- .../infra/mq/consumer/consumer.go | 2 ++ .../infra/rpc/evaluation/evaluation.go | 2 +- 8 files changed, 38 insertions(+), 16 deletions(-) diff --git a/backend/cmd/consumer.go b/backend/cmd/consumer.go index b387f6572..e807c8ee0 100644 --- a/backend/cmd/consumer.go +++ b/backend/cmd/consumer.go @@ -19,6 +19,7 @@ func mustInitConsumerWorkers( experimentApplication exptapp.IExperimentApplication, datasetApplication dataapp.IJobRunMsgHandler, obApplication obapp.IObservabilityOpenAPIApplication, + taskApplication obapp.ITaskApplication, ) []mq.IConsumerWorker { var res []mq.IConsumerWorker @@ -38,7 +39,7 @@ func mustInitConsumerWorkers( if err != nil { panic(err) } - workers, err = obconsumer.NewConsumerWorkers(loader, obApplication) + workers, err = obconsumer.NewConsumerWorkers(loader, obApplication, taskApplication) if err != nil { panic(err) } diff --git a/backend/cmd/main.go b/backend/cmd/main.go index 6b2498411..8ddb74de3 100644 --- a/backend/cmd/main.go +++ b/backend/cmd/main.go @@ -61,7 +61,7 @@ func main() { panic(err) } - if err := registry.NewConsumerRegistry(c.mqFactory).Register(mustInitConsumerWorkers(c.cfgFactory, handler, handler, handler)).StartAll(ctx); err != nil { + if err := registry.NewConsumerRegistry(c.mqFactory).Register(mustInitConsumerWorkers(c.cfgFactory, handler, handler, handler, handler)).StartAll(ctx); err != nil { panic(err) } diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 0cf069994..62b009852 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -23,6 +23,7 @@ type ITaskQueueConsumer interface { } type ITaskApplication interface { task.TaskService + ITaskQueueConsumer } func NewTaskApplication( diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 216d8ee96..a8971a858 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -14,6 +14,7 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/limiter" "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/infra/mq" + "github.com/coze-dev/coze-loop/backend/infra/redis" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/dataset/datasetservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/tag/tagservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluationsetservice" @@ -25,6 +26,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" taskSvc "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/tracehub" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/exporter" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/processor" @@ -42,6 +44,7 @@ import ( obrepo "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo" ckdao "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/ck" mysqldao "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" + tredis "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/dao" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/auth" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/dataset" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/evaluation" @@ -59,8 +62,10 @@ import ( var ( taskDomainSet = wire.NewSet( taskSvc.NewTaskServiceImpl, + tracehub.NewTraceHubImpl, obrepo.NewTaskRepoImpl, mysqldao.NewTaskDaoImpl, + tredis.NewTaskDAO, mysqldao.NewTaskRunDaoImpl, ) traceDomainSet = wire.NewSet( @@ -190,6 +195,7 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase func InitTraceApplication( db db.Provider, ckDb ck.Provider, + redis redis.Cmdable, meter metrics.Meter, mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, @@ -217,6 +223,7 @@ func InitOpenAPIApplication( authClient authservice.Client, meter metrics.Meter, db db.Provider, + redis redis.Cmdable, idgen idgen.IIDGenerator, evalService evaluatorservice.Client, ) (IObservabilityOpenAPIApplication, error) { @@ -235,6 +242,7 @@ func InitTraceIngestionApplication( func InitTaskApplication( db db.Provider, idgen idgen.IIDGenerator, + redis redis.Cmdable, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 23e946a04..28c067c59 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -14,16 +14,19 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/limiter" "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/infra/mq" + "github.com/coze-dev/coze-loop/backend/infra/redis" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/dataset/datasetservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/tag/tagservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluationsetservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluatorservice" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/experimentservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/auth/authservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/file/fileservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/user/userservice" config2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" service2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/tracehub" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/exporter" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/processor" @@ -41,8 +44,10 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo" ck2 "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/ck" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/dao" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/auth" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/dataset" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/evaluation" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/evaluationset" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/evaluator" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/rpc/file" @@ -56,7 +61,7 @@ import ( // Injectors from wire.go: -func InitTraceApplication(db2 db.Provider, ckDb ck.Provider, meter metrics.Meter, mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, idgen2 idgen.IIDGenerator, fileClient fileservice.Client, benefit2 benefit.IBenefitService, authClient authservice.Client, userClient userservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, tagService tagservice.Client, datasetService datasetservice.Client) (ITraceApplication, error) { +func InitTraceApplication(db2 db.Provider, ckDb ck.Provider, redis2 redis.Cmdable, meter metrics.Meter, mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, idgen2 idgen.IIDGenerator, fileClient fileservice.Client, benefit2 benefit.IBenefitService, authClient authservice.Client, userClient userservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, tagService tagservice.Client, datasetService datasetservice.Client) (ITraceApplication, error) { iSpansDao, err := ck2.NewSpansCkDaoImpl(ckDb) if err != nil { return nil, err @@ -88,7 +93,8 @@ func InitTraceApplication(db2 db.Provider, ckDb ck.Provider, meter metrics.Meter iTenantProvider := tenant.NewTenantProvider(iTraceConfig) iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iTaskDao := mysql.NewTaskDaoImpl(db2) - iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2) + iTaskDAO := dao.NewTaskDAO(redis2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO) iTraceService, err := service.NewTraceServiceImpl(iTraceRepo, iTraceConfig, iTraceProducer, iAnnotationProducer, iTraceMetrics, traceFilterProcessorBuilder, iTenantProvider, iEvaluatorRPCAdapter, iTaskRepo) if err != nil { return nil, err @@ -110,7 +116,7 @@ func InitTraceApplication(db2 db.Provider, ckDb ck.Provider, meter metrics.Meter return iTraceApplication, nil } -func InitOpenAPIApplication(mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, fileClient fileservice.Client, ckDb ck.Provider, benefit2 benefit.IBenefitService, limiterFactory limiter.IRateLimiterFactory, authClient authservice.Client, meter metrics.Meter, db2 db.Provider, idgen2 idgen.IIDGenerator, evalService evaluatorservice.Client) (IObservabilityOpenAPIApplication, error) { +func InitOpenAPIApplication(mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, fileClient fileservice.Client, ckDb ck.Provider, benefit2 benefit.IBenefitService, limiterFactory limiter.IRateLimiterFactory, authClient authservice.Client, meter metrics.Meter, db2 db.Provider, redis2 redis.Cmdable, idgen2 idgen.IIDGenerator, evalService evaluatorservice.Client) (IObservabilityOpenAPIApplication, error) { iSpansDao, err := ck2.NewSpansCkDaoImpl(ckDb) if err != nil { return nil, err @@ -142,7 +148,8 @@ func InitOpenAPIApplication(mqFactory mq.IFactory, configFactory conf.IConfigLoa iTenantProvider := tenant.NewTenantProvider(iTraceConfig) iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iTaskDao := mysql.NewTaskDaoImpl(db2) - iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2) + iTaskDAO := dao.NewTaskDAO(redis2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO) iTraceService, err := service.NewTraceServiceImpl(iTraceRepo, iTraceConfig, iTraceProducer, iAnnotationProducer, iTraceMetrics, traceFilterProcessorBuilder, iTenantProvider, iEvaluatorRPCAdapter, iTaskRepo) if err != nil { return nil, err @@ -183,9 +190,10 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb return iTraceIngestionApplication, nil } -func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client) (ITaskApplication, error) { +func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, redis2 redis.Cmdable, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client) (ITaskApplication, error) { iTaskDao := mysql.NewTaskDaoImpl(db2) - iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2) + iTaskDAO := dao.NewTaskDAO(redis2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO) iUserProvider := user.NewUserRPCProvider(userClient) iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iUserProvider, idgen2) if err != nil { @@ -193,7 +201,12 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, userClient } iAuthProvider := auth.NewAuthProvider(authClient) iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) - iTaskApplication, err := NewTaskApplication(iTaskService, iAuthProvider, iEvaluatorRPCAdapter, iUserProvider) + iEvaluationRPCAdapter := evaluation.NewEvaluationRPCProvider(exptService) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo) + if err != nil { + return nil, err + } + iTaskApplication, err := NewTaskApplication(iTaskService, iAuthProvider, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iUserProvider, iTraceHubService) if err != nil { return nil, err } @@ -203,7 +216,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, userClient // wire.go: var ( - taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, mysql.NewTaskRunDaoImpl) + taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, tracehub.NewTraceHubImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, mysql.NewTaskRunDaoImpl) traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, NewDatasetServiceAdapter, evaluator.NewEvaluatorRPCProvider, taskDomainSet, ) @@ -218,7 +231,8 @@ var ( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) taskSet = wire.NewSet( - NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, taskDomainSet, + NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, NewDatasetServiceAdapter, + taskDomainSet, ) ) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 336eebd32..d0d6f987f 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -275,10 +275,6 @@ func (h *TraceHubServiceImpl) startScheduledTask() { }() } -func (h *TraceHubServiceImpl) Start(ctx context.Context, handler entity.RawSpan) error { - // 启动消费trace数据 - return nil -} func (h *TraceHubServiceImpl) runScheduledTask() { ctx := context.Background() logs.CtxInfo(ctx, "定时任务开始执行...") diff --git a/backend/modules/observability/infra/mq/consumer/consumer.go b/backend/modules/observability/infra/mq/consumer/consumer.go index 733fbf545..039f72859 100644 --- a/backend/modules/observability/infra/mq/consumer/consumer.go +++ b/backend/modules/observability/infra/mq/consumer/consumer.go @@ -12,8 +12,10 @@ import ( func NewConsumerWorkers( loader conf.IConfigLoader, handler application.IAnnotationQueueConsumer, + taskConsumer application.ITaskQueueConsumer, ) ([]mq.IConsumerWorker, error) { return []mq.IConsumerWorker{ newAnnotationConsumer(handler, loader), + newTaskConsumer(taskConsumer, loader), }, nil } diff --git a/backend/modules/observability/infra/rpc/evaluation/evaluation.go b/backend/modules/observability/infra/rpc/evaluation/evaluation.go index 26a74f9e6..583070d67 100644 --- a/backend/modules/observability/infra/rpc/evaluation/evaluation.go +++ b/backend/modules/observability/infra/rpc/evaluation/evaluation.go @@ -19,7 +19,7 @@ type EvaluationProvider struct { client experimentservice.Client } -func NewEvaluationRPCProvider(client experimentservice.Client) *EvaluationProvider { +func NewEvaluationRPCProvider(client experimentservice.Client) rpc.IEvaluationRPCAdapter { return &EvaluationProvider{client: client} } From 4f9a6960b9c2a2ee5edd79e742b757fd5e006294 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 18:08:17 +0800 Subject: [PATCH 079/462] feat:gen wire --- backend/api/handler/coze/loop/apis/wire.go | 3 +++ backend/api/handler/coze/loop/apis/wire_gen.go | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/backend/api/handler/coze/loop/apis/wire.go b/backend/api/handler/coze/loop/apis/wire.go index 5847aa8f6..dc1e02760 100644 --- a/backend/api/handler/coze/loop/apis/wire.go +++ b/backend/api/handler/coze/loop/apis/wire.go @@ -10,6 +10,7 @@ import ( "context" "github.com/cloudwego/kitex/pkg/endpoint" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/experimentservice" "github.com/google/wire" "github.com/coze-dev/coze-loop/backend/infra/ck" @@ -208,6 +209,8 @@ func InitObservabilityHandler( tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, datasetClient datasetservice.Client, + redis redis.Cmdable, + experimentClient experimentservice.Client, ) (*ObservabilityHandler, error) { wire.Build( observabilitySet, diff --git a/backend/api/handler/coze/loop/apis/wire_gen.go b/backend/api/handler/coze/loop/apis/wire_gen.go index 5d2f05bec..24f923b37 100644 --- a/backend/api/handler/coze/loop/apis/wire_gen.go +++ b/backend/api/handler/coze/loop/apis/wire_gen.go @@ -8,7 +8,6 @@ package apis import ( "context" - "github.com/cloudwego/kitex/pkg/endpoint" "github.com/coze-dev/coze-loop/backend/infra/ck" "github.com/coze-dev/coze-loop/backend/infra/db" @@ -25,6 +24,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/tag/tagservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluationsetservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluatorservice" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/experimentservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/auth/authservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/file/fileservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/user/userservice" @@ -149,8 +149,8 @@ func InitDataHandler(ctx context.Context, idgen2 idgen.IIDGenerator, db2 db.Prov return dataHandler, nil } -func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Provider, meter metrics.Meter, mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, idgen2 idgen.IIDGenerator, benefit2 benefit.IBenefitService, fileClient fileservice.Client, authCli authservice.Client, userClient userservice.Client, evalClient evaluatorservice.Client, evalSetClient evaluationsetservice.Client, tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, datasetClient datasetservice.Client) (*ObservabilityHandler, error) { - iTraceApplication, err := application6.InitTraceApplication(db2, ckDb, meter, mqFactory, configFactory, idgen2, fileClient, benefit2, authCli, userClient, evalClient, evalSetClient, tagClient, datasetClient) +func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Provider, meter metrics.Meter, mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, idgen2 idgen.IIDGenerator, benefit2 benefit.IBenefitService, fileClient fileservice.Client, authCli authservice.Client, userClient userservice.Client, evalClient evaluatorservice.Client, evalSetClient evaluationsetservice.Client, tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, datasetClient datasetservice.Client, redis2 redis.Cmdable, experimentClient experimentservice.Client) (*ObservabilityHandler, error) { + iTraceApplication, err := application6.InitTraceApplication(db2, ckDb, redis2, meter, mqFactory, configFactory, idgen2, fileClient, benefit2, authCli, userClient, evalClient, evalSetClient, tagClient, datasetClient) if err != nil { return nil, err } @@ -158,11 +158,11 @@ func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Prov if err != nil { return nil, err } - iObservabilityOpenAPIApplication, err := application6.InitOpenAPIApplication(mqFactory, configFactory, fileClient, ckDb, benefit2, limiterFactory, authCli, meter, db2, idgen2, evalClient) + iObservabilityOpenAPIApplication, err := application6.InitOpenAPIApplication(mqFactory, configFactory, fileClient, ckDb, benefit2, limiterFactory, authCli, meter, db2, redis2, idgen2, evalClient) if err != nil { return nil, err } - iTaskApplication, err := application6.InitTaskApplication(db2, idgen2, userClient, authCli, evalClient) + iTaskApplication, err := application6.InitTaskApplication(db2, idgen2, redis2, userClient, authCli, evalClient, evalSetClient, experimentClient) if err != nil { return nil, err } From 1485a9cc7d9ef4e1f7ad825de4cb34318b9a4388 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 20:19:52 +0800 Subject: [PATCH 080/462] =?UTF-8?q?feat:=E6=9A=82=E4=B8=8D=E9=89=B4?= =?UTF-8?q?=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/observability/application/task.go | 53 +++++++++---------- .../observability/application/trace.go | 20 +++---- 2 files changed, 36 insertions(+), 37 deletions(-) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 62b009852..f02eae92c 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -5,7 +5,6 @@ package application import ( "context" - "strconv" "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" @@ -60,11 +59,11 @@ func (t *TaskApplication) CheckTaskName(ctx context.Context, req *task.CheckTask } else if req.GetWorkspaceID() <= 0 { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } - if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskList, - strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - return nil, err - } + //if err := t.authSvc.CheckWorkspacePermission(ctx, + // rpc.AuthActionTraceTaskList, + // strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + // return nil, err + //} sResp, err := t.taskSvc.CheckTaskName(ctx, &service.CheckTaskNameReq{ WorkspaceID: req.GetWorkspaceID(), Name: req.GetName(), @@ -81,11 +80,11 @@ func (t *TaskApplication) CreateTask(ctx context.Context, req *task.CreateTaskRe if err := t.validateCreateTaskReq(ctx, req); err != nil { return resp, err } - if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskCreate, - strconv.FormatInt(req.GetTask().GetWorkspaceID(), 10)); err != nil { - return resp, err - } + //if err := t.authSvc.CheckWorkspacePermission(ctx, + // rpc.AuthActionTraceTaskCreate, + // strconv.FormatInt(req.GetTask().GetWorkspaceID(), 10)); err != nil { + // return resp, err + //} sResp, err := t.taskSvc.CreateTask(ctx, &service.CreateTaskReq{Task: req.GetTask()}) if err != nil { return resp, err @@ -142,12 +141,12 @@ func (t *TaskApplication) UpdateTask(ctx context.Context, req *task.UpdateTaskRe } else if req.GetWorkspaceID() <= 0 { return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } - if err := t.authSvc.CheckTaskPermission(ctx, - rpc.AuthActionTraceTaskEdit, - strconv.FormatInt(req.GetWorkspaceID(), 10), - strconv.FormatInt(req.GetTaskID(), 10)); err != nil { - return nil, err - } + //if err := t.authSvc.CheckTaskPermission(ctx, + // rpc.AuthActionTraceTaskEdit, + // strconv.FormatInt(req.GetWorkspaceID(), 10), + // strconv.FormatInt(req.GetTaskID(), 10)); err != nil { + // return nil, err + //} err := t.taskSvc.UpdateTask(ctx, &service.UpdateTaskReq{ TaskID: req.GetTaskID(), WorkspaceID: req.GetWorkspaceID(), @@ -169,11 +168,11 @@ func (t *TaskApplication) ListTasks(ctx context.Context, req *task.ListTasksRequ } else if req.GetWorkspaceID() <= 0 { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } - if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskList, - strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - return resp, err - } + //if err := t.authSvc.CheckWorkspacePermission(ctx, + // rpc.AuthActionTraceTaskList, + // strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + // return resp, err + //} sResp, err := t.taskSvc.ListTasks(ctx, &service.ListTasksReq{ WorkspaceID: req.GetWorkspaceID(), TaskFilters: req.GetTaskFilters(), @@ -195,11 +194,11 @@ func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) } else if req.GetWorkspaceID() <= 0 { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } - if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskList, - strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - return resp, err - } + //if err := t.authSvc.CheckWorkspacePermission(ctx, + // rpc.AuthActionTraceTaskList, + // strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + // return resp, err + //} sResp, err := t.taskSvc.GetTask(ctx, &service.GetTaskReq{ TaskID: req.GetTaskID(), WorkspaceID: req.GetWorkspaceID(), diff --git a/backend/modules/observability/application/trace.go b/backend/modules/observability/application/trace.go index 4eb8ba079..656a7e811 100644 --- a/backend/modules/observability/application/trace.go +++ b/backend/modules/observability/application/trace.go @@ -832,11 +832,11 @@ func (t *TraceApplication) ChangeEvaluatorScore(ctx context.Context, req *trace. if err := t.validateChangeEvaluatorScoreReq(ctx, req); err != nil { return nil, err } - if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskCreate, - strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - return nil, err - } + //if err := t.authSvc.CheckWorkspacePermission(ctx, + // rpc.AuthActionTraceTaskCreate, + // strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + // return nil, err + //} sResp, err := t.traceService.ChangeEvaluatorScore(ctx, &service.ChangeEvaluatorScoreRequest{ WorkspaceID: req.WorkspaceID, @@ -876,11 +876,11 @@ func (t *TraceApplication) ListAnnotationEvaluators(ctx context.Context, req *tr } else if req.GetWorkspaceID() <= 0 { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } - if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskList, - strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - return resp, err - } + //if err := t.authSvc.CheckWorkspacePermission(ctx, + // rpc.AuthActionTraceTaskList, + // strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + // return resp, err + //} sResp, err := t.traceService.ListAnnotationEvaluators(ctx, &service.ListAnnotationEvaluatorsRequest{ WorkspaceID: req.WorkspaceID, Name: req.Name, From 3ca963216c83a1fb372150ccea6c2c5a758d8136 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 20:24:01 +0800 Subject: [PATCH 081/462] feat:fix panic --- .../modules/observability/application/task.go | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index f02eae92c..585dff858 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -71,9 +71,10 @@ func (t *TaskApplication) CheckTaskName(ctx context.Context, req *task.CheckTask if err != nil { return resp, err } - resp.Pass = sResp.Pass - return resp, nil + return &task.CheckTaskNameResponse{ + Pass: sResp.Pass, + }, nil } func (t *TaskApplication) CreateTask(ctx context.Context, req *task.CreateTaskRequest) (*task.CreateTaskResponse, error) { resp := task.NewCreateTaskResponse() @@ -89,9 +90,8 @@ func (t *TaskApplication) CreateTask(ctx context.Context, req *task.CreateTaskRe if err != nil { return resp, err } - resp.TaskID = sResp.TaskID - return resp, nil + return &task.CreateTaskResponse{TaskID: sResp.TaskID}, nil } func (t *TaskApplication) validateCreateTaskReq(ctx context.Context, req *task.CreateTaskRequest) error { @@ -183,9 +183,10 @@ func (t *TaskApplication) ListTasks(ctx context.Context, req *task.ListTasksRequ if err != nil { return resp, err } - resp.Tasks = sResp.Tasks - resp.Total = sResp.Total - return resp, nil + return &task.ListTasksResponse{ + Tasks: sResp.Tasks, + Total: sResp.Total, + }, nil } func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) (*task.GetTaskResponse, error) { resp := task.NewGetTaskResponse() @@ -206,9 +207,10 @@ func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) if err != nil { return resp, err } - resp.Task = sResp.Task - return resp, nil + return &task.GetTaskResponse{ + Task: sResp.Task, + }, nil } func (t *TaskApplication) TraceHub(ctx context.Context, event *entity.RawSpan) error { From b572c9a0d98c0164a1490b5d55c6b1edc280c37f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 20:27:24 +0800 Subject: [PATCH 082/462] feat:fix nil --- backend/modules/observability/application/task.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 585dff858..f56d0bb03 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -183,6 +183,9 @@ func (t *TaskApplication) ListTasks(ctx context.Context, req *task.ListTasksRequ if err != nil { return resp, err } + if sResp == nil { + return resp, nil + } return &task.ListTasksResponse{ Tasks: sResp.Tasks, Total: sResp.Total, @@ -207,6 +210,9 @@ func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) if err != nil { return resp, err } + if sResp == nil { + return resp, nil + } return &task.GetTaskResponse{ Task: sResp.Task, From e19d374b8966b4e4f9672573efc9857271f097b5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 20:54:11 +0800 Subject: [PATCH 083/462] feat:add debug log --- .../domain/task/taskexe/processor/auto_evaluate.go | 1 + .../observability/domain/task/taskexe/tracehub/trace_hub.go | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 6097f6483..ac80823e8 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -135,6 +135,7 @@ func (d *DatasetServiceAdaptor) getDatasetProvider(category entity.DatasetCatego } func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s", currentTask.GetID(), taskOp) //todo:[xun]加锁 session := getSession(ctx, currentTask) var evaluationSetColumns []string diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index d0d6f987f..0209e4acb 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -33,6 +33,7 @@ type ITraceHubService interface { func NewTraceHubImpl( tRepo repo.ITaskRepo, ) (ITraceHubService, error) { + processor.InitProcessor() ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, @@ -285,13 +286,14 @@ func (h *TraceHubServiceImpl) runScheduledTask() { return } tasks := tconv.TaskPOs2DOs(ctx, taskPOs, nil) + logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) // 遍历任务 for _, taskInfo := range tasks { logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) - endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) - startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()*int64(time.Millisecond)) + endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()) + startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()) proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) if err != nil { logs.CtxError(ctx, "NewProcessor err:%v", err) From 544d557abe786f133ca51dbde278abea614079f4 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 21:08:06 +0800 Subject: [PATCH 084/462] feat:add debug log --- .../domain/task/taskexe/processor/auto_evaluate.go | 4 +++- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index ac80823e8..335ed50b6 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -135,7 +135,7 @@ func (d *DatasetServiceAdaptor) getDatasetProvider(category entity.DatasetCatego } func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s", currentTask.GetID(), taskOp) + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) //todo:[xun]加锁 session := getSession(ctx, currentTask) var evaluationSetColumns []string @@ -178,6 +178,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas category := getCategory(currentTask.TaskType) schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) // 1、创建评测集 + logs.CtxInfo(ctx, "[auto_task] CreateDataset") datasetID, err := p.getDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( 0, currentTask.GetWorkspaceID(), @@ -222,6 +223,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), Session: session, } + logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) if err != nil { return err diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 0209e4acb..56b2e35de 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -301,13 +301,14 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } // 达到任务时间期限 // 到任务结束时间就结束 + logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) if time.Now().After(endTime) { updateMap := map[string]interface{}{ "task_status": task.TaskStatusSuccess, } err = h.taskRepo.UpdateTaskWithOCC(ctx, taskInfo.GetID(), taskInfo.GetWorkspaceID(), updateMap) if err != nil { - logs.CtxError(ctx, "[task-debug] UpdateTask err:%v", err) + logs.CtxError(ctx, "[auto_task] UpdateTask err:%v", err) continue } } From 09ba13a75b98318de9408313194424e8557e8d1e Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 8 Sep 2025 21:29:30 +0800 Subject: [PATCH 085/462] =?UTF-8?q?feat=EF=BC=9Aadd=20logid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 56b2e35de..51335770c 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -279,6 +279,8 @@ func (h *TraceHubServiceImpl) startScheduledTask() { func (h *TraceHubServiceImpl) runScheduledTask() { ctx := context.Background() logs.CtxInfo(ctx, "定时任务开始执行...") + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) // 读取所有非终态(成功/禁用)任务 taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) if err != nil { @@ -289,9 +291,6 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) // 遍历任务 for _, taskInfo := range tasks { - logID := logs.NewLogID() - ctx = logs.SetLogID(ctx, logID) - endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()) startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()) proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) From 8a6cd20d971370b2aa03746aaefedd9c94c95506 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 11:04:17 +0800 Subject: [PATCH 086/462] feat:fix time proc --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 51335770c..ef61fff84 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -291,8 +291,8 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) // 遍历任务 for _, taskInfo := range tasks { - endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()) - startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()) + endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) + startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()*int64(time.Millisecond)) proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) if err != nil { logs.CtxError(ctx, "NewProcessor err:%v", err) From 23807e2e5ccb3107c6c7f11d1764f74395c72296 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 12:49:19 +0800 Subject: [PATCH 087/462] feat:fix --- .../task/taskexe/processor/auto_evaluate.go | 28 ++----------------- .../trace/service/trace_export_service.go | 4 +-- 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 335ed50b6..ed98903e9 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -24,6 +24,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" "github.com/coze-dev/coze-loop/backend/pkg/json" "github.com/coze-dev/coze-loop/backend/pkg/lang/slices" "github.com/coze-dev/coze-loop/backend/pkg/logs" @@ -35,7 +36,7 @@ var _ taskexe.Processor = (*AutoEvaluteProcessor)(nil) type AutoEvaluteProcessor struct { evalSvc rpc.IEvaluatorRPCAdapter evaluationSvc rpc.IEvaluationRPCAdapter - datasetServiceAdaptor *DatasetServiceAdaptor + datasetServiceAdaptor *service.DatasetServiceAdaptor TaskRepo repo.ITaskRepo } @@ -108,30 +109,7 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * return nil } func (p *AutoEvaluteProcessor) getDatasetProvider(category entity.DatasetCategory) rpc.IDatasetProvider { - return p.datasetServiceAdaptor.getDatasetProvider(category) -} - -type DatasetServiceAdaptor struct { - datasetServiceMap map[entity.DatasetCategory]rpc.IDatasetProvider -} - -func NewDatasetServiceAdaptor() *DatasetServiceAdaptor { - return &DatasetServiceAdaptor{} -} - -func (d *DatasetServiceAdaptor) Register(category entity.DatasetCategory, provider rpc.IDatasetProvider) { - if d.datasetServiceMap == nil { - d.datasetServiceMap = make(map[entity.DatasetCategory]rpc.IDatasetProvider) - } - d.datasetServiceMap[category] = provider -} - -func (d *DatasetServiceAdaptor) getDatasetProvider(category entity.DatasetCategory) rpc.IDatasetProvider { - datasetProvider, ok := d.datasetServiceMap[category] - if !ok { - return rpc.NoopDatasetProvider - } - return datasetProvider + return p.datasetServiceAdaptor.GetDatasetProvider(category) } func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { diff --git a/backend/modules/observability/domain/trace/service/trace_export_service.go b/backend/modules/observability/domain/trace/service/trace_export_service.go index a553f9575..758331ed0 100644 --- a/backend/modules/observability/domain/trace/service/trace_export_service.go +++ b/backend/modules/observability/domain/trace/service/trace_export_service.go @@ -488,7 +488,7 @@ func (r *TraceExportServiceImpl) buildPreviewDataset(ctx context.Context, worksp } func (r *TraceExportServiceImpl) getDatasetProvider(category entity.DatasetCategory) rpc.IDatasetProvider { - return r.DatasetServiceAdaptor.getDatasetProvider(category) + return r.DatasetServiceAdaptor.GetDatasetProvider(category) } type DatasetServiceAdaptor struct { @@ -506,7 +506,7 @@ func (d *DatasetServiceAdaptor) Register(category entity.DatasetCategory, provid d.datasetServiceMap[category] = provider } -func (d *DatasetServiceAdaptor) getDatasetProvider(category entity.DatasetCategory) rpc.IDatasetProvider { +func (d *DatasetServiceAdaptor) GetDatasetProvider(category entity.DatasetCategory) rpc.IDatasetProvider { datasetProvider, ok := d.datasetServiceMap[category] if !ok { return rpc.NoopDatasetProvider From 337d46d96131fcce9619f6ef5d4680d06ec8d587 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 14:17:50 +0800 Subject: [PATCH 088/462] feat:fix wire --- backend/modules/observability/application/wire.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index a8971a858..f56890c23 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -67,6 +67,7 @@ var ( mysqldao.NewTaskDaoImpl, tredis.NewTaskDAO, mysqldao.NewTaskRunDaoImpl, + NewDatasetServiceAdapter, ) traceDomainSet = wire.NewSet( service.NewTraceServiceImpl, @@ -117,7 +118,6 @@ var ( user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, - NewDatasetServiceAdapter, taskDomainSet, ) ) From eb823ef06b9877a043c28f6df682e987575aaa26 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 14:30:45 +0800 Subject: [PATCH 089/462] feat:fix --- backend/modules/observability/application/wire.go | 2 +- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index f56890c23..678c47ad8 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -62,12 +62,12 @@ import ( var ( taskDomainSet = wire.NewSet( taskSvc.NewTaskServiceImpl, + NewDatasetServiceAdapter, tracehub.NewTraceHubImpl, obrepo.NewTaskRepoImpl, mysqldao.NewTaskDaoImpl, tredis.NewTaskDAO, mysqldao.NewTaskRunDaoImpl, - NewDatasetServiceAdapter, ) traceDomainSet = wire.NewSet( service.NewTraceServiceImpl, diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index ef61fff84..24d7637fe 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -34,7 +34,7 @@ func NewTraceHubImpl( tRepo repo.ITaskRepo, ) (ITraceHubService, error) { processor.InitProcessor() - ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, From cca5717558e3d46ab63d3aaa064a869f6461b682 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 14:39:07 +0800 Subject: [PATCH 090/462] feat:fix idl --- .../api/handler/coze/loop/apis/wire_gen.go | 1 + .../api/router/coze/loop/apis/middleware.go | 60 +++++++++++++++++++ .../loop/observability/domain/task/task.go | 12 ++-- .../observability/domain/trace/k-trace.go | 24 ++++---- .../loop/observability/domain/trace/trace.go | 56 ++++++++--------- .../loop/observability/domain/task.thrift | 11 ++-- 6 files changed, 114 insertions(+), 50 deletions(-) diff --git a/backend/api/handler/coze/loop/apis/wire_gen.go b/backend/api/handler/coze/loop/apis/wire_gen.go index 24f923b37..7bbd291d2 100644 --- a/backend/api/handler/coze/loop/apis/wire_gen.go +++ b/backend/api/handler/coze/loop/apis/wire_gen.go @@ -8,6 +8,7 @@ package apis import ( "context" + "github.com/cloudwego/kitex/pkg/endpoint" "github.com/coze-dev/coze-loop/backend/infra/ck" "github.com/coze-dev/coze-loop/backend/infra/db" diff --git a/backend/api/router/coze/loop/apis/middleware.go b/backend/api/router/coze/loop/apis/middleware.go index 3c3bfcf32..3e08dbe71 100644 --- a/backend/api/router/coze/loop/apis/middleware.go +++ b/backend/api/router/coze/loop/apis/middleware.go @@ -1260,3 +1260,63 @@ func _listtracesoapiMw(handler *apis.APIHandler) []app.HandlerFunc { // your code... return nil } + +func _tasksMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _createtaskMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _listtasksMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _gettaskMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _updatetaskMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _annotationMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _listannotationevaluatorsMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _tasks0Mw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _checktasknameMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _traceMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _extractspaninfoMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _changeevaluatorscoreMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index bad76ee58..10a738c8f 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -16,6 +16,8 @@ const ( TimeUnitWeek = "week" + TimeUnitNull = "null" + TaskTypeAutoEval = "auto_evaluate" TaskTypeAutoDataReflow = "auto_data_reflow" @@ -1340,13 +1342,13 @@ type Sampler struct { // 采样率 SampleRate *float64 `thrift:"sample_rate,1,optional" frugal:"1,optional,double" form:"sample_rate" json:"sample_rate,omitempty" query:"sample_rate"` // 采样上限 - SampleSize *int64 `thrift:"sample_size,2,optional" frugal:"2,optional,i64" json:"sample_size" form:"sample_size" query:"sample_size"` + SampleSize *int64 `thrift:"sample_size,2,optional" frugal:"2,optional,i64" form:"sample_size" json:"sample_size,omitempty" query:"sample_size"` // 是否启动任务循环 IsCycle *bool `thrift:"is_cycle,3,optional" frugal:"3,optional,bool" form:"is_cycle" json:"is_cycle,omitempty" query:"is_cycle"` // 采样单次上限 - CycleCount *int64 `thrift:"cycle_count,4,optional" frugal:"4,optional,i64" json:"cycle_count" form:"cycle_count" query:"cycle_count"` + CycleCount *int64 `thrift:"cycle_count,4,optional" frugal:"4,optional,i64" form:"cycle_count" json:"cycle_count,omitempty" query:"cycle_count"` // 循环间隔 - CycleInterval *int64 `thrift:"cycle_interval,5,optional" frugal:"5,optional,i64" json:"cycle_interval" form:"cycle_interval" query:"cycle_interval"` + CycleInterval *int64 `thrift:"cycle_interval,5,optional" frugal:"5,optional,i64" form:"cycle_interval" json:"cycle_interval,omitempty" query:"cycle_interval"` // 循环时间单位 CycleTimeUnit *TimeUnit `thrift:"cycle_time_unit,6,optional" frugal:"6,optional,string" form:"cycle_time_unit" json:"cycle_time_unit,omitempty" query:"cycle_time_unit"` } @@ -3236,8 +3238,8 @@ func (p *AutoEvaluateConfig) Field3DeepEqual(src []*FieldMapping) bool { // RunDetail type RunDetail struct { - SuccessCount *int64 `thrift:"success_count,1,optional" frugal:"1,optional,i64" json:"success_count" form:"success_count" query:"success_count"` - FailedCount *int64 `thrift:"failed_count,2,optional" frugal:"2,optional,i64" json:"failed_count" form:"failed_count" query:"failed_count"` + SuccessCount *int64 `thrift:"success_count,1,optional" frugal:"1,optional,i64" form:"success_count" json:"success_count,omitempty" query:"success_count"` + FailedCount *int64 `thrift:"failed_count,2,optional" frugal:"2,optional,i64" form:"failed_count" json:"failed_count,omitempty" query:"failed_count"` } func NewRunDetail() *RunDetail { diff --git a/backend/kitex_gen/coze/loop/observability/domain/trace/k-trace.go b/backend/kitex_gen/coze/loop/observability/domain/trace/k-trace.go index 4f0812316..9fcc649d2 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/trace/k-trace.go +++ b/backend/kitex_gen/coze/loop/observability/domain/trace/k-trace.go @@ -203,8 +203,8 @@ func (p *TokenCost) FastRead(buf []byte) (int, error) { var l int var fieldTypeId thrift.TType var fieldId int16 - var issetInput bool = false - var issetOutput bool = false + var issetInputToken bool = false + var issetOutputToken bool = false for { fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) offset += l @@ -222,7 +222,7 @@ func (p *TokenCost) FastRead(buf []byte) (int, error) { if err != nil { goto ReadFieldError } - issetInput = true + issetInputToken = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -237,7 +237,7 @@ func (p *TokenCost) FastRead(buf []byte) (int, error) { if err != nil { goto ReadFieldError } - issetOutput = true + issetOutputToken = true } else { l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -254,12 +254,12 @@ func (p *TokenCost) FastRead(buf []byte) (int, error) { } } - if !issetInput { + if !issetInputToken { fieldId = 1 goto RequiredFieldNotSetError } - if !issetOutput { + if !issetOutputToken { fieldId = 2 goto RequiredFieldNotSetError } @@ -284,7 +284,7 @@ func (p *TokenCost) FastReadField1(buf []byte) (int, error) { offset += l _field = v } - p.Input = _field + p.InputToken = _field return offset, nil } @@ -298,7 +298,7 @@ func (p *TokenCost) FastReadField2(buf []byte) (int, error) { offset += l _field = v } - p.Output = _field + p.OutputToken = _field return offset, nil } @@ -329,14 +329,14 @@ func (p *TokenCost) BLength() int { func (p *TokenCost) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) - offset += thrift.Binary.WriteI64(buf[offset:], p.Input) + offset += thrift.Binary.WriteI64(buf[offset:], p.InputToken) return offset } func (p *TokenCost) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) - offset += thrift.Binary.WriteI64(buf[offset:], p.Output) + offset += thrift.Binary.WriteI64(buf[offset:], p.OutputToken) return offset } @@ -360,9 +360,9 @@ func (p *TokenCost) DeepCopy(s interface{}) error { return fmt.Errorf("%T's type not matched %T", s, p) } - p.Input = src.Input + p.InputToken = src.InputToken - p.Output = src.Output + p.OutputToken = src.OutputToken return nil } diff --git a/backend/kitex_gen/coze/loop/observability/domain/trace/trace.go b/backend/kitex_gen/coze/loop/observability/domain/trace/trace.go index c9fc5c24a..89b63dc07 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/trace/trace.go +++ b/backend/kitex_gen/coze/loop/observability/domain/trace/trace.go @@ -259,8 +259,8 @@ func (p *Trace) Field2DeepEqual(src *TokenCost) bool { } type TokenCost struct { - Input int64 `thrift:"input,1,required" frugal:"1,required,i64" json:"input" form:"input,required" query:"input,required"` - Output int64 `thrift:"output,2,required" frugal:"2,required,i64" json:"output" form:"output,required" query:"output,required"` + InputToken int64 `thrift:"input_token,1,required" frugal:"1,required,i64" json:"input_token" form:"input_token,required" query:"input_token,required"` + OutputToken int64 `thrift:"output_token,2,required" frugal:"2,required,i64" json:"output_token" form:"output_token,required" query:"output_token,required"` } func NewTokenCost() *TokenCost { @@ -270,36 +270,36 @@ func NewTokenCost() *TokenCost { func (p *TokenCost) InitDefault() { } -func (p *TokenCost) GetInput() (v int64) { +func (p *TokenCost) GetInputToken() (v int64) { if p != nil { - return p.Input + return p.InputToken } return } -func (p *TokenCost) GetOutput() (v int64) { +func (p *TokenCost) GetOutputToken() (v int64) { if p != nil { - return p.Output + return p.OutputToken } return } -func (p *TokenCost) SetInput(val int64) { - p.Input = val +func (p *TokenCost) SetInputToken(val int64) { + p.InputToken = val } -func (p *TokenCost) SetOutput(val int64) { - p.Output = val +func (p *TokenCost) SetOutputToken(val int64) { + p.OutputToken = val } var fieldIDToName_TokenCost = map[int16]string{ - 1: "input", - 2: "output", + 1: "input_token", + 2: "output_token", } func (p *TokenCost) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetInput bool = false - var issetOutput bool = false + var issetInputToken bool = false + var issetOutputToken bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -320,7 +320,7 @@ func (p *TokenCost) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetInput = true + issetInputToken = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -329,7 +329,7 @@ func (p *TokenCost) Read(iprot thrift.TProtocol) (err error) { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } - issetOutput = true + issetOutputToken = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -346,12 +346,12 @@ func (p *TokenCost) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } - if !issetInput { + if !issetInputToken { fieldId = 1 goto RequiredFieldNotSetError } - if !issetOutput { + if !issetOutputToken { fieldId = 2 goto RequiredFieldNotSetError } @@ -381,7 +381,7 @@ func (p *TokenCost) ReadField1(iprot thrift.TProtocol) error { } else { _field = v } - p.Input = _field + p.InputToken = _field return nil } func (p *TokenCost) ReadField2(iprot thrift.TProtocol) error { @@ -392,7 +392,7 @@ func (p *TokenCost) ReadField2(iprot thrift.TProtocol) error { } else { _field = v } - p.Output = _field + p.OutputToken = _field return nil } @@ -429,10 +429,10 @@ WriteStructEndError: } func (p *TokenCost) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("input", thrift.I64, 1); err != nil { + if err = oprot.WriteFieldBegin("input_token", thrift.I64, 1); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.Input); err != nil { + if err := oprot.WriteI64(p.InputToken); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -445,10 +445,10 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } func (p *TokenCost) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("output", thrift.I64, 2); err != nil { + if err = oprot.WriteFieldBegin("output_token", thrift.I64, 2); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.Output); err != nil { + if err := oprot.WriteI64(p.OutputToken); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -475,10 +475,10 @@ func (p *TokenCost) DeepEqual(ano *TokenCost) bool { } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.Input) { + if !p.Field1DeepEqual(ano.InputToken) { return false } - if !p.Field2DeepEqual(ano.Output) { + if !p.Field2DeepEqual(ano.OutputToken) { return false } return true @@ -486,14 +486,14 @@ func (p *TokenCost) DeepEqual(ano *TokenCost) bool { func (p *TokenCost) Field1DeepEqual(src int64) bool { - if p.Input != src { + if p.InputToken != src { return false } return true } func (p *TokenCost) Field2DeepEqual(src int64) bool { - if p.Output != src { + if p.OutputToken != src { return false } return true diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index f6a9a7aa1..9919a97e9 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -7,6 +7,7 @@ include "export_dataset.thrift" typedef string TimeUnit (ts.enum="true") const TimeUnit TimeUnit_Day = "day" const TimeUnit TimeUnit_Week = "week" +const TimeUnit TimeUnit_Null = "null" typedef string TaskType (ts.enum="true") const TaskType TaskType_AutoEval = "auto_evaluate" // 自动评测 @@ -50,10 +51,10 @@ struct Rule { struct Sampler { 1: optional double sample_rate // 采样率 - 2: optional i64 sample_size (api.js_conv="true", go.tag='json:"sample_size"') // 采样上限 + 2: optional i64 sample_size // 采样上限 3: optional bool is_cycle // 是否启动任务循环 - 4: optional i64 cycle_count (api.js_conv="true", go.tag='json:"cycle_count"') // 采样单次上限 - 5: optional i64 cycle_interval (api.js_conv="true", go.tag='json:"cycle_interval"') // 循环间隔 + 4: optional i64 cycle_count // 采样单次上限 + 5: optional i64 cycle_interval // 循环间隔 6: optional TimeUnit cycle_time_unit // 循环时间单位 } @@ -84,8 +85,8 @@ struct AutoEvaluateConfig { // RunDetail struct RunDetail { - 1: optional i64 success_count (api.js_conv="true", go.tag='json:"success_count"') - 2: optional i64 failed_count (api.js_conv="true", go.tag='json:"failed_count"') + 1: optional i64 success_count + 2: optional i64 failed_count } struct FieldMapping { From 62e49602df27fd5b3065e4d2a2e2c8166a1954bb Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 14:44:51 +0800 Subject: [PATCH 091/462] =?UTF-8?q?feat=EF=BC=9Afix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../observability/application/convertor/trace/trace.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/application/convertor/trace/trace.go b/backend/modules/observability/application/convertor/trace/trace.go index 0ad0f4998..422769a45 100644 --- a/backend/modules/observability/application/convertor/trace/trace.go +++ b/backend/modules/observability/application/convertor/trace/trace.go @@ -34,8 +34,8 @@ func AdvanceInfoDO2TraceDTO(info *loop_span.TraceAdvanceInfo) *traced.Trace { return &traced.Trace{ TraceID: &info.TraceId, Tokens: &traced.TokenCost{ - Input: info.InputCost, - Output: info.OutputCost, + InputToken: info.InputCost, + OutputToken: info.OutputCost, }, } } From 8da6a799798e0e7aab104372f7624ee64da802ba Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 14:50:04 +0800 Subject: [PATCH 092/462] =?UTF-8?q?feat=EF=BC=9Afix=20wire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/modules/observability/application/wire.go | 1 - backend/modules/observability/application/wire_gen.go | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 678c47ad8..9ef9e1eb0 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -84,7 +84,6 @@ var ( obconfig.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, - NewDatasetServiceAdapter, evaluator.NewEvaluatorRPCProvider, taskDomainSet, ) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index ae5b6d9b9..8ff6a5690 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -216,9 +216,9 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, redis2 redi // wire.go: var ( - taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, tracehub.NewTraceHubImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, mysql.NewTaskRunDaoImpl) + taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, NewDatasetServiceAdapter, tracehub.NewTraceHubImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, mysql.NewTaskRunDaoImpl) traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, - NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, NewDatasetServiceAdapter, evaluator.NewEvaluatorRPCProvider, taskDomainSet, + NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, evaluator.NewEvaluatorRPCProvider, taskDomainSet, ) traceSet = wire.NewSet( NewTraceApplication, repo.NewViewRepoImpl, mysql.NewViewDaoImpl, auth.NewAuthProvider, user.NewUserRPCProvider, tag.NewTagRPCProvider, traceDomainSet, @@ -231,8 +231,7 @@ var ( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) taskSet = wire.NewSet( - NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, NewDatasetServiceAdapter, - taskDomainSet, + NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, taskDomainSet, ) ) From 3313d8f0c34de1c417d2426ba1d08ade91e39a97 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 15:01:57 +0800 Subject: [PATCH 093/462] feat:add debug log --- backend/modules/observability/application/wire.go | 5 +++-- backend/modules/observability/application/wire_gen.go | 7 ++++--- .../domain/task/taskexe/processor/auto_evaluate.go | 7 ++----- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 9ef9e1eb0..90fed24c5 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -62,8 +62,6 @@ import ( var ( taskDomainSet = wire.NewSet( taskSvc.NewTaskServiceImpl, - NewDatasetServiceAdapter, - tracehub.NewTraceHubImpl, obrepo.NewTaskRepoImpl, mysqldao.NewTaskDaoImpl, tredis.NewTaskDAO, @@ -85,6 +83,7 @@ var ( tenant.NewTenantProvider, workspace.NewWorkspaceProvider, evaluator.NewEvaluatorRPCProvider, + NewDatasetServiceAdapter, taskDomainSet, ) traceSet = wire.NewSet( @@ -112,6 +111,8 @@ var ( traceDomainSet, ) taskSet = wire.NewSet( + NewDatasetServiceAdapter, + tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 8ff6a5690..48312d305 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -216,9 +216,10 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, redis2 redi // wire.go: var ( - taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, NewDatasetServiceAdapter, tracehub.NewTraceHubImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, mysql.NewTaskRunDaoImpl) + taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, mysql.NewTaskRunDaoImpl) traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, - NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, evaluator.NewEvaluatorRPCProvider, taskDomainSet, + NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, evaluator.NewEvaluatorRPCProvider, NewDatasetServiceAdapter, + taskDomainSet, ) traceSet = wire.NewSet( NewTraceApplication, repo.NewViewRepoImpl, mysql.NewViewDaoImpl, auth.NewAuthProvider, user.NewUserRPCProvider, tag.NewTagRPCProvider, traceDomainSet, @@ -231,7 +232,7 @@ var ( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) taskSet = wire.NewSet( - NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, taskDomainSet, + NewDatasetServiceAdapter, tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, taskDomainSet, ) ) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index ed98903e9..b11969c75 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -108,9 +108,6 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * //todo:[xun]根据是否是真的结束实验做处理 return nil } -func (p *AutoEvaluteProcessor) getDatasetProvider(category entity.DatasetCategory) rpc.IDatasetProvider { - return p.datasetServiceAdaptor.GetDatasetProvider(category) -} func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) @@ -156,8 +153,8 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas category := getCategory(currentTask.TaskType) schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) // 1、创建评测集 - logs.CtxInfo(ctx, "[auto_task] CreateDataset") - datasetID, err := p.getDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( + logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( 0, currentTask.GetWorkspaceID(), fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()), From 737449ef0ecff166b8038be6ce060c80afbcd9b8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 15:11:16 +0800 Subject: [PATCH 094/462] feat:wire gen --- backend/modules/observability/application/wire.go | 3 ++- backend/modules/observability/application/wire_gen.go | 5 +++-- .../domain/task/taskexe/processor/auto_evaluate.go | 6 ++++-- .../domain/task/taskexe/processor/factory.go | 5 +++-- .../domain/task/taskexe/tracehub/trace_hub.go | 10 +++------- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 90fed24c5..53ae67e81 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -247,7 +247,8 @@ func InitTaskApplication( authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, - exptService experimentservice.Client) (ITaskApplication, error) { + exptService experimentservice.Client, + datasetService datasetservice.Client) (ITaskApplication, error) { wire.Build(taskSet) return nil, nil } diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 48312d305..be60e9454 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -190,7 +190,7 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb return iTraceIngestionApplication, nil } -func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, redis2 redis.Cmdable, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client) (ITaskApplication, error) { +func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, redis2 redis.Cmdable, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client) (ITaskApplication, error) { iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO) @@ -202,7 +202,8 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, redis2 redi iAuthProvider := auth.NewAuthProvider(authClient) iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iEvaluationRPCAdapter := evaluation.NewEvaluationRPCProvider(exptService) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo) + datasetServiceAdaptor := NewDatasetServiceAdapter(evalSetService, datasetService) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, datasetServiceAdaptor) if err != nil { return nil, err } diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index b11969c75..5f129c78a 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -40,8 +40,10 @@ type AutoEvaluteProcessor struct { TaskRepo repo.ITaskRepo } -func newAutoEvaluteProcessor() *AutoEvaluteProcessor { - return &AutoEvaluteProcessor{} +func newAutoEvaluteProcessor(datasetServiceProvider *service.DatasetServiceAdaptor) *AutoEvaluteProcessor { + return &AutoEvaluteProcessor{ + datasetServiceAdaptor: datasetServiceProvider, + } } func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any, workspaceID int64) error { diff --git a/backend/modules/observability/domain/task/taskexe/processor/factory.go b/backend/modules/observability/domain/task/taskexe/processor/factory.go index 6c324eb3b..542ac3ea9 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/taskexe/processor/factory.go @@ -9,6 +9,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" ) @@ -30,7 +31,7 @@ func NewProcessor(ctx context.Context, taskType task.TaskType) (taskexe.Processo } } -func InitProcessor() { - autoEvaluteProc = newAutoEvaluteProcessor() +func InitProcessor(datasetServiceProvider *service.DatasetServiceAdaptor) { + autoEvaluteProc = newAutoEvaluteProcessor(datasetServiceProvider) dataReflowProc = newDataReflowProcessor() } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 24d7637fe..8afcc3fa8 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -12,18 +12,16 @@ import ( "github.com/bytedance/gg/gslice" "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" - config "github.com/coze-dev/coze-loop/backend/modules/data/domain/component/conf" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/consumer" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" "github.com/coze-dev/coze-loop/backend/pkg/logs" "github.com/hashicorp/go-multierror" "github.com/pkg/errors" - goredis "github.com/redis/go-redis/v9" ) type ITraceHubService interface { @@ -32,8 +30,9 @@ type ITraceHubService interface { func NewTraceHubImpl( tRepo repo.ITaskRepo, + datasetServiceProvider *service.DatasetServiceAdaptor, ) (ITraceHubService, error) { - processor.InitProcessor() + processor.InitProcessor(datasetServiceProvider) ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, @@ -48,9 +47,6 @@ func NewTraceHubImpl( } type TraceHubServiceImpl struct { - c consumer.Consumer - cfg *config.ConsumerConfig - redis *goredis.Client ticker *time.Ticker stopChan chan struct{} taskRepo repo.ITaskRepo From b9390553d998bc4194616c30a0615d7b2fe626b7 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 15:16:45 +0800 Subject: [PATCH 095/462] feat:wire gen --- backend/modules/observability/application/wire_gen.go | 2 +- .../domain/task/taskexe/processor/auto_evaluate.go | 7 ++++++- .../domain/task/taskexe/processor/factory.go | 8 ++++++-- .../domain/task/taskexe/tracehub/trace_hub.go | 5 ++++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index be60e9454..6a56255b7 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -203,7 +203,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, redis2 redi iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iEvaluationRPCAdapter := evaluation.NewEvaluationRPCProvider(exptService) datasetServiceAdaptor := NewDatasetServiceAdapter(evalSetService, datasetService) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, datasetServiceAdaptor) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter) if err != nil { return nil, err } diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 5f129c78a..2ccf1d664 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -40,9 +40,14 @@ type AutoEvaluteProcessor struct { TaskRepo repo.ITaskRepo } -func newAutoEvaluteProcessor(datasetServiceProvider *service.DatasetServiceAdaptor) *AutoEvaluteProcessor { +func newAutoEvaluteProcessor( + datasetServiceProvider *service.DatasetServiceAdaptor, + evalService rpc.IEvaluatorRPCAdapter, + evaluationService rpc.IEvaluationRPCAdapter) *AutoEvaluteProcessor { return &AutoEvaluteProcessor{ datasetServiceAdaptor: datasetServiceProvider, + evalSvc: evalService, + evaluationSvc: evaluationService, } } diff --git a/backend/modules/observability/domain/task/taskexe/processor/factory.go b/backend/modules/observability/domain/task/taskexe/processor/factory.go index 542ac3ea9..5cce49b1b 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/taskexe/processor/factory.go @@ -8,6 +8,7 @@ import ( "fmt" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" @@ -31,7 +32,10 @@ func NewProcessor(ctx context.Context, taskType task.TaskType) (taskexe.Processo } } -func InitProcessor(datasetServiceProvider *service.DatasetServiceAdaptor) { - autoEvaluteProc = newAutoEvaluteProcessor(datasetServiceProvider) +func InitProcessor( + datasetServiceProvider *service.DatasetServiceAdaptor, + evalService rpc.IEvaluatorRPCAdapter, + evaluationService rpc.IEvaluationRPCAdapter) { + autoEvaluteProc = newAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService) dataReflowProc = newDataReflowProcessor() } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 8afcc3fa8..fb40b0774 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -13,6 +13,7 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" @@ -31,8 +32,10 @@ type ITraceHubService interface { func NewTraceHubImpl( tRepo repo.ITaskRepo, datasetServiceProvider *service.DatasetServiceAdaptor, + evalService rpc.IEvaluatorRPCAdapter, + evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { - processor.InitProcessor(datasetServiceProvider) + processor.InitProcessor(datasetServiceProvider, evalService, evaluationService) ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, From 2f6855790fb8975a61ae6ef56938c43e6c2e59b8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 16:11:06 +0800 Subject: [PATCH 096/462] feat:fix --- .../task/taskexe/processor/auto_evaluate.go | 1 + .../domain/trace/entity/dataset.go | 4 +++- .../domain/trace/entity/dataset_test.go | 2 +- .../trace/service/trace_export_service.go | 3 +++ .../infra/rpc/evaluationset/evaluation_set.go | 22 ++++++++++++------- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 2ccf1d664..c62c6cc0f 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -167,6 +167,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()), category, schema, + session, )) if err != nil { return err diff --git a/backend/modules/observability/domain/trace/entity/dataset.go b/backend/modules/observability/domain/trace/entity/dataset.go index 5b4cb199d..26ac5324f 100644 --- a/backend/modules/observability/domain/trace/entity/dataset.go +++ b/backend/modules/observability/domain/trace/entity/dataset.go @@ -57,6 +57,7 @@ type Dataset struct { DatasetVersion DatasetVersion // 评测集属性 EvaluationBizCategory *EvaluationBizCategory + Seesion *common.Session } type DatasetVersion struct { @@ -95,7 +96,7 @@ type FieldSchema struct { DisplayFormat FieldDisplayFormat } -func NewDataset(id, spaceID int64, name string, category DatasetCategory, schema DatasetSchema) *Dataset { +func NewDataset(id, spaceID int64, name string, category DatasetCategory, schema DatasetSchema, session *common.Session) *Dataset { dataset := &Dataset{ ID: id, WorkspaceID: spaceID, @@ -104,6 +105,7 @@ func NewDataset(id, spaceID int64, name string, category DatasetCategory, schema DatasetSchema: schema, }, DatasetCategory: category, + Seesion: session, } return dataset } diff --git a/backend/modules/observability/domain/trace/entity/dataset_test.go b/backend/modules/observability/domain/trace/entity/dataset_test.go index 2d6cdbc61..ea8efd40c 100755 --- a/backend/modules/observability/domain/trace/entity/dataset_test.go +++ b/backend/modules/observability/domain/trace/entity/dataset_test.go @@ -95,7 +95,7 @@ func TestNewDataset(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got := NewDataset(tt.args.id, tt.args.spaceID, tt.args.name, tt.args.category, tt.args.schema) + got := NewDataset(tt.args.id, tt.args.spaceID, tt.args.name, tt.args.category, tt.args.schema, nil) assert.Equal(t, tt.want, got) }) } diff --git a/backend/modules/observability/domain/trace/service/trace_export_service.go b/backend/modules/observability/domain/trace/service/trace_export_service.go index 758331ed0..2774ebde3 100644 --- a/backend/modules/observability/domain/trace/service/trace_export_service.go +++ b/backend/modules/observability/domain/trace/service/trace_export_service.go @@ -217,6 +217,7 @@ func (r *TraceExportServiceImpl) createOrUpdateDataset(ctx context.Context, work *config.DatasetName, category, config.DatasetSchema, + nil, )) if err != nil { return nil, err @@ -240,6 +241,7 @@ func (r *TraceExportServiceImpl) createOrUpdateDataset(ctx context.Context, work "", category, config.DatasetSchema, + nil, )); err != nil { return nil, err } @@ -477,6 +479,7 @@ func (r *TraceExportServiceImpl) buildPreviewDataset(ctx context.Context, worksp "", category, schema, + nil, ) if config.DatasetID != nil { dataset.ID = *config.DatasetID diff --git a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go index 6248b2aae..a81bed510 100644 --- a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go +++ b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go @@ -42,20 +42,26 @@ func (d *EvaluationSetProvider) CreateDataset(ctx context.Context, dataset *enti if dataset.Name == "" { return 0, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("dataset name is required")) } - - userIDStr, _ := session.UserIDInCtx(ctx) - userID, err := strconv.ParseInt(userIDStr, 10, 64) - if err != nil { - return 0, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("userid is required")) + var sessionInfo *common.Session + if dataset.Seesion == nil { + userIDStr, _ := session.UserIDInCtx(ctx) + userID, err := strconv.ParseInt(userIDStr, 10, 64) + if err != nil { + return 0, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("userid is required")) + } + sessionInfo = &common.Session{ + UserID: gptr.Of(userID), + } + } else { + sessionInfo = dataset.Seesion } + // 构造请求 req := &eval_set.CreateEvaluationSetRequest{ WorkspaceID: dataset.WorkspaceID, Name: &dataset.Name, Description: &dataset.Description, - Session: &common.Session{ - UserID: lo.ToPtr(userID), - }, + Session: sessionInfo, } // 设置BizCategory From 5e8d3c2abef24c863e0e1c6caec600a84d8175c6 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 17:58:56 +0800 Subject: [PATCH 097/462] feat:Specify env --- .../task/taskexe/processor/data_reflow.go | 69 +++++++++++++++++++ .../domain/task/taskexe/tracehub/trace_hub.go | 1 + 2 files changed, 70 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 7ae471ba0..ad31920b3 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -7,12 +7,18 @@ import ( "context" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" + "github.com/coze-dev/coze-loop/backend/pkg/logs" ) var _ taskexe.Processor = (*DataReflowProcessor)(nil) type DataReflowProcessor struct { + datasetServiceAdaptor *service.DatasetServiceAdaptor + TaskRepo repo.ITaskRepo } func newDataReflowProcessor() *DataReflowProcessor { @@ -25,6 +31,43 @@ func (p *DataReflowProcessor) ValidateConfig(ctx context.Context, config any, wo } func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { + //cfg, ok := config.(*task.TaskRun) + //if !ok { + // return taskexe.ErrInvalidConfig + //} + //workspaceID := trigger.Task.GetWorkspaceID() + //session := getSession(ctx, trigger.Task) + //var mapping []*task.FieldMapping + //for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { + // mapping = append(mapping, autoEvaluateConfig.FieldMappings...) + //} + //turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema()) + //if len(turns) == 0 { + // logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") + // return nil + //} + //_, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ + // WorkspaceID: workspaceID, + // EvaluationSetID: cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), + // Items: []*eval_set.EvaluationSetItem{ + // { + // WorkspaceID: gptr.Of(workspaceID), + // EvaluationSetID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID()), + // SchemaID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchemaID()), + // Turns: turns, + // ItemKey: gptr.Of(trigger.Span.SpanID), + // }, + // }, + // SkipInvalidItems: gptr.Of(true), + // AllowPartialAdd: gptr.Of(true), + // ExperimentID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), + // ExperimentRunID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), + // Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID())}, + // Session: session, + //}) + //if err != nil { + // return err + //} return nil } @@ -33,5 +76,31 @@ func (p *DataReflowProcessor) Finish(ctx context.Context, config any, trigger *t } func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { + logs.CtxInfo(ctx, "[auto_task] DataReflowProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) + session := getSession(ctx, currentTask) + category := getCategory(currentTask.TaskType) + dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() + // 1、创建数据集 + logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + for _, dataReflowConfig := range dataReflowConfigs { + if dataReflowConfig.DatasetID != nil { + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", dataReflowConfig.DatasetID) + continue + } + schema := convertDatasetSchemaDTO2DO(dataReflowConfig.GetDatasetSchema()) + datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( + 0, + currentTask.GetWorkspaceID(), + dataReflowConfig.GetDatasetName(), + category, + schema, + session, + )) + if err != nil { + return err + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) + } + return nil } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index fb40b0774..af3ed22f5 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -280,6 +280,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "定时任务开始执行...") logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) + context.WithValue(ctx, "K_ENV", "boe_auto_task") // 读取所有非终态(成功/禁用)任务 taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) if err != nil { From 175eec328ed295288ea40b9013a3e9200e7d611b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 19:09:07 +0800 Subject: [PATCH 098/462] feat:fill ctx --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index af3ed22f5..c07f732c7 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -280,7 +280,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "定时任务开始执行...") logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) - context.WithValue(ctx, "K_ENV", "boe_auto_task") + ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") // 读取所有非终态(成功/禁用)任务 taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) if err != nil { From 1e342560c39d60bbcf632a51d24efbf6ce5c0eb1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 19:23:33 +0800 Subject: [PATCH 099/462] feat:fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index c62c6cc0f..86a730bb2 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -142,6 +142,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas } // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ + Key: gptr.Of(fieldMapping.GetEvalSetName()), Name: gptr.Of(fieldMapping.GetEvalSetName()), Description: gptr.Of(fieldMapping.TraceFieldJsonpath), ContentType: gptr.Of(fieldMapping.GetFieldSchema().GetContentType()), @@ -299,7 +300,7 @@ func getSession(ctx context.Context, task *task.Task) *common.Session { } return &common.Session{ UserID: gptr.Of(userID), - AppID: gptr.Of(int32(717152)), + //AppID: gptr.Of(int32(717152)), } } func getBasicEvaluationSetSchema(basicColumns []string) (*dataset0.DatasetSchema, []*expt.FieldMapping) { From dfe5a30ea74d72b45f692e5b1d03914ddc475741 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 19:38:42 +0800 Subject: [PATCH 100/462] feat:pass rpc error --- .../domain/task/taskexe/processor/auto_evaluate.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 86a730bb2..3ede99c6e 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -171,7 +171,8 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas session, )) if err != nil { - return err + //return err + datasetID = 7548050173629300737 } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) // 2、创建实验 From 7654670d0d05509d8ca98abd25720b7e59acb56c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 20:15:26 +0800 Subject: [PATCH 101/462] feat:fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 3ede99c6e..37468fa25 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -11,6 +11,7 @@ import ( "github.com/apaxa-go/helper/strconvh" "github.com/bytedance/gg/gptr" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" eval_target_d "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_target" @@ -119,6 +120,7 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) //todo:[xun]加锁 + ctx = session.WithCtxUser(context.Background(), &session.User{ID: currentTask.BaseInfo.CreatedBy.GetUserID()}) session := getSession(ctx, currentTask) var evaluationSetColumns []string var evaluatorVersionIds []int64 @@ -171,8 +173,8 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas session, )) if err != nil { - //return err - datasetID = 7548050173629300737 + return err + //datasetID = 7548050173629300737 } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) // 2、创建实验 From 3ca4dfee83cb02c17188f457e06769a21f7c1b67 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 20:31:15 +0800 Subject: [PATCH 102/462] feat:add debug log --- .../domain/task/taskexe/processor/auto_evaluate.go | 13 +++++++++---- .../infra/rpc/evaluationset/evaluation_set.go | 6 +++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 37468fa25..b0299dc31 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -120,8 +120,8 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) //todo:[xun]加锁 - ctx = session.WithCtxUser(context.Background(), &session.User{ID: currentTask.BaseInfo.CreatedBy.GetUserID()}) - session := getSession(ctx, currentTask) + ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.BaseInfo.CreatedBy.GetUserID()}) + sessionInfo := getSession(ctx, currentTask) var evaluationSetColumns []string var evaluatorVersionIds []int64 var evaluatorFieldMappings []*expt.EvaluatorFieldMapping @@ -164,13 +164,18 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) // 1、创建评测集 logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + user, ok := session.UserInCtx(ctx) + if !ok { + logs.CtxError(ctx, "User not found") + } + logs.CtxInfo(ctx, "[auto_task] CreateDataset,user:%+v", user) datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( 0, currentTask.GetWorkspaceID(), fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()), category, schema, - session, + sessionInfo, )) if err != nil { return err @@ -208,7 +213,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas MaxAliveTime: gptr.Of(maxAliveTime), SourceType: gptr.Of(expt.SourceType_AutoTask), SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), - Session: session, + Session: sessionInfo, } logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) diff --git a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go index a81bed510..3db609def 100644 --- a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go +++ b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go @@ -74,7 +74,11 @@ func (d *EvaluationSetProvider) CreateDataset(ctx context.Context, dataset *enti if len(dataset.DatasetVersion.DatasetSchema.FieldSchemas) > 0 { req.EvaluationSetSchema = datasetSchemaDO2DTO(&dataset.DatasetVersion.DatasetSchema) } - + user, ok := session.UserInCtx(ctx) + if !ok { + logs.CtxError(ctx, "User not found") + } + logs.CtxInfo(ctx, "[auto_task] CreateDataset,schema:%+v", user) resp, err := d.client.CreateEvaluationSet(ctx, req) if err != nil { logs.CtxError(ctx, "CreateEvaluationSet failed, workspace_id=%d, err=%#v", dataset.WorkspaceID, err) From 3047334eb9004c1471c92c186460bce81dda7ecf Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 20:35:45 +0800 Subject: [PATCH 103/462] feat:add debug log --- .../domain/task/taskexe/processor/auto_evaluate.go | 2 +- .../observability/infra/rpc/evaluationset/evaluation_set.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index b0299dc31..df61d420b 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -166,7 +166,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) user, ok := session.UserInCtx(ctx) if !ok { - logs.CtxError(ctx, "User not found") + logs.CtxError(ctx, "[auto_task] User not found") } logs.CtxInfo(ctx, "[auto_task] CreateDataset,user:%+v", user) datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( diff --git a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go index 3db609def..26be04c8a 100644 --- a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go +++ b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go @@ -76,7 +76,7 @@ func (d *EvaluationSetProvider) CreateDataset(ctx context.Context, dataset *enti } user, ok := session.UserInCtx(ctx) if !ok { - logs.CtxError(ctx, "User not found") + logs.CtxError(ctx, "[auto_task] User not found") } logs.CtxInfo(ctx, "[auto_task] CreateDataset,schema:%+v", user) resp, err := d.client.CreateEvaluationSet(ctx, req) From 242790bda314e6f247de44bd7909607d35aee787 Mon Sep 17 00:00:00 2001 From: tpfz Date: Tue, 9 Sep 2025 20:47:51 +0800 Subject: [PATCH 104/462] =?UTF-8?q?=E7=BB=95=E8=BF=87=E9=89=B4=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/evaluation_set_app.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/backend/modules/evaluation/application/evaluation_set_app.go b/backend/modules/evaluation/application/evaluation_set_app.go index 6dd473041..95627797d 100644 --- a/backend/modules/evaluation/application/evaluation_set_app.go +++ b/backend/modules/evaluation/application/evaluation_set_app.go @@ -77,14 +77,16 @@ func (e *EvaluationSetApplicationImpl) CreateEvaluationSet(ctx context.Context, if req.EvaluationSetSchema == nil { return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("schema is nil")) } - // 鉴权 - err = e.auth.Authorization(ctx, &rpc.AuthorizationParam{ - ObjectID: strconv.FormatInt(req.WorkspaceID, 10), - SpaceID: req.WorkspaceID, - ActionObjects: []*rpc.ActionObject{{Action: gptr.Of("createLoopEvaluationSet"), EntityType: gptr.Of(rpc.AuthEntityType_Space)}}, - }) - if err != nil { - return nil, err + if req.Session == nil { + // 鉴权 + err = e.auth.Authorization(ctx, &rpc.AuthorizationParam{ + ObjectID: strconv.FormatInt(req.WorkspaceID, 10), + SpaceID: req.WorkspaceID, + ActionObjects: []*rpc.ActionObject{{Action: gptr.Of("createLoopEvaluationSet"), EntityType: gptr.Of(rpc.AuthEntityType_Space)}}, + }) + if err != nil { + return nil, err + } } // domain调用 var session *entity.Session From 32aa6cb9cb2a3d921f55ca8250c79e7a8093d1f4 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 9 Sep 2025 20:52:18 +0800 Subject: [PATCH 105/462] feat:delete debug log --- .../domain/task/taskexe/processor/auto_evaluate.go | 7 ------- .../infra/rpc/evaluationset/evaluation_set.go | 6 +----- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index df61d420b..1581567d7 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -11,7 +11,6 @@ import ( "github.com/apaxa-go/helper/strconvh" "github.com/bytedance/gg/gptr" - "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" eval_target_d "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_target" @@ -120,7 +119,6 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) //todo:[xun]加锁 - ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.BaseInfo.CreatedBy.GetUserID()}) sessionInfo := getSession(ctx, currentTask) var evaluationSetColumns []string var evaluatorVersionIds []int64 @@ -164,11 +162,6 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) // 1、创建评测集 logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) - user, ok := session.UserInCtx(ctx) - if !ok { - logs.CtxError(ctx, "[auto_task] User not found") - } - logs.CtxInfo(ctx, "[auto_task] CreateDataset,user:%+v", user) datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( 0, currentTask.GetWorkspaceID(), diff --git a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go index 26be04c8a..a81bed510 100644 --- a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go +++ b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go @@ -74,11 +74,7 @@ func (d *EvaluationSetProvider) CreateDataset(ctx context.Context, dataset *enti if len(dataset.DatasetVersion.DatasetSchema.FieldSchemas) > 0 { req.EvaluationSetSchema = datasetSchemaDO2DTO(&dataset.DatasetVersion.DatasetSchema) } - user, ok := session.UserInCtx(ctx) - if !ok { - logs.CtxError(ctx, "[auto_task] User not found") - } - logs.CtxInfo(ctx, "[auto_task] CreateDataset,schema:%+v", user) + resp, err := d.client.CreateEvaluationSet(ctx, req) if err != nil { logs.CtxError(ctx, "CreateEvaluationSet failed, workspace_id=%d, err=%#v", dataset.WorkspaceID, err) From 1e95e0be6513434195cce9cac61f3f9173c6cde2 Mon Sep 17 00:00:00 2001 From: tpfz Date: Tue, 9 Sep 2025 21:15:50 +0800 Subject: [PATCH 106/462] feat: [Coda] add request session middleware for handler layer (LogID: 202509092100540100911101349482C32) Co-Authored-By: Coda --- backend/api/handler/coze/loop/apis/handler.go | 4 +- .../middleware/session/request_session_mw.go | 72 +++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100755 backend/infra/middleware/session/request_session_mw.go diff --git a/backend/api/handler/coze/loop/apis/handler.go b/backend/api/handler/coze/loop/apis/handler.go index 6ef4f617b..42eb3a92a 100644 --- a/backend/api/handler/coze/loop/apis/handler.go +++ b/backend/api/handler/coze/loop/apis/handler.go @@ -19,6 +19,7 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/i18n" cachemw "github.com/coze-dev/coze-loop/backend/infra/middleware/ctxcache" logmw "github.com/coze-dev/coze-loop/backend/infra/middleware/logs" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/infra/middleware/validator" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/tag" @@ -230,6 +231,7 @@ func defaultKiteXMiddlewares() []endpoint.Middleware { return []endpoint.Middleware{ logmw.LogTrafficMW, validator.KiteXValidatorMW, + session.NewRequestSessionMW(), cachemw.CtxCacheMW, } } @@ -262,4 +264,4 @@ func invokeAndRender[T, K any]( } return callable(ctx, ins) }) -} +} \ No newline at end of file diff --git a/backend/infra/middleware/session/request_session_mw.go b/backend/infra/middleware/session/request_session_mw.go new file mode 100755 index 000000000..09cbac5cc --- /dev/null +++ b/backend/infra/middleware/session/request_session_mw.go @@ -0,0 +1,72 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package session + +import ( + "context" + "reflect" + "strconv" + + "github.com/cloudwego/kitex/pkg/endpoint" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +// NewRequestSessionMW 创建处理request参数中session的middleware +// 该middleware通过反射检测request参数中是否包含session字段(类型为*common.Session) +// 如果存在,则提取用户信息并使用WithCtxUser函数注入到context中 +func NewRequestSessionMW() endpoint.Middleware { + return func(next endpoint.Endpoint) endpoint.Endpoint { + return func(ctx context.Context, req, resp any) error { + // 尝试从request参数中提取session信息 + if session := extractSessionFromRequest(req); session != nil { + // 构造User对象并注入到context中 + user := &User{ + ID: strconv.FormatInt(session.GetUserID(), 10), // i64转string + AppID: session.GetAppID(), // i32 + // Name和Email暂时为空,可根据需要从其他地方获取 + } + ctx = WithCtxUser(ctx, user) + logs.CtxDebug(ctx, "RequestSessionMW: injected user to context, userID=%s, appID=%d", user.ID, user.AppID) + } + + return next(ctx, req, resp) + } + } +} + +// extractSessionFromRequest 使用反射从request参数中提取session字段 +// 支持*common.Session类型的session字段 +func extractSessionFromRequest(req any) *common.Session { + if req == nil { + return nil + } + + val := reflect.ValueOf(req) + if val.Kind() == reflect.Ptr { + val = val.Elem() + } + + if val.Kind() != reflect.Struct { + return nil + } + + // 查找名为"Session"的字段 + sessionField := val.FieldByName("Session") + if !sessionField.IsValid() { + return nil + } + + // 检查字段是否为nil + if sessionField.IsNil() { + return nil + } + + // 尝试类型断言为*common.Session + if session, ok := sessionField.Interface().(*common.Session); ok { + return session + } + + return nil +} \ No newline at end of file From 1620210c0c79cf03e312587d331199a07825e005 Mon Sep 17 00:00:00 2001 From: tpfz Date: Tue, 9 Sep 2025 21:18:21 +0800 Subject: [PATCH 107/462] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BF=BD=E7=95=A5api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coze/loop/evaluation/coze.loop.evaluation.eval_set.thrift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_set.thrift b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_set.thrift index 47c9ba495..1e6c4070e 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_set.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_set.thrift @@ -13,7 +13,7 @@ struct CreateEvaluationSetRequest { 4: optional eval_set.EvaluationSetSchema evaluation_set_schema, 5: optional eval_set.BizCategory biz_category (vt.max_size = "128") // 业务分类 - 200: optional common.Session session + 200: optional common.Session session (api.none = 'true') 255: optional base.Base Base } From 25def603e64d8d2083aa7e4b925ce2a735ef4234 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 11:03:42 +0800 Subject: [PATCH 108/462] feat:mock data --- .../observability/domain/task/entity/task.go | 1 + .../task/taskexe/processor/auto_evaluate.go | 4 +-- .../task/taskexe/processor/data_reflow.go | 28 +++++-------------- .../infra/rpc/evaluationset/evaluation_set.go | 6 +++- 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/backend/modules/observability/domain/task/entity/task.go b/backend/modules/observability/domain/task/entity/task.go index 738d481bd..e7df49a15 100644 --- a/backend/modules/observability/domain/task/entity/task.go +++ b/backend/modules/observability/domain/task/entity/task.go @@ -45,6 +45,7 @@ type TaskRun struct { BackfillDetail *string // 历史回溯运行详情 RunStartAt time.Time // run 开始时间 RunEndAt time.Time // run 结束时间 + RunConfig *string // 相关任务的配置信息 CreatedAt time.Time // 创建时间 UpdatedAt time.Time // 更新时间 } diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 1581567d7..069cf9738 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -171,8 +171,8 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas sessionInfo, )) if err != nil { - return err - //datasetID = 7548050173629300737 + //return err + datasetID = 7548288691995672577 } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) // 2、创建实验 diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index ad31920b3..773c87494 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -35,8 +35,10 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t //if !ok { // return taskexe.ErrInvalidConfig //} - //workspaceID := trigger.Task.GetWorkspaceID() - //session := getSession(ctx, trigger.Task) + // + //ctx = session.WithCtxUser(ctx, &session.User{ID: *cfg.BaseInfo.CreatedBy.UserID}) + ////workspaceID := trigger.Task.GetWorkspaceID() + ////session := getSession(ctx, trigger.Task) //var mapping []*task.FieldMapping //for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { // mapping = append(mapping, autoEvaluateConfig.FieldMappings...) @@ -46,25 +48,9 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t // logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") // return nil //} - //_, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ - // WorkspaceID: workspaceID, - // EvaluationSetID: cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), - // Items: []*eval_set.EvaluationSetItem{ - // { - // WorkspaceID: gptr.Of(workspaceID), - // EvaluationSetID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID()), - // SchemaID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchemaID()), - // Turns: turns, - // ItemKey: gptr.Of(trigger.Span.SpanID), - // }, - // }, - // SkipInvalidItems: gptr.Of(true), - // AllowPartialAdd: gptr.Of(true), - // ExperimentID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), - // ExperimentRunID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), - // Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID())}, - // Session: session, - //}) + //category := getCategory(cfg.TaskType) + // + //addSuccess, errorGroups, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, cfg.ID, category, turns) //if err != nil { // return err //} diff --git a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go index a81bed510..26be04c8a 100644 --- a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go +++ b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go @@ -74,7 +74,11 @@ func (d *EvaluationSetProvider) CreateDataset(ctx context.Context, dataset *enti if len(dataset.DatasetVersion.DatasetSchema.FieldSchemas) > 0 { req.EvaluationSetSchema = datasetSchemaDO2DTO(&dataset.DatasetVersion.DatasetSchema) } - + user, ok := session.UserInCtx(ctx) + if !ok { + logs.CtxError(ctx, "[auto_task] User not found") + } + logs.CtxInfo(ctx, "[auto_task] CreateDataset,schema:%+v", user) resp, err := d.client.CreateEvaluationSet(ctx, req) if err != nil { logs.CtxError(ctx, "CreateEvaluationSet failed, workspace_id=%d, err=%#v", dataset.WorkspaceID, err) From d3067ef9cda207d525efd3e9df201dd1f0a0ffda Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 11:13:38 +0800 Subject: [PATCH 109/462] feat:add debug log --- .../domain/task/taskexe/processor/auto_evaluate.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 069cf9738..6ee9116db 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -171,8 +171,9 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas sessionInfo, )) if err != nil { + logs.CtxError(ctx, "CreateDataset failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) //return err - datasetID = 7548288691995672577 + //datasetID = 7548288691995672577 } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) // 2、创建实验 @@ -211,7 +212,8 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) if err != nil { - return err + logs.CtxError(ctx, "SubmitExperiment failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) + //return err } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) // 3、更新任务状态 From 53d780e68cd1723e4adcf458133a0285609e5fdf Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 11:17:32 +0800 Subject: [PATCH 110/462] feat:fix --- .../task/taskexe/processor/auto_evaluate.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 6ee9116db..4f6d14658 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -217,15 +217,15 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) // 3、更新任务状态 - if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { - updateMap := map[string]interface{}{ - "task_status": task.TaskStatusRunning, - } - err = p.TaskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) - if err != nil { - return err - } - } + //if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { + // updateMap := map[string]interface{}{ + // "task_status": task.TaskStatusRunning, + // } + // err = p.TaskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) + // if err != nil { + // return err + // } + //} // 4、更新任务配置 effectiveTime := currentTask.GetRule().GetEffectiveTime() taskConfig, err := p.TaskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) From 4e36d811fac8c279678423a76b725611b30bb5ae Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 11:23:25 +0800 Subject: [PATCH 111/462] feat:add:debug log --- .../task/taskexe/processor/auto_evaluate.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 4f6d14658..e1602992d 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -217,15 +217,16 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) // 3、更新任务状态 - //if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { - // updateMap := map[string]interface{}{ - // "task_status": task.TaskStatusRunning, - // } - // err = p.TaskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) - // if err != nil { - // return err - // } - //} + if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { + updateMap := map[string]interface{}{ + "task_status": task.TaskStatusRunning, + } + logs.CtxInfo(ctx, "currentTask.GetID():%d, currentTask.GetWorkspaceID():%d", currentTask.GetID(), currentTask.GetWorkspaceID()) + err = p.TaskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) + if err != nil { + return err + } + } // 4、更新任务配置 effectiveTime := currentTask.GetRule().GetEffectiveTime() taskConfig, err := p.TaskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) From db9266441d5e2e7fa4fd08be69ba4575b439ebaa Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 11:28:33 +0800 Subject: [PATCH 112/462] feat:add debug log --- backend/modules/observability/infra/repo/mysql/task.go | 1 + backend/modules/observability/infra/repo/task.go | 1 + 2 files changed, 2 insertions(+) diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index 696d31ee1..c226d6b30 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -300,6 +300,7 @@ func (v *TaskDaoImpl) ListNonFinalTask(ctx context.Context) ([]*model.Observabil func (v *TaskDaoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { //todo[xun]: 乐观锁 + logs.CtxInfo(ctx, "UpdateTaskWithOCC, id:%d, workspaceID:%d, updateMap:%+v", id, workspaceID, updateMap) q := genquery.Use(v.dbMgr.NewSession(ctx)) qd := q.WithContext(ctx).ObservabilityTask qd = qd.Where(q.ObservabilityTask.ID.Eq(id)).Where(q.ObservabilityTask.WorkspaceID.Eq(workspaceID)) diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index f14aa3ef8..eac2fb4a6 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -190,6 +190,7 @@ func (v *TaskRepoImpl) ListNonFinalTaskBySpaceID(ctx context.Context, spaceID st } func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { // 先执行数据库操作 + logs.CtxInfo(ctx, "UpdateTaskWithOCC, id:%d, workspaceID:%d, updateMap:%+v", id, workspaceID, updateMap) err := v.TaskDao.UpdateTaskWithOCC(ctx, id, workspaceID, updateMap) if err != nil { return err From 743e8b721d0caac79b610c789d5e20627c04233a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 11:34:11 +0800 Subject: [PATCH 113/462] feat:wire gen --- .../domain/task/taskexe/processor/auto_evaluate.go | 6 ++++-- .../observability/domain/task/taskexe/processor/factory.go | 6 ++++-- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index e1602992d..e428ca7ed 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -37,17 +37,19 @@ type AutoEvaluteProcessor struct { evalSvc rpc.IEvaluatorRPCAdapter evaluationSvc rpc.IEvaluationRPCAdapter datasetServiceAdaptor *service.DatasetServiceAdaptor - TaskRepo repo.ITaskRepo + taskRepo repo.ITaskRepo } func newAutoEvaluteProcessor( datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter) *AutoEvaluteProcessor { + evaluationService rpc.IEvaluationRPCAdapter, + taskRepo repo.ITaskRepo) *AutoEvaluteProcessor { return &AutoEvaluteProcessor{ datasetServiceAdaptor: datasetServiceProvider, evalSvc: evalService, evaluationSvc: evaluationService, + taskRepo: taskRepo, } } diff --git a/backend/modules/observability/domain/task/taskexe/processor/factory.go b/backend/modules/observability/domain/task/taskexe/processor/factory.go index 5cce49b1b..d9609e54b 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/taskexe/processor/factory.go @@ -9,6 +9,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" @@ -35,7 +36,8 @@ func NewProcessor(ctx context.Context, taskType task.TaskType) (taskexe.Processo func InitProcessor( datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter) { - autoEvaluteProc = newAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService) + evaluationService rpc.IEvaluationRPCAdapter, + taskRepo repo.ITaskRepo) { + autoEvaluteProc = newAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo) dataReflowProc = newDataReflowProcessor() } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index c07f732c7..d97464db5 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -35,7 +35,7 @@ func NewTraceHubImpl( evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { - processor.InitProcessor(datasetServiceProvider, evalService, evaluationService) + processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, From 387191c30350b94a5fa73d099971e86d4096bb0c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 11:35:25 +0800 Subject: [PATCH 114/462] feat:add debug log --- .../domain/task/taskexe/processor/auto_evaluate.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index e428ca7ed..bbb82fa54 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -224,14 +224,14 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas "task_status": task.TaskStatusRunning, } logs.CtxInfo(ctx, "currentTask.GetID():%d, currentTask.GetWorkspaceID():%d", currentTask.GetID(), currentTask.GetWorkspaceID()) - err = p.TaskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) + err = p.taskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) if err != nil { return err } } // 4、更新任务配置 effectiveTime := currentTask.GetRule().GetEffectiveTime() - taskConfig, err := p.TaskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) + taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) if err != nil { return err } @@ -277,12 +277,13 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas CreatedAt: time.Now(), UpdatedAt: time.Now(), }) + logs.CtxInfo(ctx, "taskConfig:%+v", taskConfig) // 6、更新任务配置 // todo:[xun]改task_run? - err = p.TaskRepo.UpdateTask(ctx, taskConfig) - if err != nil { - return err - } + //err = p.taskRepo.UpdateTask(ctx, taskConfig) + //if err != nil { + // return err + //} return nil } From 418fd78dec44299d7cd72419e24fc610553e445e Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 11:40:27 +0800 Subject: [PATCH 115/462] feat:fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index bbb82fa54..64e2c5361 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -174,7 +174,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas )) if err != nil { logs.CtxError(ctx, "CreateDataset failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) - //return err + return err //datasetID = 7548288691995672577 } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) @@ -215,7 +215,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) if err != nil { logs.CtxError(ctx, "SubmitExperiment failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) - //return err + return err } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) // 3、更新任务状态 From d12cca960603ac581c5a07c97435a89b31968b62 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 12:00:08 +0800 Subject: [PATCH 116/462] feat:add debug log --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- .../modules/observability/infra/mq/consumer/task_consumer.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index d97464db5..67e35674b 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -36,7 +36,7 @@ func NewTraceHubImpl( evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, diff --git a/backend/modules/observability/infra/mq/consumer/task_consumer.go b/backend/modules/observability/infra/mq/consumer/task_consumer.go index f3d231a2a..3757cde70 100644 --- a/backend/modules/observability/infra/mq/consumer/task_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/task_consumer.go @@ -46,6 +46,7 @@ func (e *TaskConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, err } func (e *TaskConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) error { + logs.CtxInfo(ctx, "HandleMessage, msg: %+v", ext) event := new(entity.RawSpan) if err := json.Unmarshal(ext.Body, event); err != nil { logs.CtxError(ctx, "Task msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) From 5298a1789829b3c019c68ebd07930a4474812525 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 12:18:05 +0800 Subject: [PATCH 117/462] feat:add debug log --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 1 + backend/modules/observability/infra/mq/consumer/task_consumer.go | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 67e35674b..2e2e3241d 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -63,6 +63,7 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS span := rawSpan.RawSpanConvertToLoopSpan() logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) spaceList, _ := h.taskRepo.GetObjListWithTask(ctx) + logs.CtxInfo(ctx, "space list: %v", spaceList) if !gslice.Contains(spaceList, span.WorkspaceID) { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) logs.CtxInfo(ctx, "no space found for span, %s", logSuffix) diff --git a/backend/modules/observability/infra/mq/consumer/task_consumer.go b/backend/modules/observability/infra/mq/consumer/task_consumer.go index 3757cde70..f3d231a2a 100644 --- a/backend/modules/observability/infra/mq/consumer/task_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/task_consumer.go @@ -46,7 +46,6 @@ func (e *TaskConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, err } func (e *TaskConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) error { - logs.CtxInfo(ctx, "HandleMessage, msg: %+v", ext) event := new(entity.RawSpan) if err := json.Unmarshal(ext.Body, event); err != nil { logs.CtxError(ctx, "Task msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) From 7a3e38d913e9b59aace9c3062446f0b29d374ddc Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 13:05:09 +0800 Subject: [PATCH 118/462] feat:add debug log --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 ++ .../modules/observability/infra/mq/consumer/task_consumer.go | 2 ++ 2 files changed, 4 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 2e2e3241d..b140351a9 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -58,6 +58,8 @@ type TraceHubServiceImpl struct { const TagKeyResult = "tag_key" func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawSpan) error { + ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + logs.CtxInfo(ctx, "TraceHub start") var tags []metrics.T // 1、转换成标准span,并根据space_id初步过滤 span := rawSpan.RawSpanConvertToLoopSpan() diff --git a/backend/modules/observability/infra/mq/consumer/task_consumer.go b/backend/modules/observability/infra/mq/consumer/task_consumer.go index f3d231a2a..a4b2bf353 100644 --- a/backend/modules/observability/infra/mq/consumer/task_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/task_consumer.go @@ -46,6 +46,8 @@ func (e *TaskConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, err } func (e *TaskConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) error { + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) event := new(entity.RawSpan) if err := json.Unmarshal(ext.Body, event); err != nil { logs.CtxError(ctx, "Task msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) From e0c8eda0719fd885408cd7c781d39d855a54d00c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 13:27:21 +0800 Subject: [PATCH 119/462] feat: [Coda] implement GetObjListWithTask for non-final tasks spaceid retrieval (LogID: 20250910132128010091106179396D4C8) Co-Authored-By: Coda --- .../observability/infra/repo/mysql/task.go | 26 +++++++++++++++++++ .../modules/observability/infra/repo/task.go | 14 ++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index c226d6b30..fb831aa0a 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -46,6 +46,7 @@ type ITaskDao interface { ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) ListNonFinalTask(ctx context.Context) ([]*model.ObservabilityTask, error) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error + GetObjListWithTask(ctx context.Context) ([]string, []string, error) } func NewTaskDaoImpl(db db.Provider) ITaskDao { @@ -311,3 +312,28 @@ func (v *TaskDaoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspace logs.CtxInfo(ctx, "%d rows updated", info.RowsAffected) return nil } + +func (v *TaskDaoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)) + qd := q.WithContext(ctx).ObservabilityTask + + // 查询非终态任务的workspace_id,使用DISTINCT去重 + qd = qd.Where(q.ObservabilityTask.TaskStatus.NotIn("success", "disabled")) + qd = qd.Select(q.ObservabilityTask.WorkspaceID).Distinct() + + results, err := qd.Find() + if err != nil { + return nil, nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + + // 转换为字符串数组 + var spaceList []string + for _, task := range results { + spaceList = append(spaceList, strconv.FormatInt(task.WorkspaceID, 10)) + } + + // botList暂时返回空数组,因为Task表中没有bot_id字段 + var botList []string + + return spaceList, botList, nil +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index eac2fb4a6..8af906675 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -249,7 +249,17 @@ func (v *TaskRepoImpl) generateFilterHash(param mysql.ListTaskParam) string { func (v *TaskRepoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string) { // 先查 Redis 缓存 - var spaceList, botList []string + spaceList, botList, err := v.TaskRedisDao.GetObjListWithTask(ctx) + if err != nil { + logs.CtxWarn(ctx, "failed to get obj list with task from redis cache", "err", err) + // Redis失败时从MySQL获取 + spaceList, botList, err = v.TaskDao.GetObjListWithTask(ctx) + if err != nil { + logs.CtxWarn(ctx, "failed to get obj list with task from mysql", "err", err) + return nil, nil + } + } + return spaceList, botList } @@ -272,4 +282,4 @@ func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID in return count, nil } return count, nil -} +} \ No newline at end of file From 33207357924e5b9ef0a91fee70323f03ff097990 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 13:27:52 +0800 Subject: [PATCH 120/462] feat:add dao --- .../infra/repo/redis/dao/task.go | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 5762a9169..866603e53 100644 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -50,6 +50,7 @@ type ITaskDAO interface { DeleteTaskCount(ctx context.Context, taskID int64) error GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) + GetObjListWithTask(ctx context.Context) ([]string, []string, error) } type TaskDAOImpl struct { @@ -365,3 +366,31 @@ func (p *TaskDAOImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int } return got, nil } + +func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, error) { + spaceKey := "spaceList" + botKey := "botList" + gotSpaceList, err := p.cmdable.Get(ctx, spaceKey).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil, nil // 缓存未命中 + } + return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) + } + var spaceList []string + if err = json.Unmarshal(conv.UnsafeStringToBytes(gotSpaceList), &spaceList); err != nil { + return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) + } + gotBotList, err := p.cmdable.Get(ctx, botKey).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil, nil // 缓存未命中 + } + return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) + } + var botList []string + if err = json.Unmarshal(conv.UnsafeStringToBytes(gotBotList), &botList); err != nil { + return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) + } + return spaceList, botList, nil +} From de33961387a1b873d1026d66eacc60b2631c3e97 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 13:33:18 +0800 Subject: [PATCH 121/462] feat:fix redis --- backend/modules/observability/infra/repo/redis/dao/task.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 866603e53..8a373721f 100644 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -373,7 +373,7 @@ func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin gotSpaceList, err := p.cmdable.Get(ctx, spaceKey).Result() if err != nil { if redis.IsNilError(err) { - return nil, nil, nil // 缓存未命中 + return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) // 缓存未命中 } return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) } @@ -384,7 +384,7 @@ func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin gotBotList, err := p.cmdable.Get(ctx, botKey).Result() if err != nil { if redis.IsNilError(err) { - return nil, nil, nil // 缓存未命中 + return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) // 缓存未命中 } return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) } From e5843625d3a9be21c8ed8ff33bc034462dc20878 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 13:41:59 +0800 Subject: [PATCH 122/462] feat:span proc --- backend/modules/observability/domain/task/entity/event.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go index 77369223b..7d4130b2d 100644 --- a/backend/modules/observability/domain/task/entity/event.go +++ b/backend/modules/observability/domain/task/entity/event.go @@ -97,15 +97,15 @@ func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { LogID: s.LogID, TraceID: s.TraceID, DurationMicros: s.DurationInUs / 1000, - PSM: "", + PSM: s.ServerEnv.PSM, CallType: "", - WorkspaceID: "", + WorkspaceID: s.Tags["fornax_space_id"].(string), SpanName: s.SpanName, SpanType: s.SpanType, Method: s.Method, StatusCode: s.StatusCode, - Input: "", - Output: "", + Input: s.SensitiveTags.Input, + Output: s.SensitiveTags.Output, ObjectStorage: "", SystemTagsString: nil, SystemTagsLong: nil, From 1f989f4221276054716450c0a93e589771da4b0d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 13:52:36 +0800 Subject: [PATCH 123/462] feat:add proc --- .../observability/infra/repo/mysql/task.go | 26 ++++++++++++++----- .../modules/observability/infra/repo/task.go | 22 ++++++++++++++-- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index fb831aa0a..807d13b46 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -47,6 +47,7 @@ type ITaskDao interface { ListNonFinalTask(ctx context.Context) ([]*model.ObservabilityTask, error) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error GetObjListWithTask(ctx context.Context) ([]string, []string, error) + ListNonFinalTaskBySpaceID(ctx context.Context, workspaceID int64) ([]*model.ObservabilityTask, error) } func NewTaskDaoImpl(db db.Provider) ITaskDao { @@ -299,6 +300,19 @@ func (v *TaskDaoImpl) ListNonFinalTask(ctx context.Context) ([]*model.Observabil return results, nil } +func (v *TaskDaoImpl) ListNonFinalTaskBySpaceID(ctx context.Context, workspaceID int64) ([]*model.ObservabilityTask, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)) + qd := q.WithContext(ctx).ObservabilityTask + qd = qd.Where(q.ObservabilityTask.WorkspaceID.Eq(workspaceID)) + qd = qd.Where(q.ObservabilityTask.TaskStatus.NotIn("success", "disabled")) + + results, err := qd.Limit(500).Find() + if err != nil { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, nil +} + func (v *TaskDaoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { //todo[xun]: 乐观锁 logs.CtxInfo(ctx, "UpdateTaskWithOCC, id:%d, workspaceID:%d, updateMap:%+v", id, workspaceID, updateMap) @@ -316,24 +330,24 @@ func (v *TaskDaoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspace func (v *TaskDaoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)) qd := q.WithContext(ctx).ObservabilityTask - + // 查询非终态任务的workspace_id,使用DISTINCT去重 qd = qd.Where(q.ObservabilityTask.TaskStatus.NotIn("success", "disabled")) qd = qd.Select(q.ObservabilityTask.WorkspaceID).Distinct() - + results, err := qd.Find() if err != nil { return nil, nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) } - + // 转换为字符串数组 var spaceList []string for _, task := range results { spaceList = append(spaceList, strconv.FormatInt(task.WorkspaceID, 10)) } - + // botList暂时返回空数组,因为Task表中没有bot_id字段 var botList []string - + return spaceList, botList, nil -} \ No newline at end of file +} diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 8af906675..1fa624428 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -6,6 +6,7 @@ package repo import ( "context" "fmt" + "strconv" "time" "github.com/coze-dev/coze-loop/backend/infra/idgen" @@ -186,7 +187,24 @@ func (v *TaskRepoImpl) ListNonFinalTask(ctx context.Context) ([]*entity.Observab return resp, nil } func (v *TaskRepoImpl) ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask { - return nil + // 先查 Redis 缓存 + cachedTasks, err := v.TaskRedisDao.GetNonFinalTaskList(ctx) + if err != nil { + logs.CtxWarn(ctx, "failed to get non final task list from redis cache", "err", err) + } else if cachedTasks != nil { + return cachedTasks + } + // 缓存未命中,查询数据库 + spaceIDInt, _ := strconv.ParseInt(spaceID, 10, 64) + results, err := v.TaskDao.ListNonFinalTaskBySpaceID(ctx, spaceIDInt) + if err != nil { + return nil + } + resp := make([]*entity.ObservabilityTask, len(results)) + for i, result := range results { + resp[i] = convertor.TaskPO2DO(result) + } + return resp } func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { // 先执行数据库操作 @@ -282,4 +300,4 @@ func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID in return count, nil } return count, nil -} \ No newline at end of file +} From 99d14d26fe20632abd5cc8367c20b80ab4d52400 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 14:01:25 +0800 Subject: [PATCH 124/462] feat:add debug log --- .../observability/domain/task/taskexe/tracehub/subscriber.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index a25a2bffb..2bc4e8147 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -68,6 +68,9 @@ func (s *spanSubscriber) Creative(ctx context.Context) error { func (s *spanSubscriber) AddSpan(ctx context.Context, span *loop_span.Span) error { taskConfig, err := s.taskRepo.GetTask(ctx, s.t.GetID(), nil, nil) + if err != nil { + return err + } var taskRunConfig *entity.TaskRun if taskConfig != nil { From 2c2e9779a59a437c16fba2d3197c01ddf4fe04ca Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 14:05:29 +0800 Subject: [PATCH 125/462] feat:fix repo --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index b140351a9..db8ceb745 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -130,6 +130,7 @@ func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loo bufCap: 0, flushWait: sync.WaitGroup{}, maxFlushInterval: time.Second * 5, + taskRepo: h.taskRepo, }) } From 21e683eb6a573a73f3e99a5b80962d8f508488f2 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 14:12:00 +0800 Subject: [PATCH 126/462] feat:fix dao --- .../task/taskexe/processor/auto_evaluate.go | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 64e2c5361..0dd835430 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -219,22 +219,23 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) // 3、更新任务状态 - if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { - updateMap := map[string]interface{}{ - "task_status": task.TaskStatusRunning, - } - logs.CtxInfo(ctx, "currentTask.GetID():%d, currentTask.GetWorkspaceID():%d", currentTask.GetID(), currentTask.GetWorkspaceID()) - err = p.taskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) - if err != nil { - return err - } - } + //if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { + // updateMap := map[string]interface{}{ + // "task_status": task.TaskStatusRunning, + // } + // logs.CtxInfo(ctx, "currentTask.GetID():%d, currentTask.GetWorkspaceID():%d", currentTask.GetID(), currentTask.GetWorkspaceID()) + // err = p.taskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) + // if err != nil { + // return err + // } + //} // 4、更新任务配置 effectiveTime := currentTask.GetRule().GetEffectiveTime() taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) if err != nil { return err } + taskConfig.TaskStatus = task.TaskStatusRunning var cycleStartAt, cycleEndAt int64 currentTime := time.Now().UnixMilli() @@ -280,10 +281,10 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas logs.CtxInfo(ctx, "taskConfig:%+v", taskConfig) // 6、更新任务配置 // todo:[xun]改task_run? - //err = p.taskRepo.UpdateTask(ctx, taskConfig) - //if err != nil { - // return err - //} + err = p.taskRepo.UpdateTask(ctx, taskConfig) + if err != nil { + return err + } return nil } From 5f10e8dade36260d814b4bb7e671c1cc6ee36fcb Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 14:33:29 +0800 Subject: [PATCH 127/462] feat:fix log --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- .../observability/infra/rpc/evaluationset/evaluation_set.go | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index db8ceb745..6448ab138 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -36,7 +36,7 @@ func NewTraceHubImpl( evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, diff --git a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go index 26be04c8a..9b77950f5 100644 --- a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go +++ b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go @@ -74,11 +74,6 @@ func (d *EvaluationSetProvider) CreateDataset(ctx context.Context, dataset *enti if len(dataset.DatasetVersion.DatasetSchema.FieldSchemas) > 0 { req.EvaluationSetSchema = datasetSchemaDO2DTO(&dataset.DatasetVersion.DatasetSchema) } - user, ok := session.UserInCtx(ctx) - if !ok { - logs.CtxError(ctx, "[auto_task] User not found") - } - logs.CtxInfo(ctx, "[auto_task] CreateDataset,schema:%+v", user) resp, err := d.client.CreateEvaluationSet(ctx, req) if err != nil { logs.CtxError(ctx, "CreateEvaluationSet failed, workspace_id=%d, err=%#v", dataset.WorkspaceID, err) From a2e6e0e979d4d0db6ca6e296df975c2994a8a99e Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 14:49:56 +0800 Subject: [PATCH 128/462] feat:fix repo --- .../domain/task/repo/task_run.go | 34 ++ .../task/taskexe/processor/auto_evaluate.go | 5 +- .../infra/repo/mysql/convertor/task.go | 34 ++ .../infra/repo/redis/convert/task_run.go | 53 +++ .../infra/repo/redis/dao/task_run.go | 303 ++++++++++++ .../modules/observability/infra/repo/task.go | 27 +- .../observability/infra/repo/task_run.go | 434 ++++++++++++++++++ 7 files changed, 887 insertions(+), 3 deletions(-) create mode 100755 backend/modules/observability/domain/task/repo/task_run.go create mode 100755 backend/modules/observability/infra/repo/redis/convert/task_run.go create mode 100755 backend/modules/observability/infra/repo/redis/dao/task_run.go create mode 100755 backend/modules/observability/infra/repo/task_run.go diff --git a/backend/modules/observability/domain/task/repo/task_run.go b/backend/modules/observability/domain/task/repo/task_run.go new file mode 100755 index 000000000..bbd6d3c79 --- /dev/null +++ b/backend/modules/observability/domain/task/repo/task_run.go @@ -0,0 +1,34 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package repo + +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" +) + +//go:generate mockgen -destination=mocks/task_run.go -package=mocks . ITaskRunRepo +type ITaskRunRepo interface { + // 基础CRUD操作 + GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*entity.TaskRun, error) + CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) + UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error + DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error + ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) + + // 业务特定操作 + ListNonFinalTaskRun(ctx context.Context) ([]*entity.TaskRun, error) + ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) + ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID string) []*entity.TaskRun + UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error + GetObjListWithTaskRun(ctx context.Context) ([]string, []string) + + // TaskRun特有操作 + ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) + GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*entity.TaskRun, error) + ListTaskRunsByStatus(ctx context.Context, status string) ([]*entity.TaskRun, error) + GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) +} \ No newline at end of file diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 0dd835430..a81fe2237 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -278,7 +278,10 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas CreatedAt: time.Now(), UpdatedAt: time.Now(), }) - logs.CtxInfo(ctx, "taskConfig:%+v", taskConfig) + for _, run := range taskConfig.TaskRuns { + logs.CtxInfo(ctx, "taskConfig:%+v", &run) + } + // 6、更新任务配置 // todo:[xun]改task_run? err = p.taskRepo.UpdateTask(ctx, taskConfig) diff --git a/backend/modules/observability/infra/repo/mysql/convertor/task.go b/backend/modules/observability/infra/repo/mysql/convertor/task.go index 83a618e21..9b36f4bb9 100644 --- a/backend/modules/observability/infra/repo/mysql/convertor/task.go +++ b/backend/modules/observability/infra/repo/mysql/convertor/task.go @@ -47,3 +47,37 @@ func TaskPO2DO(task *model.ObservabilityTask) *entity.ObservabilityTask { UpdatedBy: task.UpdatedBy, } } + +func TaskRunDO2PO(taskRun *entity.TaskRun) *model.ObservabilityTaskRun { + return &model.ObservabilityTaskRun{ + ID: taskRun.ID, + TaskID: taskRun.TaskID, + WorkspaceID: taskRun.WorkspaceID, + TaskType: taskRun.TaskType, + RunStatus: taskRun.RunStatus, + RunDetail: taskRun.RunDetail, + BackfillDetail: taskRun.BackfillDetail, + RunStartAt: taskRun.RunStartAt, + RunEndAt: taskRun.RunEndAt, + RunConfig: taskRun.RunConfig, + CreatedAt: taskRun.CreatedAt, + UpdatedAt: taskRun.UpdatedAt, + } +} + +func TaskRunPO2DO(taskRun *model.ObservabilityTaskRun) *entity.TaskRun { + return &entity.TaskRun{ + ID: taskRun.ID, + TaskID: taskRun.TaskID, + WorkspaceID: taskRun.WorkspaceID, + TaskType: taskRun.TaskType, + RunStatus: taskRun.RunStatus, + RunDetail: taskRun.RunDetail, + BackfillDetail: taskRun.BackfillDetail, + RunStartAt: taskRun.RunStartAt, + RunEndAt: taskRun.RunEndAt, + RunConfig: taskRun.RunConfig, + CreatedAt: taskRun.CreatedAt, + UpdatedAt: taskRun.UpdatedAt, + } +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/redis/convert/task_run.go b/backend/modules/observability/infra/repo/redis/convert/task_run.go new file mode 100755 index 000000000..8e1b00aa5 --- /dev/null +++ b/backend/modules/observability/infra/repo/redis/convert/task_run.go @@ -0,0 +1,53 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package convert + +import ( + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" + "github.com/samber/lo" +) + +func NewTaskRunConverter() *TaskRunConverter { + return &TaskRunConverter{} +} + +type TaskRunConverter struct{} + +func (TaskRunConverter) FromDO(taskRun *entity.TaskRun) ([]byte, error) { + bytes, err := json.Marshal(taskRun) + if err != nil { + return nil, errorx.Wrapf(err, "TaskRun json marshal failed") + } + return bytes, nil +} + +func (TaskRunConverter) ToDO(b []byte) (*entity.TaskRun, error) { + taskRun := &entity.TaskRun{} + bytes := toTaskRunBytes(b) + if err := lo.TernaryF( + len(bytes) > 0, + func() error { return json.Unmarshal(bytes, taskRun) }, + func() error { return nil }, + ); err != nil { + return nil, errorx.Wrapf(err, "TaskRun json unmarshal failed") + } + return taskRun, nil +} + +// toTaskRunBytes +// +//nolint:staticcheck,S1034 +func toTaskRunBytes(v any) []byte { + switch v.(type) { + case string: + return conv.UnsafeStringToBytes(v.(string)) + case []byte: + return v.([]byte) + default: + return nil + } +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/redis/dao/task_run.go b/backend/modules/observability/infra/repo/redis/dao/task_run.go new file mode 100755 index 000000000..ca4428a94 --- /dev/null +++ b/backend/modules/observability/infra/repo/redis/dao/task_run.go @@ -0,0 +1,303 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package dao + +import ( + "context" + "fmt" + "time" + + "github.com/coze-dev/coze-loop/backend/infra/redis" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/convert" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +//go:generate mockgen -destination=mocks/task_run_dao.go -package=mocks . ITaskRunDAO +type ITaskRunDAO interface { + // 基础缓存操作 + GetTaskRun(ctx context.Context, id int64) (*entity.TaskRun, error) + SetTaskRun(ctx context.Context, taskRun *entity.TaskRun, ttl time.Duration) error + DeleteTaskRun(ctx context.Context, id int64) error + + // 列表缓存操作 + GetNonFinalTaskRunList(ctx context.Context) ([]*entity.TaskRun, error) + SetNonFinalTaskRunList(ctx context.Context, taskRuns []*entity.TaskRun, ttl time.Duration) error + DeleteNonFinalTaskRunList(ctx context.Context) error + + GetTaskRunListByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) + SetTaskRunListByTask(ctx context.Context, taskID int64, taskRuns []*entity.TaskRun, ttl time.Duration) error + DeleteTaskRunListByTask(ctx context.Context, taskID int64) error + + // 计数缓存操作 + GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) + SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error + DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error + + // 对象列表缓存操作 + GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) + SetObjListWithTaskRun(ctx context.Context, spaceList, botList []string, ttl time.Duration) error + DeleteObjListWithTaskRun(ctx context.Context) error +} + +type TaskRunDAOImpl struct { + cmdable redis.Cmdable +} + +// NewTaskRunDAO creates a new TaskRunDAO instance +func NewTaskRunDAO(cmdable redis.Cmdable) ITaskRunDAO { + return &TaskRunDAOImpl{ + cmdable: cmdable, + } +} + +// 缓存键生成方法 +func (q *TaskRunDAOImpl) makeTaskRunDetailKey(id int64) string { + return fmt.Sprintf("taskrun:detail:%d", id) +} + +func (q *TaskRunDAOImpl) makeNonFinalTaskRunListKey() string { + return "taskrun:list:non_final" +} + +func (q *TaskRunDAOImpl) makeTaskRunListByTaskKey(taskID int64) string { + return fmt.Sprintf("taskrun:list:task:%d", taskID) +} + +func (q *TaskRunDAOImpl) makeTaskRunCountKey(taskID, taskRunID int64) string { + return fmt.Sprintf("taskrun:count:%d:%d", taskID, taskRunID) +} + +func (q *TaskRunDAOImpl) makeObjListWithTaskRunKey() string { + return "taskrun:obj_list" +} + +// 基础缓存操作实现 + +// GetTaskRun 获取单个TaskRun缓存 +func (p *TaskRunDAOImpl) GetTaskRun(ctx context.Context, id int64) (*entity.TaskRun, error) { + key := p.makeTaskRunDetailKey(id) + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil // 缓存未命中 + } + return nil, errorx.Wrapf(err, "redis get taskrun fail, key: %v", key) + } + return convert.NewTaskRunConverter().ToDO(conv.UnsafeStringToBytes(got)) +} + +// SetTaskRun 设置单个TaskRun缓存 +func (p *TaskRunDAOImpl) SetTaskRun(ctx context.Context, taskRun *entity.TaskRun, ttl time.Duration) error { + bytes, err := convert.NewTaskRunConverter().FromDO(taskRun) + if err != nil { + return err + } + key := p.makeTaskRunDetailKey(taskRun.ID) + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set taskrun cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set taskrun key: %v", key) + } + return nil +} + +// DeleteTaskRun 删除单个TaskRun缓存 +func (p *TaskRunDAOImpl) DeleteTaskRun(ctx context.Context, id int64) error { + key := p.makeTaskRunDetailKey(id) + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete taskrun cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete taskrun key: %v", key) + } + return nil +} + +// 列表缓存操作实现 + +// GetNonFinalTaskRunList 获取非终态TaskRun列表缓存 +func (p *TaskRunDAOImpl) GetNonFinalTaskRunList(ctx context.Context) ([]*entity.TaskRun, error) { + key := p.makeNonFinalTaskRunListKey() + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil // 缓存未命中 + } + return nil, errorx.Wrapf(err, "redis get non final taskrun list fail, key: %v", key) + } + + var taskRuns []*entity.TaskRun + if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &taskRuns); err != nil { + return nil, errorx.Wrapf(err, "unmarshal non final taskrun list cache failed") + } + + return taskRuns, nil +} + +// SetNonFinalTaskRunList 设置非终态TaskRun列表缓存 +func (p *TaskRunDAOImpl) SetNonFinalTaskRunList(ctx context.Context, taskRuns []*entity.TaskRun, ttl time.Duration) error { + key := p.makeNonFinalTaskRunListKey() + + bytes, err := json.Marshal(taskRuns) + if err != nil { + return errorx.Wrapf(err, "marshal non final taskrun list cache failed") + } + + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set non final taskrun list cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set non final taskrun list key: %v", key) + } + return nil +} + +// DeleteNonFinalTaskRunList 删除非终态TaskRun列表缓存 +func (p *TaskRunDAOImpl) DeleteNonFinalTaskRunList(ctx context.Context) error { + key := p.makeNonFinalTaskRunListKey() + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete non final taskrun list cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete non final taskrun list key: %v", key) + } + return nil +} + +// GetTaskRunListByTask 获取按Task分组的TaskRun列表缓存 +func (p *TaskRunDAOImpl) GetTaskRunListByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) { + key := p.makeTaskRunListByTaskKey(taskID) + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil // 缓存未命中 + } + return nil, errorx.Wrapf(err, "redis get taskrun list by task fail, key: %v", key) + } + + var taskRuns []*entity.TaskRun + if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &taskRuns); err != nil { + return nil, errorx.Wrapf(err, "unmarshal taskrun list by task cache failed") + } + + return taskRuns, nil +} + +// SetTaskRunListByTask 设置按Task分组的TaskRun列表缓存 +func (p *TaskRunDAOImpl) SetTaskRunListByTask(ctx context.Context, taskID int64, taskRuns []*entity.TaskRun, ttl time.Duration) error { + key := p.makeTaskRunListByTaskKey(taskID) + + bytes, err := json.Marshal(taskRuns) + if err != nil { + return errorx.Wrapf(err, "marshal taskrun list by task cache failed") + } + + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set taskrun list by task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set taskrun list by task key: %v", key) + } + return nil +} + +// DeleteTaskRunListByTask 删除按Task分组的TaskRun列表缓存 +func (p *TaskRunDAOImpl) DeleteTaskRunListByTask(ctx context.Context, taskID int64) error { + key := p.makeTaskRunListByTaskKey(taskID) + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete taskrun list by task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete taskrun list by task key: %v", key) + } + return nil +} + +// 计数缓存操作实现 + +// GetTaskRunCount 获取TaskRun计数缓存 +func (p *TaskRunDAOImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { + key := p.makeTaskRunCountKey(taskID, taskRunID) + got, err := p.cmdable.Get(ctx, key).Int64() + if err != nil { + if redis.IsNilError(err) { + return -1, nil // 缓存未命中,返回-1表示未缓存 + } + return 0, errorx.Wrapf(err, "redis get taskrun count fail, key: %v", key) + } + return got, nil +} + +// SetTaskRunCount 设置TaskRun计数缓存 +func (p *TaskRunDAOImpl) SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error { + key := p.makeTaskRunCountKey(taskID, taskRunID) + if err := p.cmdable.Set(ctx, key, count, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set taskrun count cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set taskrun count key: %v", key) + } + return nil +} + +// DeleteTaskRunCount 删除TaskRun计数缓存 +func (p *TaskRunDAOImpl) DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { + key := p.makeTaskRunCountKey(taskID, taskRunID) + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete taskrun count cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete taskrun count key: %v", key) + } + return nil +} + +// 对象列表缓存操作实现 + +// ObjListWithTaskRunCache 对象列表缓存结构 +type ObjListWithTaskRunCache struct { + SpaceList []string `json:"space_list"` + BotList []string `json:"bot_list"` + CachedAt time.Time `json:"cached_at"` +} + +// GetObjListWithTaskRun 获取对象列表缓存 +func (p *TaskRunDAOImpl) GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) { + key := p.makeObjListWithTaskRunKey() + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil, nil // 缓存未命中 + } + return nil, nil, errorx.Wrapf(err, "redis get obj list with taskrun fail, key: %v", key) + } + + var cache ObjListWithTaskRunCache + if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &cache); err != nil { + return nil, nil, errorx.Wrapf(err, "unmarshal obj list with taskrun cache failed") + } + + return cache.SpaceList, cache.BotList, nil +} + +// SetObjListWithTaskRun 设置对象列表缓存 +func (p *TaskRunDAOImpl) SetObjListWithTaskRun(ctx context.Context, spaceList, botList []string, ttl time.Duration) error { + key := p.makeObjListWithTaskRunKey() + + cache := ObjListWithTaskRunCache{ + SpaceList: spaceList, + BotList: botList, + CachedAt: time.Now(), + } + + bytes, err := json.Marshal(cache) + if err != nil { + return errorx.Wrapf(err, "marshal obj list with taskrun cache failed") + } + + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set obj list with taskrun cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set obj list with taskrun key: %v", key) + } + return nil +} + +// DeleteObjListWithTaskRun 删除对象列表缓存 +func (p *TaskRunDAOImpl) DeleteObjListWithTaskRun(ctx context.Context) error { + key := p.makeObjListWithTaskRunKey() + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete obj list with taskrun cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete obj list with taskrun key: %v", key) + } + return nil +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 1fa624428..8dff15b17 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -15,19 +15,22 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/dao" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) -func NewTaskRepoImpl(TaskDao mysql.ITaskDao, idGenerator idgen.IIDGenerator, taskRedisDao dao.ITaskDAO) repo.ITaskRepo { +func NewTaskRepoImpl(TaskDao mysql.ITaskDao, idGenerator idgen.IIDGenerator, taskRedisDao dao.ITaskDAO, taskRunDao mysql.ITaskRunDao) repo.ITaskRepo { return &TaskRepoImpl{ TaskDao: TaskDao, idGenerator: idGenerator, TaskRedisDao: taskRedisDao, + TaskRunDao: taskRunDao, } } type TaskRepoImpl struct { TaskDao mysql.ITaskDao + TaskRunDao mysql.ITaskRunDao TaskRedisDao dao.ITaskDAO idGenerator idgen.IIDGenerator } @@ -62,6 +65,19 @@ func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64 taskDO := convertor.TaskPO2DO(TaskPo) + TaskRunPo, _, err := v.TaskRunDao.ListTaskRuns(ctx, mysql.ListTaskRunParam{ + WorkspaceID: ptr.Of(taskDO.WorkspaceID), + TaskID: ptr.Of(taskDO.ID), + ReqLimit: 1000, + ReqOffset: 0, + }) + for _, tr := range TaskRunPo { + taskDO.TaskRuns = append(taskDO.TaskRuns, convertor.TaskRunPO2DO(tr)) + } + if err != nil { + return nil, err + } + // 异步缓存到 Redis go func() { if err := v.TaskRedisDao.SetTask(context.Background(), taskDO, TaskDetailTTL); err != nil { @@ -121,11 +137,18 @@ func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityT if err != nil { return err } + for _, tr := range do.TaskRuns { + TaskRunPo := convertor.TaskRunDO2PO(tr) + err = v.TaskRunDao.UpdateTaskRun(ctx, TaskRunPo) + if err != nil { + return err + } + } // 数据库操作成功后,更新缓存 go func() { // 更新单个任务缓存 - if err := v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { + if err = v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { logs.Error("failed to update task cache", "id", do.ID, "err", err) } diff --git a/backend/modules/observability/infra/repo/task_run.go b/backend/modules/observability/infra/repo/task_run.go new file mode 100755 index 000000000..13878b35d --- /dev/null +++ b/backend/modules/observability/infra/repo/task_run.go @@ -0,0 +1,434 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package repo + +import ( + "context" + "fmt" + "strconv" + "time" + + "github.com/coze-dev/coze-loop/backend/infra/idgen" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/convertor" + taskRunDao "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/dao" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +func NewTaskRunRepoImpl(taskRunDao mysql.ITaskRunDao, idGenerator idgen.IIDGenerator, taskRunRedisDao taskRunDao.ITaskRunDAO) repo.ITaskRunRepo { + return &TaskRunRepoImpl{ + TaskRunDao: taskRunDao, + idGenerator: idGenerator, + TaskRunRedisDao: taskRunRedisDao, + } +} + +type TaskRunRepoImpl struct { + TaskRunDao mysql.ITaskRunDao + TaskRunRedisDao taskRunDao.ITaskRunDAO + idGenerator idgen.IIDGenerator +} + +// 缓存 TTL 常量 +const ( + TaskRunDetailTTL = 15 * time.Minute // TaskRun缓存15分钟 + NonFinalTaskRunListTTL = 30 * time.Second // 非终态TaskRun缓存30秒 + TaskRunListByTaskTTL = 5 * time.Minute // 按Task分组的TaskRun列表缓存5分钟 + TaskRunCountTTL = 10 * time.Minute // TaskRun计数缓存10分钟 + ObjListWithTaskRunTTL = 15 * time.Minute // 对象列表缓存15分钟 +) + +// GetTaskRun 获取单个TaskRun +func (v *TaskRunRepoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*entity.TaskRun, error) { + // 先查 Redis 缓存 + cachedTaskRun, err := v.TaskRunRedisDao.GetTaskRun(ctx, id) + if err != nil { + logs.CtxWarn(ctx, "failed to get taskrun from redis cache", "id", id, "err", err) + } else if cachedTaskRun != nil { + // 验证权限(workspaceID 和 taskID) + if workspaceID != nil && cachedTaskRun.WorkspaceID != *workspaceID { + return nil, nil // 权限不符,返回空 + } + if taskID != nil && cachedTaskRun.TaskID != *taskID { + return nil, nil // 权限不符,返回空 + } + return cachedTaskRun, nil + } + + // 缓存未命中,查询数据库 + taskRunPo, err := v.TaskRunDao.GetTaskRun(ctx, id, workspaceID, taskID) + if err != nil { + return nil, err + } + + taskRunDO := convertor.TaskRunPO2DO(taskRunPo) + + // 异步缓存到 Redis + go func() { + if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), taskRunDO, TaskRunDetailTTL); err != nil { + logs.Error("failed to set taskrun cache", "id", id, "err", err) + } + }() + + return taskRunDO, nil +} + +// ListTaskRuns 获取TaskRun列表 +func (v *TaskRunRepoImpl) ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) { + results, total, err := v.TaskRunDao.ListTaskRuns(ctx, param) + if err != nil { + return nil, 0, err + } + resp := make([]*entity.TaskRun, len(results)) + for i, result := range results { + resp[i] = convertor.TaskRunPO2DO(result) + } + return resp, total, nil +} + +// CreateTaskRun 创建TaskRun +func (v *TaskRunRepoImpl) CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) { + id, err := v.idGenerator.GenID(ctx) + if err != nil { + return 0, err + } + taskRunPo := convertor.TaskRunDO2PO(do) + taskRunPo.ID = id + + // 先执行数据库操作 + createdID, err := v.TaskRunDao.CreateTaskRun(ctx, taskRunPo) + if err != nil { + return 0, err + } + + // 数据库操作成功后,更新缓存 + do.ID = createdID + go func() { + // 缓存新创建的TaskRun + if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), do, TaskRunDetailTTL); err != nil { + logs.Error("failed to set taskrun cache after create", "id", createdID, "err", err) + } + + // 清理相关列表缓存 + v.clearTaskRunListCaches(context.Background(), do.WorkspaceID, do.TaskID) + }() + + return createdID, nil +} + +// UpdateTaskRun 更新TaskRun +func (v *TaskRunRepoImpl) UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error { + taskRunPo := convertor.TaskRunDO2PO(do) + + // 先执行数据库操作 + err := v.TaskRunDao.UpdateTaskRun(ctx, taskRunPo) + if err != nil { + return err + } + + // 数据库操作成功后,更新缓存 + go func() { + // 更新单个TaskRun缓存 + if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), do, TaskRunDetailTTL); err != nil { + logs.Error("failed to update taskrun cache", "id", do.ID, "err", err) + } + + // 清理相关列表缓存 + v.clearTaskRunListCaches(context.Background(), do.WorkspaceID, do.TaskID) + }() + + return nil +} + +// DeleteTaskRun 删除TaskRun +func (v *TaskRunRepoImpl) DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error { + // 先执行数据库操作 + err := v.TaskRunDao.DeleteTaskRun(ctx, id, workspaceID, userID) + if err != nil { + return err + } + + // 数据库操作成功后,删除缓存 + go func() { + // 删除单个TaskRun缓存 + if err := v.TaskRunRedisDao.DeleteTaskRun(context.Background(), id); err != nil { + logs.Error("failed to delete taskrun cache", "id", id, "err", err) + } + + // 清理相关列表缓存 + v.clearTaskRunListCaches(context.Background(), workspaceID, 0) + }() + + return nil +} + +// ListNonFinalTaskRun 获取非终态TaskRun列表 +func (v *TaskRunRepoImpl) ListNonFinalTaskRun(ctx context.Context) ([]*entity.TaskRun, error) { + // 先查 Redis 缓存 + cachedTaskRuns, err := v.TaskRunRedisDao.GetNonFinalTaskRunList(ctx) + if err != nil { + logs.CtxWarn(ctx, "failed to get non final taskrun list from redis cache", "err", err) + } else if cachedTaskRuns != nil { + return cachedTaskRuns, nil + } + + // 缓存未命中,查询数据库 + results, err := v.TaskRunDao.ListNonFinalTaskRun(ctx) + if err != nil { + return nil, err + } + + resp := make([]*entity.TaskRun, len(results)) + for i, result := range results { + resp[i] = convertor.TaskRunPO2DO(result) + } + + // 异步缓存到 Redis(短TTL,因为非最终状态变化频繁) + go func() { + if err := v.TaskRunRedisDao.SetNonFinalTaskRunList(context.Background(), resp, NonFinalTaskRunListTTL); err != nil { + logs.Error("failed to set non final taskrun list cache", "err", err) + } + }() + + return resp, nil +} + +// ListNonFinalTaskRunByTaskID 按TaskID获取非终态TaskRun +func (v *TaskRunRepoImpl) ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) { + // 先尝试从按Task分组的缓存中获取,然后过滤非终态 + cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) + if err != nil { + logs.CtxWarn(ctx, "failed to get taskrun list by task from redis cache", "taskID", taskID, "err", err) + } else if cachedTaskRuns != nil { + // 过滤出非终态TaskRun + var nonFinalTaskRuns []*entity.TaskRun + for _, tr := range cachedTaskRuns { + if isNonFinalStatus(tr.RunStatus) { + nonFinalTaskRuns = append(nonFinalTaskRuns, tr) + } + } + return nonFinalTaskRuns, nil + } + + // 缓存未命中,查询数据库 + results, err := v.TaskRunDao.ListNonFinalTaskRunByTaskID(ctx, taskID) + if err != nil { + return nil, err + } + + resp := make([]*entity.TaskRun, len(results)) + for i, result := range results { + resp[i] = convertor.TaskRunPO2DO(result) + } + + return resp, nil +} + +// ListNonFinalTaskRunBySpaceID 按空间ID获取非终态TaskRun +func (v *TaskRunRepoImpl) ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID string) []*entity.TaskRun { + // 缓存未命中,查询数据库 + spaceIDInt, _ := strconv.ParseInt(spaceID, 10, 64) + results, err := v.TaskRunDao.ListNonFinalTaskRunBySpaceID(ctx, spaceIDInt) + if err != nil { + logs.CtxError(ctx, "failed to get non final taskrun by space id", "spaceID", spaceID, "err", err) + return nil + } + resp := make([]*entity.TaskRun, len(results)) + for i, result := range results { + resp[i] = convertor.TaskRunPO2DO(result) + } + return resp +} + +// UpdateTaskRunWithOCC 乐观并发控制更新 +func (v *TaskRunRepoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { + // 先执行数据库操作 + logs.CtxInfo(ctx, "UpdateTaskRunWithOCC", "id", id, "workspaceID", workspaceID, "updateMap", updateMap) + err := v.TaskRunDao.UpdateTaskRunWithOCC(ctx, id, workspaceID, updateMap) + if err != nil { + return err + } + + // 数据库操作成功后,删除缓存(因为无法直接更新部分字段) + go func() { + // 删除单个TaskRun缓存,下次查询时会重新加载 + if err := v.TaskRunRedisDao.DeleteTaskRun(context.Background(), id); err != nil { + logs.Error("failed to delete taskrun cache after OCC update", "id", id, "err", err) + } + + // 清理相关列表缓存 + v.clearTaskRunListCaches(context.Background(), workspaceID, 0) + + // 清理非最终状态TaskRun缓存(状态可能发生变化) + if err := v.TaskRunRedisDao.DeleteNonFinalTaskRunList(context.Background()); err != nil { + logs.Error("failed to delete non final taskrun list cache after OCC update", "err", err) + } + }() + + return nil +} + +// GetObjListWithTaskRun 获取有TaskRun的对象列表 +func (v *TaskRunRepoImpl) GetObjListWithTaskRun(ctx context.Context) ([]string, []string) { + // 先查 Redis 缓存 + spaceList, botList, err := v.TaskRunRedisDao.GetObjListWithTaskRun(ctx) + if err != nil { + logs.CtxWarn(ctx, "failed to get obj list with taskrun from redis cache", "err", err) + } else if spaceList != nil || botList != nil { + return spaceList, botList + } + + // 缓存未命中,查询数据库 + spaceList, botList, err = v.TaskRunDao.GetObjListWithTaskRun(ctx) + if err != nil { + logs.CtxWarn(ctx, "failed to get obj list with taskrun from mysql", "err", err) + return nil, nil + } + + // 异步缓存结果 + go func() { + if err := v.TaskRunRedisDao.SetObjListWithTaskRun(context.Background(), spaceList, botList, ObjListWithTaskRunTTL); err != nil { + logs.Error("failed to set obj list with taskrun cache", "err", err) + } + }() + + return spaceList, botList +} + +// ListActiveTaskRunsByTask 获取Task的活跃TaskRun列表 +func (v *TaskRunRepoImpl) ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) { + // 先查缓存 + cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) + if err != nil { + logs.CtxWarn(ctx, "failed to get taskrun list by task from redis", "taskID", taskID, "err", err) + } else if cachedTaskRuns != nil { + // 过滤出活跃状态的TaskRun + var activeTaskRuns []*entity.TaskRun + for _, tr := range cachedTaskRuns { + if isActiveStatus(tr.RunStatus) { + activeTaskRuns = append(activeTaskRuns, tr) + } + } + return activeTaskRuns, nil + } + + // 缓存未命中,查询数据库 + results, err := v.TaskRunDao.ListActiveTaskRunsByTask(ctx, taskID) + if err != nil { + return nil, err + } + + resp := make([]*entity.TaskRun, len(results)) + for i, result := range results { + resp[i] = convertor.TaskRunPO2DO(result) + } + + // 异步缓存 + go func() { + if err := v.TaskRunRedisDao.SetTaskRunListByTask(context.Background(), taskID, resp, TaskRunListByTaskTTL); err != nil { + logs.Error("failed to set taskrun list by task cache", "taskID", taskID, "err", err) + } + }() + + return resp, nil +} + +// GetLatestTaskRunByTask 获取Task的最新TaskRun +func (v *TaskRunRepoImpl) GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*entity.TaskRun, error) { + // 先查缓存 + cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) + if err != nil { + logs.CtxWarn(ctx, "failed to get taskrun list by task from redis", "taskID", taskID, "err", err) + } else if cachedTaskRuns != nil && len(cachedTaskRuns) > 0 { + // 缓存中的TaskRun列表应该已经按创建时间排序,返回第一个 + return cachedTaskRuns[0], nil + } + + // 缓存未命中,查询数据库 + result, err := v.TaskRunDao.GetLatestTaskRunByTask(ctx, taskID) + if err != nil { + return nil, err + } + if result == nil { + return nil, nil + } + + taskRunDO := convertor.TaskRunPO2DO(result) + return taskRunDO, nil +} + +// ListTaskRunsByStatus 按状态获取TaskRun列表 +func (v *TaskRunRepoImpl) ListTaskRunsByStatus(ctx context.Context, status string) ([]*entity.TaskRun, error) { + // 直接查询数据库,不缓存(状态查询通常是临时性的) + results, err := v.TaskRunDao.ListTaskRunsByStatus(ctx, status) + if err != nil { + return nil, err + } + + resp := make([]*entity.TaskRun, len(results)) + for i, result := range results { + resp[i] = convertor.TaskRunPO2DO(result) + } + + return resp, nil +} + +// GetTaskRunCount 获取TaskRun计数 +func (v *TaskRunRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { + // 先查 Redis 缓存 + count, err := v.TaskRunRedisDao.GetTaskRunCount(ctx, taskID, taskRunID) + if err != nil { + logs.CtxWarn(ctx, "failed to get taskrun count from redis cache", "taskID", taskID, "taskRunID", taskRunID, "err", err) + } else if count != -1 { + return count, nil + } + + // 缓存未命中,这里可以根据业务需求实现具体的计数逻辑 + // 目前返回0,实际使用时需要根据业务需求实现 + return 0, nil +} + +// clearTaskRunListCaches 清理与指定 workspace 和 task 相关的列表缓存 +func (v *TaskRunRepoImpl) clearTaskRunListCaches(ctx context.Context, workspaceID, taskID int64) { + // 清理非终态TaskRun列表缓存 + if err := v.TaskRunRedisDao.DeleteNonFinalTaskRunList(ctx); err != nil { + logs.Error("failed to delete non final taskrun list cache", "err", err) + } + + // 清理按Task分组的TaskRun列表缓存 + if taskID > 0 { + if err := v.TaskRunRedisDao.DeleteTaskRunListByTask(ctx, taskID); err != nil { + logs.Error("failed to delete taskrun list by task cache", "taskID", taskID, "err", err) + } + } + + // 清理对象列表缓存 + if err := v.TaskRunRedisDao.DeleteObjListWithTaskRun(ctx); err != nil { + logs.Error("failed to delete obj list with taskrun cache", "err", err) + } +} + +// isNonFinalStatus 检查是否为非终态状态 +func isNonFinalStatus(status string) bool { + nonFinalStatuses := []string{"pending", "running", "paused", "retrying"} + for _, s := range nonFinalStatuses { + if status == s { + return true + } + } + return false +} + +// isActiveStatus 检查是否为活跃状态 +func isActiveStatus(status string) bool { + activeStatuses := []string{"running", "retrying"} + for _, s := range activeStatuses { + if status == s { + return true + } + } + return false +} \ No newline at end of file From 82dbdffeeb6e77fbc18edd99912f86a4135cf7d2 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 14:54:04 +0800 Subject: [PATCH 129/462] feat: [Coda] implement complete TaskRun processing logic with cache strategy (LogID: 20250910132128010091106179396D4C8) Co-Authored-By: Coda --- .../infra/repo/mysql/task_run.go | 161 +++++++++++++++++- .../observability/infra/repo/task_run.go | 1 - 2 files changed, 160 insertions(+), 2 deletions(-) mode change 100644 => 100755 backend/modules/observability/infra/repo/mysql/task_run.go diff --git a/backend/modules/observability/infra/repo/mysql/task_run.go b/backend/modules/observability/infra/repo/mysql/task_run.go old mode 100644 new mode 100755 index d6e4b0d3b..d85056bd4 --- a/backend/modules/observability/infra/repo/mysql/task_run.go +++ b/backend/modules/observability/infra/repo/mysql/task_run.go @@ -20,6 +20,13 @@ import ( "gorm.io/gorm" ) +// 默认限制条数 +const ( + DefaultTaskRunLimit = 20 + MaxTaskRunLimit = 501 + DefaultTaskRunOffset = 0 +) + type ListTaskRunParam struct { WorkspaceID *int64 TaskID *int64 @@ -31,11 +38,22 @@ type ListTaskRunParam struct { //go:generate mockgen -destination=mocks/task_run.go -package=mocks . ITaskRunDao type ITaskRunDao interface { + // 基础CRUD操作 GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*model.ObservabilityTaskRun, error) CreateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) (int64, error) UpdateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) error DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error ListTaskRuns(ctx context.Context, param ListTaskRunParam) ([]*model.ObservabilityTaskRun, int64, error) + + // 业务特定方法 + ListNonFinalTaskRun(ctx context.Context) ([]*model.ObservabilityTaskRun, error) + ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) + ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID int64) ([]*model.ObservabilityTaskRun, error) + UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error + GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) + ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) + GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*model.ObservabilityTaskRun, error) + ListTaskRunsByStatus(ctx context.Context, status string) ([]*model.ObservabilityTaskRun, error) } func NewTaskRunDaoImpl(db db.Provider) ITaskRunDao { @@ -48,6 +66,35 @@ type TaskRunDaoImpl struct { dbMgr db.Provider } +// TaskRun非终态状态定义 +var NonFinalTaskRunStatuses = []string{ + "pending", // 等待执行 + "running", // 执行中 + "paused", // 暂停 + "retrying", // 重试中 +} + +// 活跃状态定义(非终态状态的子集) +var ActiveTaskRunStatuses = []string{ + "running", // 执行中 + "retrying", // 重试中 +} + +// 计算分页参数 +func calculateTaskRunPagination(reqLimit, reqOffset int32) (int, int) { + limit := DefaultTaskRunLimit + if reqLimit > 0 && reqLimit < MaxTaskRunLimit { + limit = int(reqLimit) + } + + offset := DefaultTaskRunOffset + if reqOffset > 0 { + offset = int(reqOffset) + } + + return limit, offset +} + func (v *TaskRunDaoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*model.ObservabilityTaskRun, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun qd := q.WithContext(ctx).Where(q.ID.Eq(id)) @@ -131,7 +178,7 @@ func (v *TaskRunDaoImpl) ListTaskRuns(ctx context.Context, param ListTaskRunPara } // 计算分页参数 - limit, offset := calculatePagination(param.ReqLimit, param.ReqOffset) + limit, offset := calculateTaskRunPagination(param.ReqLimit, param.ReqOffset) results, err := qd.Limit(limit).Offset(offset).Find() if err != nil { return nil, total, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) @@ -158,3 +205,115 @@ func (d *TaskRunDaoImpl) order(q *query.Query, orderBy string, asc bool) field.E } return orderExpr.Desc() } + +// ListNonFinalTaskRun 获取非终态TaskRun列表 +func (v *TaskRunDaoImpl) ListNonFinalTaskRun(ctx context.Context) ([]*model.ObservabilityTaskRun, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.RunStatus.In(NonFinalTaskRunStatuses...)) + + results, err := qd.Find() + if err != nil { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, nil +} + +// ListNonFinalTaskRunByTaskID 按TaskID获取非终态TaskRun +func (v *TaskRunDaoImpl) ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.TaskID.Eq(taskID)).Where(q.RunStatus.In(NonFinalTaskRunStatuses...)) + + results, err := qd.Find() + if err != nil { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, nil +} + +// ListNonFinalTaskRunBySpaceID 按空间ID获取非终态TaskRun +func (v *TaskRunDaoImpl) ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID int64) ([]*model.ObservabilityTaskRun, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.WorkspaceID.Eq(spaceID)).Where(q.RunStatus.In(NonFinalTaskRunStatuses...)) + + results, err := qd.Find() + if err != nil { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, nil +} + +// UpdateTaskRunWithOCC 乐观并发控制更新 +func (v *TaskRunDaoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.ID.Eq(id)).Where(q.WorkspaceID.Eq(workspaceID)) + + // 执行更新操作 + info, err := qd.Updates(updateMap) + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + + // 检查是否有行被更新(乐观并发控制) + if info.RowsAffected == 0 { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found or version conflict")) + } + + logs.CtxInfo(ctx, "TaskRun updated with OCC", "id", id, "workspaceID", workspaceID, "rowsAffected", info.RowsAffected) + return nil +} + +// GetObjListWithTaskRun 获取有TaskRun的对象列表 +func (v *TaskRunDaoImpl) GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + + // 获取不重复的WorkspaceID列表 + var spaceList []string + err := q.WithContext(ctx).Select(q.WorkspaceID).Distinct().Scan(&spaceList) + if err != nil { + return nil, nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + + // TaskRun表中没有bot相关字段,返回空的bot列表 + var botList []string + + return spaceList, botList, nil +} + +// ListActiveTaskRunsByTask 获取Task的活跃TaskRun列表 +func (v *TaskRunDaoImpl) ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.TaskID.Eq(taskID)).Where(q.RunStatus.In(ActiveTaskRunStatuses...)) + + results, err := qd.Order(q.CreatedAt.Desc()).Find() + if err != nil { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, nil +} + +// GetLatestTaskRunByTask 获取Task的最新TaskRun +func (v *TaskRunDaoImpl) GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*model.ObservabilityTaskRun, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.TaskID.Eq(taskID)).Order(q.CreatedAt.Desc()) + + taskRun, err := qd.First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil // 没有找到TaskRun,返回nil而不是错误 + } + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return taskRun, nil +} + +// ListTaskRunsByStatus 按状态获取TaskRun列表 +func (v *TaskRunDaoImpl) ListTaskRunsByStatus(ctx context.Context, status string) ([]*model.ObservabilityTaskRun, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.RunStatus.Eq(status)) + + results, err := qd.Order(q.CreatedAt.Desc()).Find() + if err != nil { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + return results, nil +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/task_run.go b/backend/modules/observability/infra/repo/task_run.go index 13878b35d..faaf5b2c5 100755 --- a/backend/modules/observability/infra/repo/task_run.go +++ b/backend/modules/observability/infra/repo/task_run.go @@ -5,7 +5,6 @@ package repo import ( "context" - "fmt" "strconv" "time" From a133d9bc114ff87ba33ad5e0b0959da34d064eec Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 14:54:46 +0800 Subject: [PATCH 130/462] feat:fix taskrun --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 6448ab138..3f21bd8c1 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -293,6 +293,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } tasks := tconv.TaskPOs2DOs(ctx, taskPOs, nil) logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) + // 遍历任务 for _, taskInfo := range tasks { endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) From dc4887dd948a60c65f782520e3c463df43b7076f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 14:57:30 +0800 Subject: [PATCH 131/462] feat:wire gen --- backend/modules/observability/application/wire_gen.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 6a56255b7..fde860cf4 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -94,7 +94,8 @@ func InitTraceApplication(db2 db.Provider, ckDb ck.Provider, redis2 redis.Cmdabl iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) - iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO) + iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao) iTraceService, err := service.NewTraceServiceImpl(iTraceRepo, iTraceConfig, iTraceProducer, iAnnotationProducer, iTraceMetrics, traceFilterProcessorBuilder, iTenantProvider, iEvaluatorRPCAdapter, iTaskRepo) if err != nil { return nil, err @@ -149,7 +150,8 @@ func InitOpenAPIApplication(mqFactory mq.IFactory, configFactory conf.IConfigLoa iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) - iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO) + iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao) iTraceService, err := service.NewTraceServiceImpl(iTraceRepo, iTraceConfig, iTraceProducer, iAnnotationProducer, iTraceMetrics, traceFilterProcessorBuilder, iTenantProvider, iEvaluatorRPCAdapter, iTaskRepo) if err != nil { return nil, err @@ -193,7 +195,8 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, redis2 redis.Cmdable, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client) (ITaskApplication, error) { iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) - iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO) + iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao) iUserProvider := user.NewUserRPCProvider(userClient) iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iUserProvider, idgen2) if err != nil { From 69563290277d1a5d4d07b56019916ed84f331607 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 15:08:47 +0800 Subject: [PATCH 132/462] feat:fix time --- .../observability/domain/task/taskexe/tracehub/subscriber.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index 2bc4e8147..d27a0bfc2 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -88,7 +88,7 @@ func (s *spanSubscriber) AddSpan(ctx context.Context, span *loop_span.Span) erro if taskRunConfig.RunEndAt.UnixMilli() < time.Now().UnixMilli() || taskRunConfig.RunStartAt.UnixMilli() > time.Now().UnixMilli() { return nil } - if Usec2Msec(span.StartTime) < taskRunConfig.RunStartAt.UnixMilli() { + if span.StartTime < taskRunConfig.RunStartAt.UnixMilli() { logs.CtxWarn(ctx, "span start time is before task cycle start time, trace_id=%s, span_id=%s", span.TraceID, span.SpanID) return nil } From ceb52fde5dc62e1e1f1da06bcf2c51115aeed727 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 15:35:47 +0800 Subject: [PATCH 133/462] feat: [Coda] implement TaskRunPO2DTO converter with complete field mapping (LogID: 20250910132128010091106179396D4C8) Co-Authored-By: Coda --- .../application/convertor/task/task_run.go | 89 +++++++++++++++++++ .../task/taskexe/processor/auto_evaluate.go | 17 ++-- 2 files changed, 99 insertions(+), 7 deletions(-) create mode 100644 backend/modules/observability/application/convertor/task/task_run.go diff --git a/backend/modules/observability/application/convertor/task/task_run.go b/backend/modules/observability/application/convertor/task/task_run.go new file mode 100644 index 000000000..e072c6522 --- /dev/null +++ b/backend/modules/observability/application/convertor/task/task_run.go @@ -0,0 +1,89 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package task + +import ( + "context" + + "github.com/bytedance/gg/gptr" + "github.com/bytedance/sonic" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + entity_common "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/common" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +func TaskRunPOs2DOs(ctx context.Context, taskRunPOs []*entity.TaskRun, userInfos map[string]*entity_common.UserInfo) []*task.TaskRun { + var taskRunList []*task.TaskRun + if len(taskRunPOs) == 0 { + return taskRunList + } + for _, v := range taskRunPOs { + taskRunDO := TaskRunPO2DTO(ctx, v, userInfos) + taskRunList = append(taskRunList, taskRunDO) + } + return taskRunList +} +func TaskRunPO2DTO(ctx context.Context, v *entity.TaskRun, userMap map[string]*entity_common.UserInfo) *task.TaskRun { + if v == nil { + return nil + } + taskRunInfo := &task.TaskRun{ + ID: v.ID, + WorkspaceID: v.WorkspaceID, + TaskID: v.TaskID, + TaskType: v.TaskType, + RunStatus: v.RunStatus, + RunDetail: RunDetailPO2DTO(ctx, v.RunDetail), + BackfillRunDetail: RunDetailPO2DTO(ctx, v.BackfillDetail), + RunStartAt: v.RunStartAt.UnixMilli(), + RunEndAt: v.RunEndAt.UnixMilli(), + TaskRunConfig: TaskRunConfigPO2DTO(ctx, v.RunConfig), + BaseInfo: buildTaskRunBaseInfo(v, userMap), + } + return taskRunInfo +} + +// RunDetailPO2DTO 将JSON字符串转换为RunDetail结构体 +func RunDetailPO2DTO(ctx context.Context, runDetail *string) *task.RunDetail { + if runDetail == nil || *runDetail == "" { + return nil + } + + var runDetailDTO task.RunDetail + if err := sonic.Unmarshal([]byte(*runDetail), &runDetailDTO); err != nil { + logs.CtxError(ctx, "RunDetailPO2DTO sonic.Unmarshal err:%v", err) + return nil + } + + return &runDetailDTO +} + +// TaskRunConfigPO2DTO 将JSON字符串转换为TaskRunConfig结构体 +func TaskRunConfigPO2DTO(ctx context.Context, runConfig *string) *task.TaskRunConfig { + if runConfig == nil || *runConfig == "" { + return nil + } + + var runConfigDTO task.TaskRunConfig + if err := sonic.Unmarshal([]byte(*runConfig), &runConfigDTO); err != nil { + logs.CtxError(ctx, "TaskRunConfigPO2DTO sonic.Unmarshal err:%v", err) + return nil + } + + return &runConfigDTO +} + +// buildTaskRunBaseInfo 构建BaseInfo信息 +func buildTaskRunBaseInfo(v *entity.TaskRun, userMap map[string]*entity_common.UserInfo) *common.BaseInfo { + // 注意:TaskRun实体中没有CreatedBy和UpdatedBy字段 + // 使用空字符串作为默认值 + return &common.BaseInfo{ + CreatedAt: gptr.Of(v.CreatedAt.UnixMilli()), + UpdatedAt: gptr.Of(v.UpdatedAt.UnixMilli()), + CreatedBy: &common.UserInfo{UserID: gptr.Of("")}, + UpdatedBy: &common.UserInfo{UserID: gptr.Of("")}, + } +} \ No newline at end of file diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index a81fe2237..d432d8304 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -9,6 +9,8 @@ import ( "strconv" "time" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/apaxa-go/helper/strconvh" "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" @@ -59,37 +61,38 @@ func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any, w } func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { - cfg, ok := config.(*task.TaskRun) + cfg, ok := config.(*task_entity.TaskRun) if !ok { return taskexe.ErrInvalidConfig } + taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) workspaceID := trigger.Task.GetWorkspaceID() session := getSession(ctx, trigger.Task) var mapping []*task.FieldMapping for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { mapping = append(mapping, autoEvaluateConfig.FieldMappings...) } - turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema()) + turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema()) if len(turns) == 0 { logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") return nil } _, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ WorkspaceID: workspaceID, - EvaluationSetID: cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), + EvaluationSetID: taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), Items: []*eval_set.EvaluationSetItem{ { WorkspaceID: gptr.Of(workspaceID), - EvaluationSetID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID()), - SchemaID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchemaID()), + EvaluationSetID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID()), + SchemaID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchemaID()), Turns: turns, ItemKey: gptr.Of(trigger.Span.SpanID), }, }, SkipInvalidItems: gptr.Of(true), AllowPartialAdd: gptr.Of(true), - ExperimentID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), - ExperimentRunID: gptr.Of(cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), + ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), + ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID())}, Session: session, }) From 5a955c6cf14e978d1c9adc0279a4e07cfa56f53f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 15:51:24 +0800 Subject: [PATCH 134/462] feat:fix trace hub --- .../task/taskexe/processor/auto_evaluate.go | 55 +++++++++++++++---- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index d432d8304..db5e902f3 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -9,7 +9,9 @@ import ( "strconv" "time" + "github.com/bytedance/sonic" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/apaxa-go/helper/strconvh" "github.com/bytedance/gg/gptr" @@ -221,6 +223,12 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas return err } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) + + evaluationSetConfig, err := p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, currentTask.GetWorkspaceID(), datasetID, category) + if err != nil { + logs.CtxError(ctx, "[task-debug] GetEvaluationSet err:%v", err) + return err + } // 3、更新任务状态 //if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { // updateMap := map[string]interface{}{ @@ -268,18 +276,30 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas } logs.CtxInfo(ctx, "Creating taskrun with cycle: startAt=%d, endAt=%d, currentTime=%d", cycleStartAt, cycleEndAt, currentTime) // 5、创建 taskrun + taskRunConfig := &task.TaskRunConfig{ + AutoEvaluateRunConfig: &task.AutoEvaluateRunConfig{ + ExptID: exptID, + ExptRunID: exptRunID, + EvalID: datasetID, + SchemaID: evaluationSetConfig.DatasetVersion.DatasetSchema.ID, + Schema: ptr.Of(ToJSONString(ctx, evaluationSetConfig.DatasetVersion.DatasetSchema.FieldSchemas)), + EndAt: effectiveTime.GetEndAt(), + CycleStartAt: cycleStartAt, + CycleEndAt: cycleEndAt, + Status: task.TaskStatusRunning, + }, + } taskConfig.TaskRuns = append(taskConfig.TaskRuns, &task_entity.TaskRun{ - ID: exptID, - TaskID: currentTask.GetID(), - WorkspaceID: currentTask.GetWorkspaceID(), - TaskType: currentTask.GetTaskType(), - RunStatus: task.RunStatusRunning, - RunDetail: nil, - BackfillDetail: nil, - RunStartAt: time.UnixMilli(cycleStartAt), - RunEndAt: time.UnixMilli(cycleEndAt), - CreatedAt: time.Now(), - UpdatedAt: time.Now(), + ID: exptID, + TaskID: currentTask.GetID(), + WorkspaceID: currentTask.GetWorkspaceID(), + TaskType: currentTask.GetTaskType(), + RunStatus: task.RunStatusRunning, + RunStartAt: time.UnixMilli(cycleStartAt), + RunEndAt: time.UnixMilli(cycleEndAt), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), }) for _, run := range taskConfig.TaskRuns { logs.CtxInfo(ctx, "taskConfig:%+v", &run) @@ -295,6 +315,19 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas } +func ToJSONString(ctx context.Context, obj interface{}) string { + if obj == nil { + return "" + } + jsonData, err := sonic.Marshal(obj) + if err != nil { + logs.CtxError(ctx, "JSON marshal error: %v", err) + return "" + } + jsonStr := string(jsonData) + return jsonStr +} + func resetStartTime(currentTime int64, originalStartTime int64, maxAliveTime int64) int64 { if currentTime > originalStartTime { // 计算需要跳过的周期数 From 2a0b6980dcbdd696325f65e3f6704330b5ba7f08 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 15:56:37 +0800 Subject: [PATCH 135/462] =?UTF-8?q?feat=EF=BC=9Afix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 3f21bd8c1..7dabd04fd 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -36,7 +36,7 @@ func NewTraceHubImpl( evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(10 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, @@ -293,7 +293,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } tasks := tconv.TaskPOs2DOs(ctx, taskPOs, nil) logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) - + // 遍历任务 for _, taskInfo := range tasks { endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) From 1b49ee2aef15b386b604f99cd719075119898029 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 16:01:02 +0800 Subject: [PATCH 136/462] fix --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 7dabd04fd..587c31519 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -36,7 +36,7 @@ func NewTraceHubImpl( evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(10 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, From 232eeb761a8e11283aa7f2924523164753aafd68 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 16:13:10 +0800 Subject: [PATCH 137/462] feat:fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index db5e902f3..87cb12868 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -10,6 +10,7 @@ import ( "time" "github.com/bytedance/sonic" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" @@ -126,6 +127,7 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) //todo:[xun]加锁 + session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) sessionInfo := getSession(ctx, currentTask) var evaluationSetColumns []string var evaluatorVersionIds []int64 From 46ef5db18ea7765ec4eeca6503ffd30964b78b4d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 16:29:42 +0800 Subject: [PATCH 138/462] feat:fix ctx --- .../domain/task/taskexe/processor/auto_evaluate.go | 2 +- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 87cb12868..a9a722090 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -127,7 +127,7 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) //todo:[xun]加锁 - session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) + ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) sessionInfo := getSession(ctx, currentTask) var evaluationSetColumns []string var evaluatorVersionIds []int64 diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 587c31519..7dabd04fd 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -36,7 +36,7 @@ func NewTraceHubImpl( evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(10 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, From 28e6d7017df2fa7b6aea1f8c8e96d2e1ca4def68 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 16:34:49 +0800 Subject: [PATCH 139/462] fix --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 7dabd04fd..587c31519 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -36,7 +36,7 @@ func NewTraceHubImpl( evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(10 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, From 81b4d3ca7ed103df6bd2980d97be3d279fbf1bc5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 17:00:32 +0800 Subject: [PATCH 140/462] feat:add datareflow --- backend/api/handler/coze/loop/apis/handler.go | 2 +- .../eval_set/coze.loop.evaluation.eval_set.go | 2 +- .../loop/observability/domain/task/k-task.go | 440 +++++++++++++ .../loop/observability/domain/task/task.go | 583 ++++++++++++++++++ .../domain/task/task_validator.go | 8 + .../task/taskexe/processor/auto_evaluate.go | 48 ++ .../task/taskexe/processor/data_reflow.go | 74 ++- .../domain/task/taskexe/tracehub/trace_hub.go | 2 +- .../loop/observability/domain/task.thrift | 9 + 9 files changed, 1142 insertions(+), 26 deletions(-) diff --git a/backend/api/handler/coze/loop/apis/handler.go b/backend/api/handler/coze/loop/apis/handler.go index 42eb3a92a..3c5a828e4 100644 --- a/backend/api/handler/coze/loop/apis/handler.go +++ b/backend/api/handler/coze/loop/apis/handler.go @@ -264,4 +264,4 @@ func invokeAndRender[T, K any]( } return callable(ctx, ins) }) -} \ No newline at end of file +} diff --git a/backend/kitex_gen/coze/loop/evaluation/eval_set/coze.loop.evaluation.eval_set.go b/backend/kitex_gen/coze/loop/evaluation/eval_set/coze.loop.evaluation.eval_set.go index f2da940ad..f7b0d4152 100644 --- a/backend/kitex_gen/coze/loop/evaluation/eval_set/coze.loop.evaluation.eval_set.go +++ b/backend/kitex_gen/coze/loop/evaluation/eval_set/coze.loop.evaluation.eval_set.go @@ -20,7 +20,7 @@ type CreateEvaluationSetRequest struct { EvaluationSetSchema *eval_set.EvaluationSetSchema `thrift:"evaluation_set_schema,4,optional" frugal:"4,optional,eval_set.EvaluationSetSchema" form:"evaluation_set_schema" json:"evaluation_set_schema,omitempty" query:"evaluation_set_schema"` // 业务分类 BizCategory *eval_set.BizCategory `thrift:"biz_category,5,optional" frugal:"5,optional,string" form:"biz_category" json:"biz_category,omitempty" query:"biz_category"` - Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"session" json:"session,omitempty" query:"session"` + Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"-" json:"-" query:"-"` Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index 6c96d4582..1d2a69c5e 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -3482,6 +3482,20 @@ func (p *TaskRunConfig) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 2: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -3512,6 +3526,18 @@ func (p *TaskRunConfig) FastReadField1(buf []byte) (int, error) { return offset, nil } +func (p *TaskRunConfig) FastReadField2(buf []byte) (int, error) { + offset := 0 + _field := NewDataReflowRunConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.DataReflowRunConfig = _field + return offset, nil +} + func (p *TaskRunConfig) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -3520,6 +3546,7 @@ func (p *TaskRunConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -3529,6 +3556,7 @@ func (p *TaskRunConfig) BLength() int { l := 0 if p != nil { l += p.field1Length() + l += p.field2Length() } l += thrift.Binary.FieldStopLength() return l @@ -3543,6 +3571,15 @@ func (p *TaskRunConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { return offset } +func (p *TaskRunConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDataReflowRunConfig() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 2) + offset += p.DataReflowRunConfig.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *TaskRunConfig) field1Length() int { l := 0 if p.IsSetAutoEvaluateRunConfig() { @@ -3552,6 +3589,15 @@ func (p *TaskRunConfig) field1Length() int { return l } +func (p *TaskRunConfig) field2Length() int { + l := 0 + if p.IsSetDataReflowRunConfig() { + l += thrift.Binary.FieldBeginLength() + l += p.DataReflowRunConfig.BLength() + } + return l +} + func (p *TaskRunConfig) DeepCopy(s interface{}) error { src, ok := s.(*TaskRunConfig) if !ok { @@ -3567,6 +3613,15 @@ func (p *TaskRunConfig) DeepCopy(s interface{}) error { } p.AutoEvaluateRunConfig = _autoEvaluateRunConfig + var _dataReflowRunConfig *DataReflowRunConfig + if src.DataReflowRunConfig != nil { + _dataReflowRunConfig = &DataReflowRunConfig{} + if err := _dataReflowRunConfig.DeepCopy(src.DataReflowRunConfig); err != nil { + return err + } + } + p.DataReflowRunConfig = _dataReflowRunConfig + return nil } @@ -4116,3 +4171,388 @@ func (p *AutoEvaluateRunConfig) DeepCopy(s interface{}) error { return nil } + +func (p *DataReflowRunConfig) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetDatasetID bool = false + var issetDatasetRunID bool = false + var issetEndAt bool = false + var issetCycleStartAt bool = false + var issetCycleEndAt bool = false + var issetStatus bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetDatasetID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetDatasetRunID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetEndAt = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetCycleStartAt = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetCycleEndAt = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 6: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetStatus = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetDatasetID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetDatasetRunID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetEndAt { + fieldId = 3 + goto RequiredFieldNotSetError + } + + if !issetCycleStartAt { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetCycleEndAt { + fieldId = 5 + goto RequiredFieldNotSetError + } + + if !issetStatus { + fieldId = 6 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DataReflowRunConfig[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_DataReflowRunConfig[fieldId])) +} + +func (p *DataReflowRunConfig) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.DatasetID = _field + return offset, nil +} + +func (p *DataReflowRunConfig) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.DatasetRunID = _field + return offset, nil +} + +func (p *DataReflowRunConfig) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.EndAt = _field + return offset, nil +} + +func (p *DataReflowRunConfig) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.CycleStartAt = _field + return offset, nil +} + +func (p *DataReflowRunConfig) FastReadField5(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.CycleEndAt = _field + return offset, nil +} + +func (p *DataReflowRunConfig) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.Status = _field + return offset, nil +} + +func (p *DataReflowRunConfig) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *DataReflowRunConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *DataReflowRunConfig) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + l += p.field6Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *DataReflowRunConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.DatasetID) + return offset +} + +func (p *DataReflowRunConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], p.DatasetRunID) + return offset +} + +func (p *DataReflowRunConfig) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 3) + offset += thrift.Binary.WriteI64(buf[offset:], p.EndAt) + return offset +} + +func (p *DataReflowRunConfig) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 4) + offset += thrift.Binary.WriteI64(buf[offset:], p.CycleStartAt) + return offset +} + +func (p *DataReflowRunConfig) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 5) + offset += thrift.Binary.WriteI64(buf[offset:], p.CycleEndAt) + return offset +} + +func (p *DataReflowRunConfig) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 6) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.Status) + return offset +} + +func (p *DataReflowRunConfig) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *DataReflowRunConfig) field2Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *DataReflowRunConfig) field3Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *DataReflowRunConfig) field4Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *DataReflowRunConfig) field5Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *DataReflowRunConfig) field6Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(p.Status) + return l +} + +func (p *DataReflowRunConfig) DeepCopy(s interface{}) error { + src, ok := s.(*DataReflowRunConfig) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.DatasetID = src.DatasetID + + p.DatasetRunID = src.DatasetRunID + + p.EndAt = src.EndAt + + p.CycleStartAt = src.CycleStartAt + + p.CycleEndAt = src.CycleEndAt + + if src.Status != "" { + p.Status = kutils.StringDeepCopy(src.Status) + } + + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 10a738c8f..a775189c2 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -4758,6 +4758,8 @@ func (p *TaskRun) Field100DeepEqual(src *common.BaseInfo) bool { type TaskRunConfig struct { // 自动评测对应的运行配置信息 AutoEvaluateRunConfig *AutoEvaluateRunConfig `thrift:"auto_evaluate_run_config,1,optional" frugal:"1,optional,AutoEvaluateRunConfig" form:"auto_evaluate_run_config" json:"auto_evaluate_run_config,omitempty" query:"auto_evaluate_run_config"` + // 数据回流对应的运行配置信息 + DataReflowRunConfig *DataReflowRunConfig `thrift:"data_reflow_run_config,2,optional" frugal:"2,optional,DataReflowRunConfig" form:"data_reflow_run_config" json:"data_reflow_run_config,omitempty" query:"data_reflow_run_config"` } func NewTaskRunConfig() *TaskRunConfig { @@ -4778,18 +4780,38 @@ func (p *TaskRunConfig) GetAutoEvaluateRunConfig() (v *AutoEvaluateRunConfig) { } return p.AutoEvaluateRunConfig } + +var TaskRunConfig_DataReflowRunConfig_DEFAULT *DataReflowRunConfig + +func (p *TaskRunConfig) GetDataReflowRunConfig() (v *DataReflowRunConfig) { + if p == nil { + return + } + if !p.IsSetDataReflowRunConfig() { + return TaskRunConfig_DataReflowRunConfig_DEFAULT + } + return p.DataReflowRunConfig +} func (p *TaskRunConfig) SetAutoEvaluateRunConfig(val *AutoEvaluateRunConfig) { p.AutoEvaluateRunConfig = val } +func (p *TaskRunConfig) SetDataReflowRunConfig(val *DataReflowRunConfig) { + p.DataReflowRunConfig = val +} var fieldIDToName_TaskRunConfig = map[int16]string{ 1: "auto_evaluate_run_config", + 2: "data_reflow_run_config", } func (p *TaskRunConfig) IsSetAutoEvaluateRunConfig() bool { return p.AutoEvaluateRunConfig != nil } +func (p *TaskRunConfig) IsSetDataReflowRunConfig() bool { + return p.DataReflowRunConfig != nil +} + func (p *TaskRunConfig) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -4816,6 +4838,14 @@ func (p *TaskRunConfig) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 2: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -4853,6 +4883,14 @@ func (p *TaskRunConfig) ReadField1(iprot thrift.TProtocol) error { p.AutoEvaluateRunConfig = _field return nil } +func (p *TaskRunConfig) ReadField2(iprot thrift.TProtocol) error { + _field := NewDataReflowRunConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.DataReflowRunConfig = _field + return nil +} func (p *TaskRunConfig) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -4864,6 +4902,10 @@ func (p *TaskRunConfig) Write(oprot thrift.TProtocol) (err error) { fieldId = 1 goto WriteFieldError } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -4900,6 +4942,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } +func (p *TaskRunConfig) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetDataReflowRunConfig() { + if err = oprot.WriteFieldBegin("data_reflow_run_config", thrift.STRUCT, 2); err != nil { + goto WriteFieldBeginError + } + if err := p.DataReflowRunConfig.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} func (p *TaskRunConfig) String() string { if p == nil { @@ -4918,6 +4978,9 @@ func (p *TaskRunConfig) DeepEqual(ano *TaskRunConfig) bool { if !p.Field1DeepEqual(ano.AutoEvaluateRunConfig) { return false } + if !p.Field2DeepEqual(ano.DataReflowRunConfig) { + return false + } return true } @@ -4928,6 +4991,13 @@ func (p *TaskRunConfig) Field1DeepEqual(src *AutoEvaluateRunConfig) bool { } return true } +func (p *TaskRunConfig) Field2DeepEqual(src *DataReflowRunConfig) bool { + + if !p.DataReflowRunConfig.DeepEqual(src) { + return false + } + return true +} type AutoEvaluateRunConfig struct { ExptID int64 `thrift:"expt_id,1,required" frugal:"1,required,i64" json:"expt_id" form:"expt_id,required" query:"expt_id,required"` @@ -5654,3 +5724,516 @@ func (p *AutoEvaluateRunConfig) Field9DeepEqual(src string) bool { } return true } + +type DataReflowRunConfig struct { + DatasetID int64 `thrift:"dataset_id,1,required" frugal:"1,required,i64" json:"dataset_id" form:"dataset_id,required" query:"dataset_id,required"` + DatasetRunID int64 `thrift:"dataset_run_id,2,required" frugal:"2,required,i64" json:"dataset_run_id" form:"dataset_run_id,required" query:"dataset_run_id,required"` + EndAt int64 `thrift:"end_at,3,required" frugal:"3,required,i64" json:"end_at" form:"end_at,required" query:"end_at,required"` + CycleStartAt int64 `thrift:"cycle_start_at,4,required" frugal:"4,required,i64" json:"cycle_start_at" form:"cycle_start_at,required" query:"cycle_start_at,required"` + CycleEndAt int64 `thrift:"cycle_end_at,5,required" frugal:"5,required,i64" json:"cycle_end_at" form:"cycle_end_at,required" query:"cycle_end_at,required"` + Status string `thrift:"status,6,required" frugal:"6,required,string" form:"status,required" json:"status,required" query:"status,required"` +} + +func NewDataReflowRunConfig() *DataReflowRunConfig { + return &DataReflowRunConfig{} +} + +func (p *DataReflowRunConfig) InitDefault() { +} + +func (p *DataReflowRunConfig) GetDatasetID() (v int64) { + if p != nil { + return p.DatasetID + } + return +} + +func (p *DataReflowRunConfig) GetDatasetRunID() (v int64) { + if p != nil { + return p.DatasetRunID + } + return +} + +func (p *DataReflowRunConfig) GetEndAt() (v int64) { + if p != nil { + return p.EndAt + } + return +} + +func (p *DataReflowRunConfig) GetCycleStartAt() (v int64) { + if p != nil { + return p.CycleStartAt + } + return +} + +func (p *DataReflowRunConfig) GetCycleEndAt() (v int64) { + if p != nil { + return p.CycleEndAt + } + return +} + +func (p *DataReflowRunConfig) GetStatus() (v string) { + if p != nil { + return p.Status + } + return +} +func (p *DataReflowRunConfig) SetDatasetID(val int64) { + p.DatasetID = val +} +func (p *DataReflowRunConfig) SetDatasetRunID(val int64) { + p.DatasetRunID = val +} +func (p *DataReflowRunConfig) SetEndAt(val int64) { + p.EndAt = val +} +func (p *DataReflowRunConfig) SetCycleStartAt(val int64) { + p.CycleStartAt = val +} +func (p *DataReflowRunConfig) SetCycleEndAt(val int64) { + p.CycleEndAt = val +} +func (p *DataReflowRunConfig) SetStatus(val string) { + p.Status = val +} + +var fieldIDToName_DataReflowRunConfig = map[int16]string{ + 1: "dataset_id", + 2: "dataset_run_id", + 3: "end_at", + 4: "cycle_start_at", + 5: "cycle_end_at", + 6: "status", +} + +func (p *DataReflowRunConfig) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetDatasetID bool = false + var issetDatasetRunID bool = false + var issetEndAt bool = false + var issetCycleStartAt bool = false + var issetCycleEndAt bool = false + var issetStatus bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetDatasetID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetDatasetRunID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.I64 { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetEndAt = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.I64 { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + issetCycleStartAt = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.I64 { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + issetCycleEndAt = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.STRING { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + issetStatus = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetDatasetID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetDatasetRunID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetEndAt { + fieldId = 3 + goto RequiredFieldNotSetError + } + + if !issetCycleStartAt { + fieldId = 4 + goto RequiredFieldNotSetError + } + + if !issetCycleEndAt { + fieldId = 5 + goto RequiredFieldNotSetError + } + + if !issetStatus { + fieldId = 6 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DataReflowRunConfig[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_DataReflowRunConfig[fieldId])) +} + +func (p *DataReflowRunConfig) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.DatasetID = _field + return nil +} +func (p *DataReflowRunConfig) ReadField2(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.DatasetRunID = _field + return nil +} +func (p *DataReflowRunConfig) ReadField3(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.EndAt = _field + return nil +} +func (p *DataReflowRunConfig) ReadField4(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.CycleStartAt = _field + return nil +} +func (p *DataReflowRunConfig) ReadField5(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.CycleEndAt = _field + return nil +} +func (p *DataReflowRunConfig) ReadField6(iprot thrift.TProtocol) error { + + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v + } + p.Status = _field + return nil +} + +func (p *DataReflowRunConfig) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("DataReflowRunConfig"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *DataReflowRunConfig) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("dataset_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.DatasetID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *DataReflowRunConfig) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("dataset_run_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.DatasetRunID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *DataReflowRunConfig) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("end_at", thrift.I64, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.EndAt); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *DataReflowRunConfig) writeField4(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("cycle_start_at", thrift.I64, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.CycleStartAt); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *DataReflowRunConfig) writeField5(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("cycle_end_at", thrift.I64, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.CycleEndAt); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *DataReflowRunConfig) writeField6(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("status", thrift.STRING, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.Status); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} + +func (p *DataReflowRunConfig) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("DataReflowRunConfig(%+v)", *p) + +} + +func (p *DataReflowRunConfig) DeepEqual(ano *DataReflowRunConfig) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.DatasetID) { + return false + } + if !p.Field2DeepEqual(ano.DatasetRunID) { + return false + } + if !p.Field3DeepEqual(ano.EndAt) { + return false + } + if !p.Field4DeepEqual(ano.CycleStartAt) { + return false + } + if !p.Field5DeepEqual(ano.CycleEndAt) { + return false + } + if !p.Field6DeepEqual(ano.Status) { + return false + } + return true +} + +func (p *DataReflowRunConfig) Field1DeepEqual(src int64) bool { + + if p.DatasetID != src { + return false + } + return true +} +func (p *DataReflowRunConfig) Field2DeepEqual(src int64) bool { + + if p.DatasetRunID != src { + return false + } + return true +} +func (p *DataReflowRunConfig) Field3DeepEqual(src int64) bool { + + if p.EndAt != src { + return false + } + return true +} +func (p *DataReflowRunConfig) Field4DeepEqual(src int64) bool { + + if p.CycleStartAt != src { + return false + } + return true +} +func (p *DataReflowRunConfig) Field5DeepEqual(src int64) bool { + + if p.CycleEndAt != src { + return false + } + return true +} +func (p *DataReflowRunConfig) Field6DeepEqual(src string) bool { + + if strings.Compare(p.Status, src) != 0 { + return false + } + return true +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go index 3d1b1291e..443c638f7 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go @@ -139,8 +139,16 @@ func (p *TaskRunConfig) IsValid() error { return fmt.Errorf("field AutoEvaluateRunConfig not valid, %w", err) } } + if p.DataReflowRunConfig != nil { + if err := p.DataReflowRunConfig.IsValid(); err != nil { + return fmt.Errorf("field DataReflowRunConfig not valid, %w", err) + } + } return nil } func (p *AutoEvaluateRunConfig) IsValid() error { return nil } +func (p *DataReflowRunConfig) IsValid() error { + return nil +} diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index a9a722090..94febf85f 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -443,6 +443,54 @@ func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*t return turns } +func buildDatasetItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []entity.FieldMapping, + workspaceID int64, dataset *entity.Dataset, +) (successItems, failedItems, allItems []*entity.DatasetItem) { + successItems = make([]*entity.DatasetItem, 0, len(spans)) + failedItems = make([]*entity.DatasetItem, 0) + allItems = make([]*entity.DatasetItem, 0, len(spans)) + for i, span := range spans { + item := buildDatasetItem(ctx, span, i, fieldMappings, workspaceID, dataset) + allItems = append(allItems, item) + if len(item.Error) > 0 { + failedItems = append(failedItems, item) + } else { + successItems = append(successItems, item) + } + } + + return successItems, failedItems, allItems +} + +func buildDatasetItem(ctx context.Context, span *loop_span.Span, i int, fieldMappings []entity.FieldMapping, workspaceID int64, + dataset *entity.Dataset, +) *entity.DatasetItem { + item := entity.NewDatasetItem(workspaceID, dataset.ID, span) + for _, mapping := range fieldMappings { + value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) + if err != nil { + // 非json但使用了jsonpath,也不报错,置空 + logs.CtxInfo(ctx, "Extract field failed, err:%v", err) + } + + content, errCode := entity.GetContentInfo(ctx, mapping.FieldSchema.ContentType, value) + if errCode == entity.DatasetErrorType_MismatchSchema { + item.AddError("invalid multi part", entity.DatasetErrorType_MismatchSchema, nil) + continue + } + + // 前端传入的是Name,评测集需要的是key,需要做一下mapping + key := dataset.GetFieldSchemaKeyByName(mapping.FieldSchema.Name) + if key == "" { + logs.CtxInfo(ctx, "Dataset field key is empty, name:%v", mapping.FieldSchema.Name) + item.AddError("Dataset field key is empty", entity.DatasetErrorType_InternalError, nil) + continue + } + item.AddFieldData(key, mapping.FieldSchema.Name, content) + } + return item +} + // todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.FieldMapping, evaluationSetSchema string) []*eval_set.FieldData { diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 773c87494..d8695962c 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -6,10 +6,15 @@ package processor import ( "context" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" + dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -31,32 +36,55 @@ func (p *DataReflowProcessor) ValidateConfig(ctx context.Context, config any, wo } func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { - //cfg, ok := config.(*task.TaskRun) - //if !ok { - // return taskexe.ErrInvalidConfig - //} - // - //ctx = session.WithCtxUser(ctx, &session.User{ID: *cfg.BaseInfo.CreatedBy.UserID}) - ////workspaceID := trigger.Task.GetWorkspaceID() - ////session := getSession(ctx, trigger.Task) - //var mapping []*task.FieldMapping - //for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { - // mapping = append(mapping, autoEvaluateConfig.FieldMappings...) - //} - //turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema()) - //if len(turns) == 0 { - // logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") - // return nil - //} - //category := getCategory(cfg.TaskType) - // - //addSuccess, errorGroups, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, cfg.ID, category, turns) - //if err != nil { - // return err - //} + cfg, ok := config.(*task_entity.TaskRun) + if !ok { + return taskexe.ErrInvalidConfig + } + taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) + + ctx = session.WithCtxUser(ctx, &session.User{ID: *trigger.Task.BaseInfo.CreatedBy.UserID}) + workspaceID := trigger.Task.GetWorkspaceID() + sessionInfo := getSession(ctx, trigger.Task) + var mapping []entity.FieldMapping + for _, dataReflowConfig := range trigger.Task.TaskConfig.DataReflowConfig { + mapping = ConvertFieldMappingsDTO2DO(dataReflowConfig.FieldMappings) + } + + category := getCategory(cfg.TaskType) + successItems, _, _ := buildDatasetItems(ctx, []*loop_span.Span{trigger.Span}, mapping, workspaceID, &entity.Dataset{ + ID: taskRun.TaskRunConfig.GetDataReflowRunConfig().GetDatasetID(), + DatasetCategory: category, + Seesion: sessionInfo, + }) + _, _, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, cfg.ID, category, successItems) + if err != nil { + return err + } return nil } +func ConvertFieldMappingsDTO2DO(mappings []*dataset0.FieldMapping) []entity.FieldMapping { + if len(mappings) == 0 { + return nil + } + + result := make([]entity.FieldMapping, len(mappings)) + for i, mapping := range mappings { + result[i] = entity.FieldMapping{ + FieldSchema: entity.FieldSchema{ + Key: mapping.GetFieldSchema().Key, + Name: mapping.GetFieldSchema().GetName(), + Description: mapping.GetFieldSchema().GetDescription(), + ContentType: convertContentTypeDTO2DO(mapping.GetFieldSchema().GetContentType()), + TextSchema: mapping.GetFieldSchema().GetTextSchema(), + }, + TraceFieldKey: mapping.GetTraceFieldKey(), + TraceFieldJsonpath: mapping.GetTraceFieldJsonpath(), + } + } + + return result +} func (p *DataReflowProcessor) Finish(ctx context.Context, config any, trigger *taskexe.Trigger) error { return nil } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 587c31519..82dd021e3 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -36,7 +36,7 @@ func NewTraceHubImpl( evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 9919a97e9..751a9f69d 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -113,6 +113,7 @@ struct TaskRun { } struct TaskRunConfig { 1: optional AutoEvaluateRunConfig auto_evaluate_run_config // 自动评测对应的运行配置信息 + 2: optional DataReflowRunConfig data_reflow_run_config // 数据回流对应的运行配置信息 } struct AutoEvaluateRunConfig { 1: required i64 expt_id (api.js_conv="true", go.tag='json:"expt_id"') @@ -124,4 +125,12 @@ struct AutoEvaluateRunConfig { 7: required i64 cycle_start_at (api.js_conv="true", go.tag='json:"cycle_start_at"') 8: required i64 cycle_end_at (api.js_conv="true", go.tag='json:"cycle_end_at"') 9: required string status +} +struct DataReflowRunConfig { + 1: required i64 dataset_id (api.js_conv="true", go.tag='json:"dataset_id"') + 2: required i64 dataset_run_id (api.js_conv="true", go.tag='json:"dataset_run_id"') + 3: required i64 end_at (api.js_conv="true", go.tag='json:"end_at"') + 4: required i64 cycle_start_at (api.js_conv="true", go.tag='json:"cycle_start_at"') + 5: required i64 cycle_end_at (api.js_conv="true", go.tag='json:"cycle_end_at"') + 6: required string status } \ No newline at end of file From 61ed11f3a6d9863de6c8364739511df826ccd874 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 17:05:58 +0800 Subject: [PATCH 141/462] fix --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 82dd021e3..587c31519 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -36,7 +36,7 @@ func NewTraceHubImpl( evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, From 5a3020cc9c38a77fd9c2bb12098460be20efa28b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 17:15:30 +0800 Subject: [PATCH 142/462] fix --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 587c31519..82dd021e3 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -36,7 +36,7 @@ func NewTraceHubImpl( evaluationService rpc.IEvaluationRPCAdapter, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, From 308a81a32da6560562308e42dc97b5152c65fe4a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 17:21:19 +0800 Subject: [PATCH 143/462] =?UTF-8?q?feat=EF=BC=9Abackfill?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/convertor/task/task.go | 31 +++++++++---------- .../observability/domain/task/entity/task.go | 31 ++++++++++--------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 4058a536b..95053b1ad 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -223,22 +223,21 @@ func CreateTaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *en return nil } return &entity.ObservabilityTask{ - WorkspaceID: taskDO.GetWorkspaceID(), - Name: taskDO.GetName(), - Description: ptr.Of(taskDO.GetDescription()), - TaskType: taskDO.GetTaskType(), - TaskStatus: task.TaskStatusUnstarted, - TaskDetail: ptr.Of(ToJSONString(ctx, taskDO.GetTaskDetail())), - SpanFilter: SpanFilterDTO2PO(ctx, taskDO.GetRule().GetSpanFilters(), taskDO.GetWorkspaceID()), - EffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetEffectiveTime())), - Sampler: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetSampler())), - TaskConfig: TaskConfigDTO2PO(ctx, taskDO.GetTaskConfig()), - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - CreatedBy: userID, - UpdatedBy: userID, - //BackfillTaskDetail: ptr.Of(ToJSONString(ctx, taskDO.GetBackfillTaskDetail())), - //BackfillEffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetBackfillEffectiveTime())), + WorkspaceID: taskDO.GetWorkspaceID(), + Name: taskDO.GetName(), + Description: ptr.Of(taskDO.GetDescription()), + TaskType: taskDO.GetTaskType(), + TaskStatus: task.TaskStatusUnstarted, + TaskDetail: ptr.Of(ToJSONString(ctx, taskDO.GetTaskDetail())), + SpanFilter: SpanFilterDTO2PO(ctx, taskDO.GetRule().GetSpanFilters(), taskDO.GetWorkspaceID()), + EffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetEffectiveTime())), + Sampler: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetSampler())), + TaskConfig: TaskConfigDTO2PO(ctx, taskDO.GetTaskConfig()), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + CreatedBy: userID, + UpdatedBy: userID, + BackfillEffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetBackfillEffectiveTime())), } } func SpanFilterDTO2PO(ctx context.Context, filters *filter.SpanFilterFields, workspaceID int64) *string { diff --git a/backend/modules/observability/domain/task/entity/task.go b/backend/modules/observability/domain/task/entity/task.go index e7df49a15..ce863d0f1 100644 --- a/backend/modules/observability/domain/task/entity/task.go +++ b/backend/modules/observability/domain/task/entity/task.go @@ -11,21 +11,22 @@ import ( ) type ObservabilityTask struct { - ID int64 // Task ID - WorkspaceID int64 // 空间ID - Name string // 任务名称 - Description *string // 任务描述 - TaskType string // 任务类型 - TaskStatus string // 任务状态 - TaskDetail *string // 任务运行详情 - SpanFilter *string // span 过滤条件 - EffectiveTime *string // 生效时间 - Sampler *string // 采样器 - TaskConfig *string // 相关任务的配置信息 - CreatedAt time.Time // 创建时间 - UpdatedAt time.Time // 更新时间 - CreatedBy string // 创建人 - UpdatedBy string // 更新人 + ID int64 // Task ID + WorkspaceID int64 // 空间ID + Name string // 任务名称 + Description *string // 任务描述 + TaskType string // 任务类型 + TaskStatus string // 任务状态 + TaskDetail *string // 任务运行详情 + SpanFilter *string // span 过滤条件 + EffectiveTime *string // 生效时间 + BackfillEffectiveTime *string // 历史回溯生效时间 + Sampler *string // 采样器 + TaskConfig *string // 相关任务的配置信息 + CreatedAt time.Time // 创建时间 + UpdatedAt time.Time // 更新时间 + CreatedBy string // 创建人 + UpdatedBy string // 更新人 TaskRuns []*TaskRun } From 78fa71ba1f277a8e3dfd56c1f0096daa0680ff58 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 17:31:07 +0800 Subject: [PATCH 144/462] feat:task --- .../application/convertor/task/task.go | 11 +++--- .../repo/mysql/gorm_gen/model/task.gen.go | 31 +++++++-------- .../repo/mysql/gorm_gen/query/task.gen.go | 38 ++++++++++--------- backend/script/gorm_gen/generate.go | 12 +++--- .../bootstrap/mysql-init/init-sql/task.sql | 1 + 5 files changed, 50 insertions(+), 43 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 95053b1ad..ecdfba2fa 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -47,7 +47,7 @@ func TaskPO2DTO(ctx context.Context, v *entity.ObservabilityTask, userMap map[st WorkspaceID: ptr.Of(v.WorkspaceID), TaskType: v.TaskType, TaskStatus: ptr.Of(v.TaskStatus), - Rule: RulePO2DO(ctx, v.SpanFilter, v.EffectiveTime, v.Sampler), + Rule: RulePO2DO(ctx, v.SpanFilter, v.EffectiveTime, v.Sampler, v.BackfillEffectiveTime), TaskConfig: TaskConfigPO2DO(ctx, v.TaskConfig), BaseInfo: &common.BaseInfo{ CreatedAt: gptr.Of(v.CreatedAt.UnixMilli()), @@ -76,15 +76,16 @@ func UserInfoPO2DO(userInfo *entity_common.UserInfo, userID string) *common.User } } -func RulePO2DO(ctx context.Context, spanFilter, effectiveTime, sampler *string) *task.Rule { +func RulePO2DO(ctx context.Context, spanFilter, effectiveTime, sampler, backFillEffectiveTime *string) *task.Rule { var spanFilterDO *filter.SpanFilterFields if spanFilter != nil { spanFilterDO = SpanFilterPO2DO(ctx, spanFilter) } rule := &task.Rule{ - SpanFilters: spanFilterDO, - EffectiveTime: EffectiveTimePO2DO(ctx, effectiveTime), - Sampler: SamplerPO2DO(ctx, sampler), + SpanFilters: spanFilterDO, + EffectiveTime: EffectiveTimePO2DO(ctx, effectiveTime), + Sampler: SamplerPO2DO(ctx, sampler), + BackfillEffectiveTime: EffectiveTimePO2DO(ctx, backFillEffectiveTime), } return rule } diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go index bf3d8ebb9..89a228b1b 100644 --- a/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/model/task.gen.go @@ -12,21 +12,22 @@ const TableNameObservabilityTask = "task" // ObservabilityTask 任务信息 type ObservabilityTask struct { - ID int64 `gorm:"column:id;type:bigint(20) unsigned;primaryKey;comment:Task ID" json:"id"` // Task ID - WorkspaceID int64 `gorm:"column:workspace_id;type:bigint(20) unsigned;not null;index:idx_space_id_status,priority:1;index:idx_space_id_type,priority:1;comment:空间ID" json:"workspace_id"` // 空间ID - Name string `gorm:"column:name;type:varchar(128);not null;comment:任务名称" json:"name"` // 任务名称 - Description *string `gorm:"column:description;type:varchar(2048);comment:任务描述" json:"description"` // 任务描述 - TaskType string `gorm:"column:task_type;type:varchar(64);not null;index:idx_space_id_type,priority:2;comment:任务类型" json:"task_type"` // 任务类型 - TaskStatus string `gorm:"column:task_status;type:varchar(64);not null;index:idx_space_id_status,priority:2;comment:任务状态" json:"task_status"` // 任务状态 - TaskDetail *string `gorm:"column:task_detail;type:json;comment:任务运行状态详情" json:"task_detail"` // 任务运行状态详情 - SpanFilter *string `gorm:"column:span_filter;type:json;comment:span 过滤条件" json:"span_filter"` // span 过滤条件 - EffectiveTime *string `gorm:"column:effective_time;type:json;comment:生效时间" json:"effective_time"` // 生效时间 - Sampler *string `gorm:"column:sampler;type:json;comment:采样器" json:"sampler"` // 采样器 - TaskConfig *string `gorm:"column:task_config;type:json;comment:相关任务的配置信息" json:"task_config"` // 相关任务的配置信息 - CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` // 创建时间 - UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` // 更新时间 - CreatedBy string `gorm:"column:created_by;type:varchar(128);not null;comment:创建人" json:"created_by"` // 创建人 - UpdatedBy string `gorm:"column:updated_by;type:varchar(128);not null;comment:更新人" json:"updated_by"` // 更新人 + ID int64 `gorm:"column:id;type:bigint(20) unsigned;primaryKey;comment:Task ID" json:"id"` // Task ID + WorkspaceID int64 `gorm:"column:workspace_id;type:bigint(20) unsigned;not null;index:idx_space_id_status,priority:1;index:idx_space_id_type,priority:1;comment:空间ID" json:"workspace_id"` // 空间ID + Name string `gorm:"column:name;type:varchar(128);not null;comment:任务名称" json:"name"` // 任务名称 + Description *string `gorm:"column:description;type:varchar(2048);comment:任务描述" json:"description"` // 任务描述 + TaskType string `gorm:"column:task_type;type:varchar(64);not null;index:idx_space_id_type,priority:2;comment:任务类型" json:"task_type"` // 任务类型 + TaskStatus string `gorm:"column:task_status;type:varchar(64);not null;index:idx_space_id_status,priority:2;comment:任务状态" json:"task_status"` // 任务状态 + TaskDetail *string `gorm:"column:task_detail;type:json;comment:任务运行状态详情" json:"task_detail"` // 任务运行状态详情 + SpanFilter *string `gorm:"column:span_filter;type:json;comment:span 过滤条件" json:"span_filter"` // span 过滤条件 + EffectiveTime *string `gorm:"column:effective_time;type:json;comment:生效时间" json:"effective_time"` // 生效时间 + BackfillEffectiveTime *string `gorm:"column:backfill_effective_time;type:json;comment:历史回溯生效时间" json:"backfill_effective_time"` // 历史回溯生效时间 + Sampler *string `gorm:"column:sampler;type:json;comment:采样器" json:"sampler"` // 采样器 + TaskConfig *string `gorm:"column:task_config;type:json;comment:相关任务的配置信息" json:"task_config"` // 相关任务的配置信息 + CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` // 更新时间 + CreatedBy string `gorm:"column:created_by;type:varchar(128);not null;comment:创建人" json:"created_by"` // 创建人 + UpdatedBy string `gorm:"column:updated_by;type:varchar(128);not null;comment:更新人" json:"updated_by"` // 更新人 } // TableName ObservabilityTask's table name diff --git a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go index 6822b179b..26e5002f6 100644 --- a/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go +++ b/backend/modules/observability/infra/repo/mysql/gorm_gen/query/task.gen.go @@ -36,6 +36,7 @@ func newObservabilityTask(db *gorm.DB, opts ...gen.DOOption) observabilityTask { _observabilityTask.TaskDetail = field.NewString(tableName, "task_detail") _observabilityTask.SpanFilter = field.NewString(tableName, "span_filter") _observabilityTask.EffectiveTime = field.NewString(tableName, "effective_time") + _observabilityTask.BackfillEffectiveTime = field.NewString(tableName, "backfill_effective_time") _observabilityTask.Sampler = field.NewString(tableName, "sampler") _observabilityTask.TaskConfig = field.NewString(tableName, "task_config") _observabilityTask.CreatedAt = field.NewTime(tableName, "created_at") @@ -52,22 +53,23 @@ func newObservabilityTask(db *gorm.DB, opts ...gen.DOOption) observabilityTask { type observabilityTask struct { observabilityTaskDo observabilityTaskDo - ALL field.Asterisk - ID field.Int64 // Task ID - WorkspaceID field.Int64 // 空间ID - Name field.String // 任务名称 - Description field.String // 任务描述 - TaskType field.String // 任务类型 - TaskStatus field.String // 任务状态 - TaskDetail field.String // 任务运行状态详情 - SpanFilter field.String // span 过滤条件 - EffectiveTime field.String // 生效时间 - Sampler field.String // 采样器 - TaskConfig field.String // 相关任务的配置信息 - CreatedAt field.Time // 创建时间 - UpdatedAt field.Time // 更新时间 - CreatedBy field.String // 创建人 - UpdatedBy field.String // 更新人 + ALL field.Asterisk + ID field.Int64 // Task ID + WorkspaceID field.Int64 // 空间ID + Name field.String // 任务名称 + Description field.String // 任务描述 + TaskType field.String // 任务类型 + TaskStatus field.String // 任务状态 + TaskDetail field.String // 任务运行状态详情 + SpanFilter field.String // span 过滤条件 + EffectiveTime field.String // 生效时间 + BackfillEffectiveTime field.String // 历史回溯生效时间 + Sampler field.String // 采样器 + TaskConfig field.String // 相关任务的配置信息 + CreatedAt field.Time // 创建时间 + UpdatedAt field.Time // 更新时间 + CreatedBy field.String // 创建人 + UpdatedBy field.String // 更新人 fieldMap map[string]field.Expr } @@ -93,6 +95,7 @@ func (o *observabilityTask) updateTableName(table string) *observabilityTask { o.TaskDetail = field.NewString(table, "task_detail") o.SpanFilter = field.NewString(table, "span_filter") o.EffectiveTime = field.NewString(table, "effective_time") + o.BackfillEffectiveTime = field.NewString(table, "backfill_effective_time") o.Sampler = field.NewString(table, "sampler") o.TaskConfig = field.NewString(table, "task_config") o.CreatedAt = field.NewTime(table, "created_at") @@ -127,7 +130,7 @@ func (o *observabilityTask) GetFieldByName(fieldName string) (field.OrderExpr, b } func (o *observabilityTask) fillFieldMap() { - o.fieldMap = make(map[string]field.Expr, 15) + o.fieldMap = make(map[string]field.Expr, 16) o.fieldMap["id"] = o.ID o.fieldMap["workspace_id"] = o.WorkspaceID o.fieldMap["name"] = o.Name @@ -137,6 +140,7 @@ func (o *observabilityTask) fillFieldMap() { o.fieldMap["task_detail"] = o.TaskDetail o.fieldMap["span_filter"] = o.SpanFilter o.fieldMap["effective_time"] = o.EffectiveTime + o.fieldMap["backfill_effective_time"] = o.BackfillEffectiveTime o.fieldMap["sampler"] = o.Sampler o.fieldMap["task_config"] = o.TaskConfig o.fieldMap["created_at"] = o.CreatedAt diff --git a/backend/script/gorm_gen/generate.go b/backend/script/gorm_gen/generate.go index 06cc90d9b..58cc0581d 100644 --- a/backend/script/gorm_gen/generate.go +++ b/backend/script/gorm_gen/generate.go @@ -14,13 +14,13 @@ import ( func main() { db := initDB() - generateForPrompt(db) - generateForData(db) - generateForEvaluationTarget(db) - generateForEvaluationEvaluator(db) - generateForEvaluationExpt(db) + //generateForPrompt(db) + //generateForData(db) + //generateForEvaluationTarget(db) + //generateForEvaluationEvaluator(db) + //generateForEvaluationExpt(db) generateForObservability(db) - generateForFoundation(db) + //generateForFoundation(db) } func initDB() *gorm.DB { diff --git a/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/task.sql b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/task.sql index 3af50b68f..dccf63377 100644 --- a/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/task.sql +++ b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/task.sql @@ -8,6 +8,7 @@ CREATE TABLE `task` ( `task_detail` json DEFAULT NULL COMMENT '任务运行状态详情', `span_filter` json DEFAULT NULL COMMENT 'span 过滤条件', `effective_time` json DEFAULT NULL COMMENT '生效时间', + `backfill_effective_time` json DEFAULT NULL COMMENT '历史回溯生效时间', `sampler` json DEFAULT NULL COMMENT '采样器', `task_config` json DEFAULT NULL COMMENT '相关任务的配置信息', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', From 8c9b633fe2fb1b102c9e3550a7d5ac744309f613 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 17:40:33 +0800 Subject: [PATCH 145/462] feat:fix --- .../infra/repo/mysql/convertor/task.go | 64 ++++++++++--------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/backend/modules/observability/infra/repo/mysql/convertor/task.go b/backend/modules/observability/infra/repo/mysql/convertor/task.go index 9b36f4bb9..3a5ea3b78 100644 --- a/backend/modules/observability/infra/repo/mysql/convertor/task.go +++ b/backend/modules/observability/infra/repo/mysql/convertor/task.go @@ -10,41 +10,43 @@ import ( func TaskDO2PO(task *entity.ObservabilityTask) *model.ObservabilityTask { return &model.ObservabilityTask{ - ID: task.ID, - WorkspaceID: task.WorkspaceID, - Name: task.Name, - Description: task.Description, - TaskType: task.TaskType, - TaskStatus: task.TaskStatus, - TaskDetail: task.TaskDetail, - SpanFilter: task.SpanFilter, - EffectiveTime: task.EffectiveTime, - Sampler: task.Sampler, - TaskConfig: task.TaskConfig, - CreatedAt: task.CreatedAt, - UpdatedAt: task.UpdatedAt, - CreatedBy: task.CreatedBy, - UpdatedBy: task.UpdatedBy, + ID: task.ID, + WorkspaceID: task.WorkspaceID, + Name: task.Name, + Description: task.Description, + TaskType: task.TaskType, + TaskStatus: task.TaskStatus, + TaskDetail: task.TaskDetail, + SpanFilter: task.SpanFilter, + EffectiveTime: task.EffectiveTime, + BackfillEffectiveTime: task.BackfillEffectiveTime, + Sampler: task.Sampler, + TaskConfig: task.TaskConfig, + CreatedAt: task.CreatedAt, + UpdatedAt: task.UpdatedAt, + CreatedBy: task.CreatedBy, + UpdatedBy: task.UpdatedBy, } } func TaskPO2DO(task *model.ObservabilityTask) *entity.ObservabilityTask { return &entity.ObservabilityTask{ - ID: task.ID, - WorkspaceID: task.WorkspaceID, - Name: task.Name, - Description: task.Description, - TaskType: task.TaskType, - TaskStatus: task.TaskStatus, - TaskDetail: task.TaskDetail, - SpanFilter: task.SpanFilter, - EffectiveTime: task.EffectiveTime, - Sampler: task.Sampler, - TaskConfig: task.TaskConfig, - CreatedAt: task.CreatedAt, - UpdatedAt: task.UpdatedAt, - CreatedBy: task.CreatedBy, - UpdatedBy: task.UpdatedBy, + ID: task.ID, + WorkspaceID: task.WorkspaceID, + Name: task.Name, + Description: task.Description, + TaskType: task.TaskType, + TaskStatus: task.TaskStatus, + TaskDetail: task.TaskDetail, + SpanFilter: task.SpanFilter, + EffectiveTime: task.EffectiveTime, + BackfillEffectiveTime: task.BackfillEffectiveTime, + Sampler: task.Sampler, + TaskConfig: task.TaskConfig, + CreatedAt: task.CreatedAt, + UpdatedAt: task.UpdatedAt, + CreatedBy: task.CreatedBy, + UpdatedBy: task.UpdatedBy, } } @@ -80,4 +82,4 @@ func TaskRunPO2DO(taskRun *model.ObservabilityTaskRun) *entity.TaskRun { CreatedAt: taskRun.CreatedAt, UpdatedAt: taskRun.UpdatedAt, } -} \ No newline at end of file +} From 9078153230d146f96a78ea7f5c2d976590dc87a2 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 17:46:28 +0800 Subject: [PATCH 146/462] feat:fix validate --- .../modules/observability/application/task.go | 41 +++++++++++-------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index f56d0bb03..c0aa962c6 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -113,25 +113,32 @@ func (t *TaskApplication) validateCreateTaskReq(ctx context.Context, req *task.C return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("The start time must be earlier than the end time.")) } } - var evaluatorVersionIDs []int64 - for _, autoEvaluateConfig := range req.GetTask().GetTaskConfig().GetAutoEvaluateConfigs() { - evaluatorVersionIDs = append(evaluatorVersionIDs, autoEvaluateConfig.GetEvaluatorVersionID()) - } - if len(evaluatorVersionIDs) == 0 { + switch req.GetTask().GetTaskType() { + case "auto_evaluate": + var evaluatorVersionIDs []int64 + for _, autoEvaluateConfig := range req.GetTask().GetTaskConfig().GetAutoEvaluateConfigs() { + evaluatorVersionIDs = append(evaluatorVersionIDs, autoEvaluateConfig.GetEvaluatorVersionID()) + } + if len(evaluatorVersionIDs) == 0 { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Invalid parameter. Please check the parameter and try again.")) + } + // 检查评估器版本是否合法 + evaluators, _, err := t.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ + WorkspaceID: req.GetTask().GetWorkspaceID(), + EvaluatorVersionIds: evaluatorVersionIDs, + }) + if err != nil { + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithMsgParam("evaluatorVersionIDs is invalid, BatchGetEvaluators err: %v", err.Error())) + } + if len(evaluators) != len(evaluatorVersionIDs) { + logs.CtxError(ctx, "evaluators len: %d, evaluatorVersionIDs len: %d", len(evaluators), len(evaluatorVersionIDs)) + return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("evaluatorVersionIDs is invalid, len(evaluators) != len(evaluatorVersionIDs)")) + } + case "auto_data_reflow": + default: return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Invalid parameter. Please check the parameter and try again.")) } - // 检查评估器版本是否合法 - evaluators, _, err := t.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ - WorkspaceID: req.GetTask().GetWorkspaceID(), - EvaluatorVersionIds: evaluatorVersionIDs, - }) - if err != nil { - return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithMsgParam("evaluatorVersionIDs is invalid, BatchGetEvaluators err: %v", err.Error())) - } - if len(evaluators) != len(evaluatorVersionIDs) { - logs.CtxError(ctx, "evaluators len: %d, evaluatorVersionIDs len: %d", len(evaluators), len(evaluatorVersionIDs)) - return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("evaluatorVersionIDs is invalid, len(evaluators) != len(evaluatorVersionIDs)")) - } + return nil } func (t *TaskApplication) UpdateTask(ctx context.Context, req *task.UpdateTaskRequest) (*task.UpdateTaskResponse, error) { From e86c83294f488bc85922e90e9ec8f7b6ed2153c0 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 17:55:54 +0800 Subject: [PATCH 147/462] feat:add df proc --- backend/modules/observability/application/task.go | 1 + .../observability/domain/task/taskexe/processor/factory.go | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index c0aa962c6..7d2c00b3c 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -135,6 +135,7 @@ func (t *TaskApplication) validateCreateTaskReq(ctx context.Context, req *task.C return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("evaluatorVersionIDs is invalid, len(evaluators) != len(evaluatorVersionIDs)")) } case "auto_data_reflow": + // 检查数据集id是否合法 default: return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Invalid parameter. Please check the parameter and try again.")) } diff --git a/backend/modules/observability/domain/task/taskexe/processor/factory.go b/backend/modules/observability/domain/task/taskexe/processor/factory.go index d9609e54b..14f261a69 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/taskexe/processor/factory.go @@ -28,6 +28,11 @@ func NewProcessor(ctx context.Context, taskType task.TaskType) (taskexe.Processo return nil, errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg("nil proc of span_eval")) } return autoEvaluteProc, nil + case task.TaskTypeAutoDataReflow: + if dataReflowProc == nil { + return nil, errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg("nil proc of span_data_reflow")) + } + return dataReflowProc, nil default: return nil, errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg(fmt.Sprintf("invalid task_type='%s' when new processor", taskType))) } From aab0cd55e05741798451d5f04bb796c9ab97677c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 18:01:05 +0800 Subject: [PATCH 148/462] feat:fix --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 82dd021e3..16cba66eb 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -298,7 +298,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { for _, taskInfo := range tasks { endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()*int64(time.Millisecond)) - proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) + proc, err := processor.NewProcessor(ctx, taskInfo.TaskType) if err != nil { logs.CtxError(ctx, "NewProcessor err:%v", err) continue From e57afe06864bd48cef4f4528d5b32cf2d24283c1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 18:08:53 +0800 Subject: [PATCH 149/462] feat:fix debug log --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 16cba66eb..7b3f3d74b 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -167,14 +167,13 @@ func (h *TraceHubServiceImpl) dispatch(ctx context.Context, span *loop_span.Span logs.CtxInfo(ctx, "add span to subscriber, task_id=%d, log_id=%s, trace_id=%s, span_id=%s", sub.taskID, span.LogID, span.TraceID, span.SpanID) } - logs.CtxError(ctx, "dispatch error:%v", merr.ErrorOrNil()) return merr.ErrorOrNil() } func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { merr := &multierror.Error{} var needDispatchSubs []*spanSubscriber for _, sub := range subs { - if Usec2Msec(span.StartTime) < sub.t.GetRule().GetEffectiveTime().GetStartAt() { + if span.StartTime < sub.t.GetRule().GetEffectiveTime().GetStartAt() { logs.CtxWarn(ctx, "span start time is before task cycle start time, trace_id=%s, span_id=%s", span.TraceID, span.SpanID) continue } From a7eb637fcc062f96ce60dd94c5aa5ee8a1985cdb Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 19:53:53 +0800 Subject: [PATCH 150/462] feat:add callback --- .../modules/observability/application/task.go | 10 + .../modules/observability/application/wire.go | 8 +- .../observability/application/wire_gen.go | 26 ++- .../observability/domain/task/entity/event.go | 57 +++++ .../domain/task/taskexe/tracehub/callback.go | 212 ++++++++++++++++++ .../domain/task/taskexe/tracehub/trace_hub.go | 22 +- .../mq/consumer/autotask_callback_consumer.go | 57 +++++ .../infra/mq/consumer/consumer.go | 2 + .../infra/mq/consumer/correction_consumer.go | 56 +++++ 9 files changed, 436 insertions(+), 14 deletions(-) create mode 100644 backend/modules/observability/domain/task/taskexe/tracehub/callback.go create mode 100644 backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go create mode 100644 backend/modules/observability/infra/mq/consumer/correction_consumer.go diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 7d2c00b3c..e34287695 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -19,6 +19,8 @@ import ( type ITaskQueueConsumer interface { TraceHub(ctx context.Context, event *entity.RawSpan) error + CallBack(ctx context.Context, event *entity.AutoEvalEvent) error + Correction(ctx context.Context, event *entity.CorrectionEvent) error } type ITaskApplication interface { task.TaskService @@ -230,3 +232,11 @@ func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) func (t *TaskApplication) TraceHub(ctx context.Context, event *entity.RawSpan) error { return t.tracehubSvc.TraceHub(ctx, event) } + +func (t *TaskApplication) CallBack(ctx context.Context, event *entity.AutoEvalEvent) error { + return t.tracehubSvc.CallBack(ctx, event) +} + +func (t *TaskApplication) Correction(ctx context.Context, event *entity.CorrectionEvent) error { + return t.tracehubSvc.Correction(ctx, event) +} diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 53ae67e81..39db9a2bd 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -111,14 +111,14 @@ var ( traceDomainSet, ) taskSet = wire.NewSet( - NewDatasetServiceAdapter, + //NewDatasetServiceAdapter, tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, - evaluator.NewEvaluatorRPCProvider, + //evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, - taskDomainSet, + traceDomainSet, ) ) @@ -242,6 +242,8 @@ func InitTraceIngestionApplication( func InitTaskApplication( db db.Provider, idgen idgen.IIDGenerator, + configFactory conf.IConfigLoaderFactory, + ckDb ck.Provider, redis redis.Cmdable, userClient userservice.Client, authClient authservice.Client, diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index fde860cf4..eeade17ca 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -192,7 +192,7 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb return iTraceIngestionApplication, nil } -func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, redis2 redis.Cmdable, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client) (ITaskApplication, error) { +func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, ckDb ck.Provider, redis2 redis.Cmdable, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client) (ITaskApplication, error) { iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) @@ -206,7 +206,25 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, redis2 redi iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iEvaluationRPCAdapter := evaluation.NewEvaluationRPCProvider(exptService) datasetServiceAdaptor := NewDatasetServiceAdapter(evalSetService, datasetService) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter) + iSpansDao, err := ck2.NewSpansCkDaoImpl(ckDb) + if err != nil { + return nil, err + } + iAnnotationDao, err := ck2.NewAnnotationCkDaoImpl(ckDb) + if err != nil { + return nil, err + } + iConfigLoader, err := NewTraceConfigLoader(configFactory) + if err != nil { + return nil, err + } + iTraceConfig := config.NewTraceConfigCenter(iConfigLoader) + iTraceRepo, err := repo.NewTraceCKRepoImpl(iSpansDao, iAnnotationDao, iTraceConfig) + if err != nil { + return nil, err + } + iTenantProvider := tenant.NewTenantProvider(iTraceConfig) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTraceRepo, iTenantProvider) if err != nil { return nil, err } @@ -235,9 +253,7 @@ var ( openApiSet = wire.NewSet( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) - taskSet = wire.NewSet( - NewDatasetServiceAdapter, tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, taskDomainSet, - ) + taskSet = wire.NewSet(tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, traceDomainSet) ) func NewTraceProcessorBuilder( diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go index 7d4130b2d..c9d847ed9 100644 --- a/backend/modules/observability/domain/task/entity/event.go +++ b/backend/modules/observability/domain/task/entity/event.go @@ -119,3 +119,60 @@ func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { return result } + +type AutoEvalEvent struct { + ExptID int64 `json:"expt_id"` + TurnEvalResults []*OnlineExptTurnEvalResult `json:"turn_eval_results"` +} +type OnlineExptTurnEvalResult struct { + EvaluatorVersionID int64 `json:"evaluator_version_id"` + EvaluatorRecordID int64 `json:"evaluator_record_id"` + Score float64 `json:"score"` + Reasoning string `json:"reasoning"` + Status EvaluatorRunStatus `json:"status"` + EvaluatorRunError *EvaluatorRunError `json:"evaluator_run_error"` + Ext map[string]string `json:"ext"` + BaseInfo *BaseInfo `json:"base_info"` +} +type BaseInfo struct { + UpdatedBy *UserInfo `json:"updated_by"` + UpdatedAt int64 `json:"updated_at"` + CreatedBy *UserInfo `json:"created_by"` + CreatedAt int64 `json:"created_at"` +} +type UserInfo struct { + UserID string `json:"user_id"` +} +type EvaluatorRunStatus int + +const ( + EvaluatorRunStatus_Unknown = 0 + EvaluatorRunStatus_Success = 1 + EvaluatorRunStatus_Fail = 2 +) + +type EvaluatorRunError struct { + Code int32 `json:"code"` + Message string `json:"message"` +} + +type Correction struct { + Score float64 `json:"score"` + Explain string `json:"explain"` + UpdatedBy string `json:"updated_by"` +} + +type EvaluatorResult struct { + Score float64 `json:"score"` + Correction *Correction `json:"correction"` + Reasoning string `json:"reasoning"` +} + +type CorrectionEvent struct { + EvaluatorResult *EvaluatorResult `json:"evaluator_result"` + EvaluatorRecordID int64 `json:"evaluator_record_id"` + EvaluatorVersionID int64 `json:"evaluator_version_id"` + Ext map[string]string `json:"ext"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go new file mode 100644 index 000000000..1fe2f6b5b --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go @@ -0,0 +1,212 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package tracehub + +import ( + "context" + "fmt" + "strconv" + "time" + + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" + "github.com/coze-dev/coze-loop/backend/pkg/logs" + "github.com/samber/lo" +) + +func (h *TraceHubServiceImpl) CallBack(ctx context.Context, event *entity.AutoEvalEvent) error { + err := h.upsertAnnotation(ctx, event.TurnEvalResults, false) + if err != nil { + logs.CtxError(ctx, "upsertAnnotation err:%v", err) + return err + } + return nil +} +func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.CorrectionEvent) error { + spanID := event.Ext["span_id"] + traceID := event.Ext["trace_id"] + startTimeStr := event.Ext["start_time"] + startTime, err := strconv.ParseInt(startTimeStr, 10, 64) + if err != nil { + return err + } + logs.CtxInfo(ctx, "startTime: %v", startTime) + workspaceIDStr := event.Ext["workspace_id"] + workspaceID, err := strconv.ParseInt(workspaceIDStr, 10, 64) + if err != nil { + return err + } + //todo:loopspan下 + platform_type := event.Ext["platform_type"] + tenants, err := h.getTenants(ctx, loop_span.PlatformType(platform_type)) + if err != nil { + return err + } + spans, err := h.getSpan(ctx, + tenants, + []string{spanID}, + traceID, + workspaceIDStr, + startTime-time.Second.Milliseconds(), + startTime+time.Second.Milliseconds(), + ) + if err != nil { + return err + } + if event.EvaluatorResult.Correction == nil || event.EvaluatorResult == nil { + return err + } + span := spans[0] + annotations, err := h.traceRepo.ListAnnotations(ctx, &repo.ListAnnotationsParam{ + Tenants: tenants, + SpanID: spanID, + TraceID: traceID, + WorkspaceId: workspaceID, + StartAt: startTime - time.Second.Milliseconds(), + EndAt: startTime + time.Second.Milliseconds(), + }) + if err != nil { + return err + } + var annotation *loop_span.Annotation + for _, a := range annotations { + meta := a.GetAutoEvaluateMetadata() + if meta != nil && meta.EvaluatorRecordID == event.EvaluatorRecordID { + annotation = a + break + } + } + + updateBy := session.UserIDInCtxOrEmpty(ctx) + if updateBy == "" { + return err + } + annotation.CorrectAutoEvaluateScore(event.EvaluatorResult.Correction.Score, event.EvaluatorResult.Correction.Explain, updateBy) + + // 再同步修改观测数据 + param := &repo.UpsertAnnotationParam{ + Tenant: span.GetTenant(), + TTL: span.GetTTL(ctx), + Annotations: []*loop_span.Annotation{annotation}, + IsSync: true, + } + if err = h.traceRepo.UpsertAnnotation(ctx, param); err != nil { + recordID := lo.Ternary(annotation.GetAutoEvaluateMetadata() != nil, annotation.GetAutoEvaluateMetadata().EvaluatorRecordID, 0) + // 如果同步修改失败,异步补偿 + // todo 异步有问题,会重复 + logs.CtxWarn(ctx, "Sync upsert annotation failed, try async upsert. span_id=[%v], recored_id=[%v], err:%v", + annotation.SpanID, recordID, err) + return nil + } + return nil +} + +func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResults []*entity.OnlineExptTurnEvalResult, isSync bool) (err error) { + for _, turn := range turnEvalResults { + spanID := turn.Ext["span_id"] + startTimeStr := turn.Ext["start_time"] + startTime, err := strconv.ParseInt(startTimeStr, 10, 64) + if err != nil { + return err + } + logs.CtxInfo(ctx, "startTime: %v", startTime) + taskIDStr := turn.Ext["task_id"] + taskID, err := strconv.ParseInt(taskIDStr, 10, 64) + if err != nil { + return err + } + workspaceIDStr := turn.Ext["workspace_id"] + platform_type := turn.Ext["platform_type"] + tenants, err := h.getTenants(ctx, loop_span.PlatformType(platform_type)) + if err != nil { + return err + } + spans, err := h.getSpan(ctx, + tenants, + []string{spanID}, + "", + workspaceIDStr, + startTime-time.Second.Milliseconds(), + startTime+time.Second.Milliseconds(), + ) + span := spans[0] + annotation := &loop_span.Annotation{ + SpanID: spanID, + TraceID: span.TraceID, + WorkspaceID: workspaceIDStr, + AnnotationType: loop_span.AnnotationTypeAutoEvaluate, + Key: fmt.Sprintf("%d:%d", taskID, turn.EvaluatorVersionID), + Value: loop_span.AnnotationValue{ + ValueType: loop_span.AnnotationValueTypeDouble, + FloatValue: turn.Score, + }, + Reasoning: turn.Reasoning, + Status: loop_span.AnnotationStatusNormal, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + } + + err = h.traceRepo.InsertAnnotations(ctx, &repo.InsertAnnotationParam{ + Tenant: span.GetTenant(), + TTL: span.GetTTL(ctx), + Annotations: []*loop_span.Annotation{annotation}, + }) + if err != nil { + return err + } + + } + return nil +} +func (h *TraceHubServiceImpl) getTenants(ctx context.Context, platform loop_span.PlatformType) ([]string, error) { + return h.tenantProvider.GetTenantsByPlatformType(ctx, platform) +} +func (h *TraceHubServiceImpl) getSpan(ctx context.Context, tenants []string, spanIds []string, traceId, workspaceId string, startAt, endAt int64) ([]*loop_span.Span, error) { + if len(spanIds) == 0 || workspaceId == "" { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) + } + var filterFields []*loop_span.FilterField + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldSpanId, + FieldType: loop_span.FieldTypeString, + Values: spanIds, + QueryType: ptr.Of(loop_span.QueryTypeEnumIn), + }) + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldSpaceId, + FieldType: loop_span.FieldTypeString, + Values: []string{workspaceId}, + QueryType: ptr.Of(loop_span.QueryTypeEnumEq), + }) + if traceId != "" { + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldTraceId, + FieldType: loop_span.FieldTypeString, + Values: []string{traceId}, + QueryType: ptr.Of(loop_span.QueryTypeEnumEq), + }) + } + res, err := h.traceRepo.ListSpans(ctx, &repo.ListSpansParam{ + Tenants: tenants, + Filters: &loop_span.FilterFields{ + FilterFields: filterFields, + }, + StartAt: startAt, + EndAt: endAt, + NotQueryAnnotation: true, + Limit: 2, + }) + if err != nil { + logs.CtxError(ctx, "failed to list span, %v", err) + return nil, err + } else if len(res.Spans) == 0 { + return nil, nil + } + return res.Spans, nil +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 7b3f3d74b..b62009702 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -14,11 +14,13 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + trace_repo "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" "github.com/coze-dev/coze-loop/backend/pkg/logs" "github.com/hashicorp/go-multierror" @@ -27,6 +29,8 @@ import ( type ITraceHubService interface { TraceHub(ctx context.Context, event *entity.RawSpan) error + CallBack(ctx context.Context, event *entity.AutoEvalEvent) error + Correction(ctx context.Context, event *entity.CorrectionEvent) error } func NewTraceHubImpl( @@ -34,13 +38,17 @@ func NewTraceHubImpl( datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, + traceRepo trace_repo.ITraceRepo, + tenantProvider tenant.ITenantProvider, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ - taskRepo: tRepo, - ticker: ticker, - stopChan: make(chan struct{}), + taskRepo: tRepo, + ticker: ticker, + stopChan: make(chan struct{}), + traceRepo: traceRepo, + tenantProvider: tenantProvider, } // 立即启动定时任务 @@ -50,9 +58,11 @@ func NewTraceHubImpl( } type TraceHubServiceImpl struct { - ticker *time.Ticker - stopChan chan struct{} - taskRepo repo.ITaskRepo + ticker *time.Ticker + stopChan chan struct{} + taskRepo repo.ITaskRepo + traceRepo trace_repo.ITraceRepo + tenantProvider tenant.ITenantProvider } const TagKeyResult = "tag_key" diff --git a/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go b/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go new file mode 100644 index 000000000..950287005 --- /dev/null +++ b/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go @@ -0,0 +1,57 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package consumer + +import ( + "context" + "time" + + "github.com/coze-dev/coze-loop/backend/infra/mq" + obapp "github.com/coze-dev/coze-loop/backend/modules/observability/application" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/pkg/conf" + "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +type CallbackConsumer struct { + handler obapp.ITaskQueueConsumer + conf.IConfigLoader +} + +func newCallbackConsumer(handler obapp.ITaskQueueConsumer, loader conf.IConfigLoader) mq.IConsumerWorker { + return &CallbackConsumer{ + handler: handler, + IConfigLoader: loader, + } +} + +func (e *CallbackConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, error) { + const key = "autotask_callback_mq_consumer_config" + cfg := &config.MqConsumerCfg{} + if err := e.UnmarshalKey(ctx, key, cfg); err != nil { + return nil, err + } + res := &mq.ConsumerConfig{ + Addr: cfg.Addr, + Topic: cfg.Topic, + ConsumerGroup: cfg.ConsumerGroup, + ConsumeTimeout: time.Duration(cfg.Timeout) * time.Millisecond, + ConsumeGoroutineNums: cfg.WorkerNum, + } + return res, nil +} + +func (e *CallbackConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) error { + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) + event := new(entity.AutoEvalEvent) + if err := json.Unmarshal(ext.Body, event); err != nil { + logs.CtxError(ctx, "Callback msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) + return nil + } + return e.handler.CallBack(ctx, event) +} diff --git a/backend/modules/observability/infra/mq/consumer/consumer.go b/backend/modules/observability/infra/mq/consumer/consumer.go index 039f72859..0dfb675f9 100644 --- a/backend/modules/observability/infra/mq/consumer/consumer.go +++ b/backend/modules/observability/infra/mq/consumer/consumer.go @@ -17,5 +17,7 @@ func NewConsumerWorkers( return []mq.IConsumerWorker{ newAnnotationConsumer(handler, loader), newTaskConsumer(taskConsumer, loader), + newCallbackConsumer(taskConsumer, loader), + newCorrectionConsumer(taskConsumer, loader), }, nil } diff --git a/backend/modules/observability/infra/mq/consumer/correction_consumer.go b/backend/modules/observability/infra/mq/consumer/correction_consumer.go new file mode 100644 index 000000000..7166da2b6 --- /dev/null +++ b/backend/modules/observability/infra/mq/consumer/correction_consumer.go @@ -0,0 +1,56 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +package consumer + +import ( + "context" + "time" + + "github.com/coze-dev/coze-loop/backend/infra/mq" + obapp "github.com/coze-dev/coze-loop/backend/modules/observability/application" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/pkg/conf" + "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +type CorrectionConsumer struct { + handler obapp.ITaskQueueConsumer + conf.IConfigLoader +} + +func newCorrectionConsumer(handler obapp.ITaskQueueConsumer, loader conf.IConfigLoader) mq.IConsumerWorker { + return &CorrectionConsumer{ + handler: handler, + IConfigLoader: loader, + } +} + +func (e *CorrectionConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, error) { + const key = "correction_mq_consumer_config" + cfg := &config.MqConsumerCfg{} + if err := e.UnmarshalKey(ctx, key, cfg); err != nil { + return nil, err + } + res := &mq.ConsumerConfig{ + Addr: cfg.Addr, + Topic: cfg.Topic, + ConsumerGroup: cfg.ConsumerGroup, + ConsumeTimeout: time.Duration(cfg.Timeout) * time.Millisecond, + ConsumeGoroutineNums: cfg.WorkerNum, + } + return res, nil +} + +func (e *CorrectionConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) error { + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) + event := new(entity.CorrectionEvent) + if err := json.Unmarshal(ext.Body, event); err != nil { + logs.CtxError(ctx, "Correction msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) + return nil + } + return e.handler.Correction(ctx, event) +} From 17536527ec9c247e3a15ebce78ba3c7134a475f5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 20:13:39 +0800 Subject: [PATCH 151/462] fix --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index b62009702..a0bfc79f4 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -42,7 +42,7 @@ func NewTraceHubImpl( tenantProvider tenant.ITenantProvider, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, From 1ea6f5eee6c5cddcbc26fbf5f90d6acf325aec59 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 20:29:21 +0800 Subject: [PATCH 152/462] feat:wire gen --- .../domain/task/taskexe/processor/data_reflow.go | 8 ++++++-- .../domain/task/taskexe/processor/factory.go | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index d8695962c..a6a400d3e 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -26,8 +26,12 @@ type DataReflowProcessor struct { TaskRepo repo.ITaskRepo } -func newDataReflowProcessor() *DataReflowProcessor { - return &DataReflowProcessor{} +func newDataReflowProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, + taskRepo repo.ITaskRepo) *DataReflowProcessor { + return &DataReflowProcessor{ + datasetServiceAdaptor: datasetServiceProvider, + TaskRepo: taskRepo, + } } func (p *DataReflowProcessor) ValidateConfig(ctx context.Context, config any, workspaceID int64) error { diff --git a/backend/modules/observability/domain/task/taskexe/processor/factory.go b/backend/modules/observability/domain/task/taskexe/processor/factory.go index 14f261a69..58bdffcb5 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/taskexe/processor/factory.go @@ -44,5 +44,5 @@ func InitProcessor( evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo.ITaskRepo) { autoEvaluteProc = newAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo) - dataReflowProc = newDataReflowProcessor() + dataReflowProc = newDataReflowProcessor(datasetServiceProvider, taskRepo) } From 0110d79ca0b61cfd5a2da8fc86b59169af1094f1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 20:36:54 +0800 Subject: [PATCH 153/462] feat:fix datareflow --- .../task/taskexe/processor/auto_evaluate.go | 1 - .../task/taskexe/processor/data_reflow.go | 45 ++++++++++++++++++- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 94febf85f..55f2e50a6 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -292,7 +292,6 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas }, } taskConfig.TaskRuns = append(taskConfig.TaskRuns, &task_entity.TaskRun{ - ID: exptID, TaskID: currentTask.GetID(), WorkspaceID: currentTask.GetWorkspaceID(), TaskType: currentTask.GetTaskType(), diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index a6a400d3e..38465631f 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -5,6 +5,7 @@ package processor import ( "context" + "time" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" @@ -16,6 +17,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -23,14 +25,14 @@ var _ taskexe.Processor = (*DataReflowProcessor)(nil) type DataReflowProcessor struct { datasetServiceAdaptor *service.DatasetServiceAdaptor - TaskRepo repo.ITaskRepo + taskRepo repo.ITaskRepo } func newDataReflowProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, taskRepo repo.ITaskRepo) *DataReflowProcessor { return &DataReflowProcessor{ datasetServiceAdaptor: datasetServiceProvider, - TaskRepo: taskRepo, + taskRepo: taskRepo, } } @@ -120,5 +122,44 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) } + // 4、更新任务配置 + taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) + if err != nil { + return err + } + taskConfig.TaskStatus = task.TaskStatusRunning + cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() + cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() + // 5、创建 taskrun + taskRunConfig := &task.TaskRunConfig{ + DataReflowRunConfig: &task.DataReflowRunConfig{ + DatasetID: currentTask.GetTaskConfig().GetDataReflowConfig()[0].GetDatasetID(), + EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), + CycleStartAt: cycleStartAt, + CycleEndAt: cycleEndAt, + Status: task.RunStatusRunning, + }, + } + taskConfig.TaskRuns = append(taskConfig.TaskRuns, &task_entity.TaskRun{ + TaskID: currentTask.GetID(), + WorkspaceID: currentTask.GetWorkspaceID(), + TaskType: currentTask.GetTaskType(), + RunStatus: task.RunStatusRunning, + RunStartAt: time.UnixMilli(cycleStartAt), + RunEndAt: time.UnixMilli(cycleEndAt), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), + }) + for _, run := range taskConfig.TaskRuns { + logs.CtxInfo(ctx, "taskConfig:%+v", &run) + } + + // 6、更新任务配置 + // todo:[xun]改task_run? + err = p.taskRepo.UpdateTask(ctx, taskConfig) + if err != nil { + return err + } return nil } From 60ced2a1683fc491589e1c46fcc90113908a95db Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 21:04:54 +0800 Subject: [PATCH 154/462] feat:11 --- .../domain/task/taskexe/processor/auto_evaluate.go | 1 + .../domain/task/taskexe/processor/data_reflow.go | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 55f2e50a6..94febf85f 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -292,6 +292,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas }, } taskConfig.TaskRuns = append(taskConfig.TaskRuns, &task_entity.TaskRun{ + ID: exptID, TaskID: currentTask.GetID(), WorkspaceID: currentTask.GetWorkspaceID(), TaskType: currentTask.GetTaskType(), diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 38465631f..3fb38fb11 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -100,15 +100,17 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask session := getSession(ctx, currentTask) category := getCategory(currentTask.TaskType) dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() + var err error // 1、创建数据集 logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + var datasetID int64 for _, dataReflowConfig := range dataReflowConfigs { if dataReflowConfig.DatasetID != nil { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", dataReflowConfig.DatasetID) continue } schema := convertDatasetSchemaDTO2DO(dataReflowConfig.GetDatasetSchema()) - datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( + datasetID, err = p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( 0, currentTask.GetWorkspaceID(), dataReflowConfig.GetDatasetName(), @@ -141,6 +143,7 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask }, } taskConfig.TaskRuns = append(taskConfig.TaskRuns, &task_entity.TaskRun{ + ID: datasetID, TaskID: currentTask.GetID(), WorkspaceID: currentTask.GetWorkspaceID(), TaskType: currentTask.GetTaskType(), From 373c55a93a14b290cd808c2f49372378beca6005 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 21:17:30 +0800 Subject: [PATCH 155/462] feat:fix --- .../modules/observability/domain/trace/entity/dataset.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend/modules/observability/domain/trace/entity/dataset.go b/backend/modules/observability/domain/trace/entity/dataset.go index 26ac5324f..2e81acbcf 100644 --- a/backend/modules/observability/domain/trace/entity/dataset.go +++ b/backend/modules/observability/domain/trace/entity/dataset.go @@ -5,11 +5,13 @@ package entity import ( "context" + "strconv" "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" "github.com/coze-dev/cozeloop-go/spec/tracespec" ) @@ -58,6 +60,7 @@ type Dataset struct { // 评测集属性 EvaluationBizCategory *EvaluationBizCategory Seesion *common.Session + UserID *string } type DatasetVersion struct { @@ -97,6 +100,10 @@ type FieldSchema struct { } func NewDataset(id, spaceID int64, name string, category DatasetCategory, schema DatasetSchema, session *common.Session) *Dataset { + var userID *string + if session != nil { + userID = ptr.Of(strconv.FormatInt(*session.UserID, 10)) + } dataset := &Dataset{ ID: id, WorkspaceID: spaceID, @@ -106,6 +113,7 @@ func NewDataset(id, spaceID int64, name string, category DatasetCategory, schema }, DatasetCategory: category, Seesion: session, + UserID: userID, } return dataset } From 0c8cca9a1d07973d44a11add6526233727857a32 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 10 Sep 2025 21:41:41 +0800 Subject: [PATCH 156/462] feat:fix --- .../observability/domain/task/taskexe/processor/data_reflow.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 3fb38fb11..c2b0e232d 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -135,7 +135,7 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask // 5、创建 taskrun taskRunConfig := &task.TaskRunConfig{ DataReflowRunConfig: &task.DataReflowRunConfig{ - DatasetID: currentTask.GetTaskConfig().GetDataReflowConfig()[0].GetDatasetID(), + DatasetID: datasetID, EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), CycleStartAt: cycleStartAt, CycleEndAt: cycleEndAt, From 1a4bb4fb2c4fb7975658a6907d1c5d048e9b2ca1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 11 Sep 2025 12:00:33 +0800 Subject: [PATCH 157/462] feat:fix idl --- backend/kitex_gen/coze/loop/observability/domain/task/task.go | 2 +- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- idl/thrift/coze/loop/observability/domain/task.thrift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index a775189c2..a399a2d37 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -2480,7 +2480,7 @@ type DataReflowConfig struct { DatasetName *string `thrift:"dataset_name,2,optional" frugal:"2,optional,string" form:"dataset_name" json:"dataset_name,omitempty" query:"dataset_name"` // 数据集列数据schema DatasetSchema *dataset.DatasetSchema `thrift:"dataset_schema,3,optional" frugal:"3,optional,dataset.DatasetSchema" form:"dataset_schema" json:"dataset_schema,omitempty" query:"dataset_schema"` - FieldMappings []*dataset.FieldMapping `thrift:"field_mappings,4,optional" frugal:"4,optional,list" form:"field_mappings" json:"field_mappings,omitempty"` + FieldMappings []*dataset.FieldMapping `thrift:"field_mappings,4,optional" frugal:"4,optional,list" form:"field_mappings" json:"field_mappings,omitempty" query:"field_mappings"` } func NewDataReflowConfig() *DataReflowConfig { diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index a0bfc79f4..b62009702 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -42,7 +42,7 @@ func NewTraceHubImpl( tenantProvider tenant.ITenantProvider, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) - ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, ticker: ticker, diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 751a9f69d..b5034c8be 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -74,7 +74,7 @@ struct DataReflowConfig { 1: optional i64 dataset_id (api.js_conv="true", go.tag='json:"dataset_id"') // 数据集id,新增数据集时可为空 2: optional string dataset_name // 数据集名称 3: optional export_dataset.DatasetSchema dataset_schema (vt.not_nil="true") // 数据集列数据schema - 4: optional list field_mappings (api.body="field_mappings", vt.min_size="1", vt.max_size="100") + 4: optional list field_mappings (vt.min_size="1", vt.max_size="100") } struct AutoEvaluateConfig { From 991b2e203ed982aa89da3c0448d742698f4a74b5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 11 Sep 2025 14:24:08 +0800 Subject: [PATCH 158/462] feat:fix --- .../domain/task/taskexe/processor/data_reflow.go | 2 +- .../observability/domain/task/taskexe/tracehub/backfill.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 backend/modules/observability/domain/task/taskexe/tracehub/backfill.go diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index c2b0e232d..416ef97b1 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -62,7 +62,7 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t DatasetCategory: category, Seesion: sessionInfo, }) - _, _, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, cfg.ID, category, successItems) + _, _, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, taskRun.TaskRunConfig.DataReflowRunConfig.DatasetID, category, successItems) if err != nil { return err } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go new file mode 100644 index 000000000..02558b881 --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go @@ -0,0 +1,4 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package tracehub From 7175290bf194c81cb1e5f4f40eab0906758f1d1a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 11 Sep 2025 15:24:16 +0800 Subject: [PATCH 159/462] feat:fix --- .../domain/task/taskexe/processor/data_reflow.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 416ef97b1..68bc5f9e9 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -57,11 +57,14 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t } category := getCategory(cfg.TaskType) - successItems, _, _ := buildDatasetItems(ctx, []*loop_span.Span{trigger.Span}, mapping, workspaceID, &entity.Dataset{ - ID: taskRun.TaskRunConfig.GetDataReflowRunConfig().GetDatasetID(), - DatasetCategory: category, - Seesion: sessionInfo, - }) + successItems, _, _ := buildDatasetItems(ctx, []*loop_span.Span{trigger.Span}, mapping, workspaceID, entity.NewDataset( + taskRun.TaskRunConfig.GetDataReflowRunConfig().GetDatasetID(), + workspaceID, + "", + category, + convertDatasetSchemaDTO2DO(trigger.Task.TaskConfig.DataReflowConfig[0].GetDatasetSchema()), + sessionInfo, + )) _, _, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, taskRun.TaskRunConfig.DataReflowRunConfig.DatasetID, category, successItems) if err != nil { return err From cc74429b7dabaa06188f74f38efe91b10a9851f9 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 11 Sep 2025 17:03:33 +0800 Subject: [PATCH 160/462] feat:fix --- .../observability/domain/task/entity/event.go | 5 +++ .../task/taskexe/processor/auto_evaluate.go | 3 ++ .../domain/task/taskexe/tracehub/backfill.go | 44 +++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go index c9d847ed9..39cdaee4e 100644 --- a/backend/modules/observability/domain/task/entity/event.go +++ b/backend/modules/observability/domain/task/entity/event.go @@ -176,3 +176,8 @@ type CorrectionEvent struct { CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` } + +type BackFillEvent struct { + SpaceID int64 `json:"space_id"` + TaskID int64 `json:"task_id"` +} diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 94febf85f..dedc012a4 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -385,6 +385,9 @@ func convertDatasetSchemaDTO2DO(schema *dataset0.DatasetSchema) entity.DatasetSc result.FieldSchemas = make([]entity.FieldSchema, len(fieldSchemas)) for i, fs := range fieldSchemas { key := fs.GetKey() + if key == "" { + key = fs.GetName() + } name := fs.GetName() description := fs.GetDescription() textSchema := fs.GetTextSchema() diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go index 02558b881..0505669d6 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go @@ -2,3 +2,47 @@ // SPDX-License-Identifier: Apache-2.0 package tracehub + +//import ( +// "context" +// "sync" +// +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" +// "github.com/coze-dev/coze-loop/backend/pkg/logs" +//) +// +//func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.AutoEvalEvent) error { +// if h.isBackfillDone(ctx) { +// logs.CtxInfo(ctx, "backfill is done, task_id=%d", c.task.ID) +// return nil +// } +// +// if err := h.startTask(ctx); err != nil { +// return err +// } +// +// subCtx, cancel := context.WithCancel(ctx) +// wg := sync.WaitGroup{} +// wg.Add(1) +// goutil.GoWithRecover(ctx, func() { +// defer wg.Done() +// defer cancel() +// h.flushSpans(subCtx) +// }) +// +// listErr := h.listSpans(subCtx) +// if listErr != nil { +// logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", c.task.ID, listErr) +// // continue on error +// } +// close(h.flushCh) +// wg.Wait() +// +// return h.onHandleDone(ctx, listErr) +// return nil +//} +// +//func (h *TraceHubServiceImpl) isBackfillDone(ctx context.Context) bool { +// task := h.task +// return task.BackfillStat != nil && task.BackfillStat.BackfillStat.IsFinished() +//} From d729da379babd9a4732ffaae367cb1e6a50ce5b3 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 11 Sep 2025 17:31:40 +0800 Subject: [PATCH 161/462] fix --- .../observability/domain/task/entity/event.go | 46 +++++++++++++++---- .../domain/task/taskexe/tracehub/trace_hub.go | 4 ++ 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go index 39cdaee4e..bdd21063f 100644 --- a/backend/modules/observability/domain/task/entity/event.go +++ b/backend/modules/observability/domain/task/entity/event.go @@ -89,6 +89,33 @@ func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { if s == nil { return nil } + systemTagsString := make(map[string]string) + systemTagsLong := make(map[string]int64) + systemTagsDouble := make(map[string]float64) + tagsString := make(map[string]string) + tagsLong := make(map[string]int64) + tagsDouble := make(map[string]float64) + tagsBool := make(map[string]bool) + tagsByte := make(map[string]string) + for k, v := range s.Tags { + switch v.(type) { + case string: + tagsString[k] = v.(string) + case int64: + tagsLong[k] = v.(int64) + case float64: + tagsDouble[k] = v.(float64) + case bool: + tagsBool[k] = v.(bool) + case []byte: + tagsByte[k] = string(v.([]byte)) + default: + tagsString[k] = "" + } + } + tagsLong["input_tokens"] = s.SensitiveTags.InputTokens + tagsLong["output_tokens"] = s.SensitiveTags.OutputTokens + tagsLong["tokens"] = s.SensitiveTags.Tokens result := &loop_span.Span{ StartTime: s.StartTimeInUs / 1000, @@ -98,7 +125,7 @@ func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { TraceID: s.TraceID, DurationMicros: s.DurationInUs / 1000, PSM: s.ServerEnv.PSM, - CallType: "", + CallType: s.Tags["call_type"].(string), WorkspaceID: s.Tags["fornax_space_id"].(string), SpanName: s.SpanName, SpanType: s.SpanType, @@ -106,15 +133,14 @@ func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { StatusCode: s.StatusCode, Input: s.SensitiveTags.Input, Output: s.SensitiveTags.Output, - ObjectStorage: "", - SystemTagsString: nil, - SystemTagsLong: nil, - SystemTagsDouble: nil, - TagsString: nil, - TagsLong: nil, - TagsDouble: nil, - TagsBool: nil, - TagsByte: nil, + SystemTagsString: systemTagsString, + SystemTagsLong: systemTagsLong, + SystemTagsDouble: systemTagsDouble, + TagsString: tagsString, + TagsLong: tagsLong, + TagsDouble: tagsDouble, + TagsBool: tagsBool, + TagsByte: tagsByte, } return result diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index b62009702..d89988ab3 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -6,6 +6,7 @@ package tracehub import ( "context" "fmt" + "slices" "sync" "time" @@ -73,6 +74,9 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS var tags []metrics.T // 1、转换成标准span,并根据space_id初步过滤 span := rawSpan.RawSpanConvertToLoopSpan() + if slices.Contains([]string{"Evaluator"}, span.CallType) { + return nil + } logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) spaceList, _ := h.taskRepo.GetObjListWithTask(ctx) logs.CtxInfo(ctx, "space list: %v", spaceList) From d316ccb47caaa37e116931b0c87a1477cd4bc79b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 11 Sep 2025 19:27:47 +0800 Subject: [PATCH 162/462] feat:add merge --- .../application/convertor/trace/span.go | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/backend/modules/observability/application/convertor/trace/span.go b/backend/modules/observability/application/convertor/trace/span.go index 50f4485c1..9b1ac6a57 100644 --- a/backend/modules/observability/application/convertor/trace/span.go +++ b/backend/modules/observability/application/convertor/trace/span.go @@ -6,6 +6,7 @@ package trace import ( "strconv" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/common" @@ -171,3 +172,46 @@ func SpanListDTO2DO(spans []*span.InputSpan) loop_span.SpanList { } return ret } + +func FilterFieldsDTO2DO(f *filter.FilterFields) *loop_span.FilterFields { + if f == nil { + return nil + } + ret := &loop_span.FilterFields{} + if f.QueryAndOr != nil { + ret.QueryAndOr = ptr.Of(loop_span.QueryAndOrEnum(*f.QueryAndOr)) + } + ret.FilterFields = make([]*loop_span.FilterField, 0) + for _, field := range f.GetFilterFields() { + if field == nil { + continue + } + fieldName := "" + if field.FieldName != nil { + fieldName = *field.FieldName + } + fField := &loop_span.FilterField{ + FieldName: fieldName, + Values: field.Values, + FieldType: fieldTypeDTO2DO(field.FieldType), + } + if field.QueryAndOr != nil { + fField.QueryAndOr = ptr.Of(loop_span.QueryAndOrEnum(*field.QueryAndOr)) + } + if field.QueryType != nil { + fField.QueryType = ptr.Of(loop_span.QueryTypeEnum(*field.QueryType)) + } + if field.SubFilter != nil { + fField.SubFilter = FilterFieldsDTO2DO(field.SubFilter) + } + ret.FilterFields = append(ret.FilterFields, fField) + } + return ret +} + +func fieldTypeDTO2DO(fieldType *filter.FieldType) loop_span.FieldType { + if fieldType == nil { + return loop_span.FieldTypeString + } + return loop_span.FieldType(*fieldType) +} From 7d5f1f8316a639841eb48babee49406b0e02cdff Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 11 Sep 2025 19:39:33 +0800 Subject: [PATCH 163/462] feat:add backfill --- .../modules/observability/application/task.go | 5 ++ .../domain/task/taskexe/tracehub/backfill.go | 76 +++++++++---------- .../domain/task/taskexe/tracehub/trace_hub.go | 1 + .../infra/mq/consumer/backfill_consumer.go | 58 ++++++++++++++ 4 files changed, 101 insertions(+), 39 deletions(-) create mode 100644 backend/modules/observability/infra/mq/consumer/backfill_consumer.go diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index e34287695..859143069 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -21,6 +21,7 @@ type ITaskQueueConsumer interface { TraceHub(ctx context.Context, event *entity.RawSpan) error CallBack(ctx context.Context, event *entity.AutoEvalEvent) error Correction(ctx context.Context, event *entity.CorrectionEvent) error + BackFill(ctx context.Context, event *entity.BackFillEvent) error } type ITaskApplication interface { task.TaskService @@ -240,3 +241,7 @@ func (t *TaskApplication) CallBack(ctx context.Context, event *entity.AutoEvalEv func (t *TaskApplication) Correction(ctx context.Context, event *entity.CorrectionEvent) error { return t.tracehubSvc.Correction(ctx, event) } + +func (t *TaskApplication) BackFill(ctx context.Context, event *entity.BackFillEvent) error { + return t.tracehubSvc.BackFill(ctx, event) +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go index 0505669d6..8e3674de9 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go @@ -3,45 +3,43 @@ package tracehub -//import ( -// "context" -// "sync" -// -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" -// "github.com/coze-dev/coze-loop/backend/pkg/logs" -//) -// -//func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.AutoEvalEvent) error { -// if h.isBackfillDone(ctx) { -// logs.CtxInfo(ctx, "backfill is done, task_id=%d", c.task.ID) -// return nil -// } -// -// if err := h.startTask(ctx); err != nil { -// return err -// } -// -// subCtx, cancel := context.WithCancel(ctx) -// wg := sync.WaitGroup{} -// wg.Add(1) -// goutil.GoWithRecover(ctx, func() { -// defer wg.Done() -// defer cancel() -// h.flushSpans(subCtx) -// }) -// -// listErr := h.listSpans(subCtx) -// if listErr != nil { -// logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", c.task.ID, listErr) -// // continue on error -// } -// close(h.flushCh) -// wg.Wait() -// -// return h.onHandleDone(ctx, listErr) -// return nil -//} -// +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" +) + +func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { + //if h.isBackfillDone(ctx) { + // logs.CtxInfo(ctx, "backfill is done, task_id=%d", c.task.ID) + // return nil + //} + // + //if err := h.startTask(ctx); err != nil { + // return err + //} + // + //subCtx, cancel := context.WithCancel(ctx) + //wg := sync.WaitGroup{} + //wg.Add(1) + //goutil.GoWithRecover(ctx, func() { + // defer wg.Done() + // defer cancel() + // h.flushSpans(subCtx) + //}) + // + //listErr := h.listSpans(subCtx) + //if listErr != nil { + // logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", c.task.ID, listErr) + // // continue on error + //} + //close(h.flushCh) + //wg.Wait() + // + //return h.onHandleDone(ctx, listErr) + return nil +} + //func (h *TraceHubServiceImpl) isBackfillDone(ctx context.Context) bool { // task := h.task // return task.BackfillStat != nil && task.BackfillStat.BackfillStat.IsFinished() diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index d89988ab3..07d079a93 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -32,6 +32,7 @@ type ITraceHubService interface { TraceHub(ctx context.Context, event *entity.RawSpan) error CallBack(ctx context.Context, event *entity.AutoEvalEvent) error Correction(ctx context.Context, event *entity.CorrectionEvent) error + BackFill(ctx context.Context, event *entity.BackFillEvent) error } func NewTraceHubImpl( diff --git a/backend/modules/observability/infra/mq/consumer/backfill_consumer.go b/backend/modules/observability/infra/mq/consumer/backfill_consumer.go new file mode 100644 index 000000000..2bb163a7f --- /dev/null +++ b/backend/modules/observability/infra/mq/consumer/backfill_consumer.go @@ -0,0 +1,58 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package consumer + +import ( + "context" + "time" + + "github.com/coze-dev/coze-loop/backend/infra/mq" + obapp "github.com/coze-dev/coze-loop/backend/modules/observability/application" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/pkg/conf" + "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +type BackFillConsumer struct { + handler obapp.ITaskQueueConsumer + conf.IConfigLoader +} + +func newBackFillConsumer(handler obapp.ITaskQueueConsumer, loader conf.IConfigLoader) mq.IConsumerWorker { + return &BackFillConsumer{ + handler: handler, + IConfigLoader: loader, + } +} + +func (e *BackFillConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, error) { + const key = "BackFill_mq_consumer_config" + cfg := &config.MqConsumerCfg{} + if err := e.UnmarshalKey(ctx, key, cfg); err != nil { + return nil, err + } + res := &mq.ConsumerConfig{ + Addr: cfg.Addr, + Topic: cfg.Topic, + ConsumerGroup: cfg.ConsumerGroup, + ConsumeTimeout: time.Duration(cfg.Timeout) * time.Millisecond, + ConsumeGoroutineNums: cfg.WorkerNum, + } + return res, nil +} + +func (e *BackFillConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) error { + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) + event := new(entity.BackFillEvent) + if err := json.Unmarshal(ext.Body, event); err != nil { + logs.CtxError(ctx, "BackFill msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) + return nil + } + logs.CtxInfo(ctx, "Handle BackFill message %+v", event) + return e.handler.BackFill(ctx, event) +} From 35bbcaaebef04fafa25edcd618cdf90dd7c3e09c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 11 Sep 2025 19:49:31 +0800 Subject: [PATCH 164/462] fix --- .../observability/infra/mq/consumer/backfill_consumer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/infra/mq/consumer/backfill_consumer.go b/backend/modules/observability/infra/mq/consumer/backfill_consumer.go index 2bb163a7f..e208d8f29 100644 --- a/backend/modules/observability/infra/mq/consumer/backfill_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/backfill_consumer.go @@ -30,7 +30,7 @@ func newBackFillConsumer(handler obapp.ITaskQueueConsumer, loader conf.IConfigLo } func (e *BackFillConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, error) { - const key = "BackFill_mq_consumer_config" + const key = "backfill_mq_consumer_config" cfg := &config.MqConsumerCfg{} if err := e.UnmarshalKey(ctx, key, cfg); err != nil { return nil, err From 73a507c96940cd93c90329fd1d8d0a499ae70f89 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 11 Sep 2025 19:51:43 +0800 Subject: [PATCH 165/462] feat:new consumer --- backend/modules/observability/infra/mq/consumer/consumer.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/infra/mq/consumer/consumer.go b/backend/modules/observability/infra/mq/consumer/consumer.go index 0dfb675f9..0956fef7a 100644 --- a/backend/modules/observability/infra/mq/consumer/consumer.go +++ b/backend/modules/observability/infra/mq/consumer/consumer.go @@ -19,5 +19,6 @@ func NewConsumerWorkers( newTaskConsumer(taskConsumer, loader), newCallbackConsumer(taskConsumer, loader), newCorrectionConsumer(taskConsumer, loader), + newBackFillConsumer(taskConsumer, loader), }, nil } From b94a12ce2ab07ebc30b46bfa2e64035d2855fdff Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 15 Sep 2025 14:07:45 +0800 Subject: [PATCH 166/462] =?UTF-8?q?feat=EF=BC=9Aadd=20item=20key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/observability/application/wire.go | 1 + .../observability/application/wire_gen.go | 2 +- .../domain/component/config/config.go | 1 + .../domain/component/mq/backfill_producer.go | 7 ++ .../task/taskexe/processor/auto_evaluate.go | 7 +- .../task/taskexe/processor/data_reflow.go | 2 +- .../observability/infra/config/trace.go | 9 +++ .../infra/mq/producer/backfill_producer.go | 64 +++++++++++++++++++ 8 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 backend/modules/observability/domain/component/mq/backfill_producer.go create mode 100644 backend/modules/observability/infra/mq/producer/backfill_producer.go diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 39db9a2bd..ccc302640 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -118,6 +118,7 @@ var ( user.NewUserRPCProvider, //evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, + mq2.NewBackfillProducerImpl, traceDomainSet, ) ) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index eeade17ca..4bc8df9f3 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -253,7 +253,7 @@ var ( openApiSet = wire.NewSet( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) - taskSet = wire.NewSet(tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, traceDomainSet) + taskSet = wire.NewSet(tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, producer.NewBackfillProducerImpl, traceDomainSet) ) func NewTraceProcessorBuilder( diff --git a/backend/modules/observability/domain/component/config/config.go b/backend/modules/observability/domain/component/config/config.go index ea00b0efb..d7ea870df 100644 --- a/backend/modules/observability/domain/component/config/config.go +++ b/backend/modules/observability/domain/component/config/config.go @@ -116,6 +116,7 @@ type ITraceConfig interface { GetDefaultTraceTenant(ctx context.Context) string GetAnnotationSourceCfg(ctx context.Context) (*AnnotationSourceConfig, error) GetQueryMaxQPS(ctx context.Context, key string) (int, error) + GetBackfillMqProducerCfg(ctx context.Context) (*MqProducerCfg, error) conf.IConfigLoader } diff --git a/backend/modules/observability/domain/component/mq/backfill_producer.go b/backend/modules/observability/domain/component/mq/backfill_producer.go new file mode 100644 index 000000000..b95c80556 --- /dev/null +++ b/backend/modules/observability/domain/component/mq/backfill_producer.go @@ -0,0 +1,7 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package mq + +type IBackfillProducer interface { +} diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index dedc012a4..fb231daca 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -447,13 +447,13 @@ func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*t } func buildDatasetItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []entity.FieldMapping, - workspaceID int64, dataset *entity.Dataset, + workspaceID, taskID int64, dataset *entity.Dataset, ) (successItems, failedItems, allItems []*entity.DatasetItem) { successItems = make([]*entity.DatasetItem, 0, len(spans)) failedItems = make([]*entity.DatasetItem, 0) allItems = make([]*entity.DatasetItem, 0, len(spans)) for i, span := range spans { - item := buildDatasetItem(ctx, span, i, fieldMappings, workspaceID, dataset) + item := buildDatasetItem(ctx, span, i, fieldMappings, workspaceID, taskID, dataset) allItems = append(allItems, item) if len(item.Error) > 0 { failedItems = append(failedItems, item) @@ -465,7 +465,7 @@ func buildDatasetItems(ctx context.Context, spans []*loop_span.Span, fieldMappin return successItems, failedItems, allItems } -func buildDatasetItem(ctx context.Context, span *loop_span.Span, i int, fieldMappings []entity.FieldMapping, workspaceID int64, +func buildDatasetItem(ctx context.Context, span *loop_span.Span, i int, fieldMappings []entity.FieldMapping, workspaceID, taskID int64, dataset *entity.Dataset, ) *entity.DatasetItem { item := entity.NewDatasetItem(workspaceID, dataset.ID, span) @@ -490,6 +490,7 @@ func buildDatasetItem(ctx context.Context, span *loop_span.Span, i int, fieldMap continue } item.AddFieldData(key, mapping.FieldSchema.Name, content) + item.ItemKey = gptr.Of(fmt.Sprintf("%s_%s_%s", taskID, span.TraceID, span.SpanID)) } return item } diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 68bc5f9e9..5390f741e 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -57,7 +57,7 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t } category := getCategory(cfg.TaskType) - successItems, _, _ := buildDatasetItems(ctx, []*loop_span.Span{trigger.Span}, mapping, workspaceID, entity.NewDataset( + successItems, _, _ := buildDatasetItems(ctx, []*loop_span.Span{trigger.Span}, mapping, workspaceID, *trigger.Task.ID, entity.NewDataset( taskRun.TaskRunConfig.GetDataReflowRunConfig().GetDatasetID(), workspaceID, "", diff --git a/backend/modules/observability/infra/config/trace.go b/backend/modules/observability/infra/config/trace.go index 9d8cd8ed0..cb2b0b509 100644 --- a/backend/modules/observability/infra/config/trace.go +++ b/backend/modules/observability/infra/config/trace.go @@ -24,6 +24,7 @@ const ( traceMaxDurationDay = "trace_max_duration_day" annotationSourceCfgKey = "annotation_source_cfg" queryTraceRateLimitCfgKey = "query_trace_rate_limit_config" + backfillMqProducerCfgKey = "backfill_mq_producer_config" ) type TraceConfigCenter struct { @@ -72,6 +73,14 @@ func (t *TraceConfigCenter) GetAnnotationMqProducerCfg(ctx context.Context) (*co return cfg, nil } +func (t *TraceConfigCenter) GetBackfillMqProducerCfg(ctx context.Context) (*config.MqProducerCfg, error) { + cfg := new(config.MqProducerCfg) + if err := t.UnmarshalKey(context.Background(), backfillMqProducerCfgKey, cfg); err != nil { + return nil, err + } + return cfg, nil +} + func (t *TraceConfigCenter) GetTraceCkCfg(ctx context.Context) (*config.TraceCKCfg, error) { cfg := new(config.TraceCKCfg) if err := t.UnmarshalKey(context.Background(), traceCkCfgKey, cfg); err != nil { diff --git a/backend/modules/observability/infra/mq/producer/backfill_producer.go b/backend/modules/observability/infra/mq/producer/backfill_producer.go new file mode 100644 index 000000000..58c8ba275 --- /dev/null +++ b/backend/modules/observability/infra/mq/producer/backfill_producer.go @@ -0,0 +1,64 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package producer + +import ( + "context" + "fmt" + "sync" + "time" + + "github.com/coze-dev/coze-loop/backend/infra/mq" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" + mq2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/mq" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" +) + +var ( + backfillProducerOnce sync.Once + singletonBackfillProducer mq2.IBackfillProducer +) + +type BackfillProducerImpl struct { + topic string + mqProducer mq.IProducer +} + +func NewBackfillProducerImpl(traceConfig config.ITraceConfig, mqFactory mq.IFactory) (mq2.IBackfillProducer, error) { + var err error + backfillProducerOnce.Do(func() { + singletonBackfillProducer, err = newBackfillProducerImpl(traceConfig, mqFactory) + }) + if err != nil { + return nil, err + } else { + return singletonBackfillProducer, nil + } +} + +func newBackfillProducerImpl(traceConfig config.ITraceConfig, mqFactory mq.IFactory) (mq2.IBackfillProducer, error) { + mqCfg, err := traceConfig.GetBackfillMqProducerCfg(context.Background()) + if err != nil { + return nil, err + } + if mqCfg.Topic == "" { + return nil, fmt.Errorf("trace topic required") + } + mqProducer, err := mqFactory.NewProducer(mq.ProducerConfig{ + Addr: mqCfg.Addr, + ProduceTimeout: time.Duration(mqCfg.Timeout) * time.Millisecond, + RetryTimes: mqCfg.RetryTimes, + ProducerGroup: ptr.Of(mqCfg.ProducerGroup), + }) + if err != nil { + return nil, err + } + if err := mqProducer.Start(); err != nil { + return nil, fmt.Errorf("fail to start producer, %v", err) + } + return &BackfillProducerImpl{ + topic: mqCfg.Topic, + mqProducer: mqProducer, + }, nil +} From 57e5dd78a15d755d156d5305b6428090ebf3945b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 15 Sep 2025 15:32:33 +0800 Subject: [PATCH 167/462] feat:fix SpanFilterDTO2PO --- backend/go.mod | 1 + backend/go.sum | 4 ---- .../application/convertor/task/task.go | 4 +++- .../domain/component/mq/backfill_producer.go | 7 +++++++ .../infra/mq/producer/backfill_producer.go | 20 +++++++++++++++++++ 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/backend/go.mod b/backend/go.mod index e8546f646..a69f7bf56 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -14,6 +14,7 @@ require ( github.com/alitto/pond/v2 v2.3.4 github.com/apache/rocketmq-client-go/v2 v2.1.2 github.com/apache/thrift v0.19.0 + github.com/apaxa-go/helper v0.0.0-20180607175117-61d31b1c31c3 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/aws/aws-sdk-go v1.55.7 github.com/baidubce/bce-qianfan-sdk/go/qianfan v0.0.15 diff --git a/backend/go.sum b/backend/go.sum index 52d00b800..5c3467248 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -255,12 +255,8 @@ github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coze-dev/cozeloop-go v0.1.10-0.20250901062520-61d3699b1e83 h1:7Jh4flr9XqvissJtafWhTcs1vcErUcsjNkkniH/szxY= github.com/coze-dev/cozeloop-go v0.1.10-0.20250901062520-61d3699b1e83/go.mod h1:RMH0F6ZMwZm4ZL92IHLjTf4lmr8QHxYJVPCdz60ZbbI= -github.com/coze-dev/cozeloop-go v0.1.10-0.20250908135219-177e3684e3b0 h1:RUeArwrJ2KN9Ts0CowFjRxmdQ1lYOjBObqZa6eWc0Pk= -github.com/coze-dev/cozeloop-go v0.1.10-0.20250908135219-177e3684e3b0/go.mod h1:HItWiKBuKWwFJEcQ8ysjLjH1s8DBSEZJ4bL9H7OLI2c= github.com/coze-dev/cozeloop-go/spec v0.1.4-0.20250829072213-3812ddbfb735 h1:qxAwjHy0SLQazDO3oGJ8D24vOeM2Oz2+n27bNPegBls= github.com/coze-dev/cozeloop-go/spec v0.1.4-0.20250829072213-3812ddbfb735/go.mod h1:/f3BrWehffwXIpd4b5rYIqktLd/v5dlLBw0h9F/LQIU= -github.com/coze-dev/cozeloop-go/spec v0.1.4-0.20250901062520-61d3699b1e83 h1:6eGUPoX88L56+5qlNuEcHuBijwcZKganDjx91d/AfH4= -github.com/coze-dev/cozeloop-go/spec v0.1.4-0.20250901062520-61d3699b1e83/go.mod h1:/f3BrWehffwXIpd4b5rYIqktLd/v5dlLBw0h9F/LQIU= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso= diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index ecdfba2fa..e38ce8582 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -249,7 +249,9 @@ func SpanFilterDTO2PO(ctx context.Context, filters *filter.SpanFilterFields, wor filterDO := entity.SpanFilter{ PlatformType: filters.GetPlatformType(), SpanListType: filters.GetSpanListType(), - Filters: *filtersDO, + } + if filtersDO != nil { + filterDO.Filters = *filtersDO } //todo[xun]:coze数据处理 diff --git a/backend/modules/observability/domain/component/mq/backfill_producer.go b/backend/modules/observability/domain/component/mq/backfill_producer.go index b95c80556..d9a1b187b 100644 --- a/backend/modules/observability/domain/component/mq/backfill_producer.go +++ b/backend/modules/observability/domain/component/mq/backfill_producer.go @@ -3,5 +3,12 @@ package mq +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" +) + type IBackfillProducer interface { + SendBackfill(ctx context.Context, message *entity.BackFillEvent) error } diff --git a/backend/modules/observability/infra/mq/producer/backfill_producer.go b/backend/modules/observability/infra/mq/producer/backfill_producer.go index 58c8ba275..66f8cb74d 100644 --- a/backend/modules/observability/infra/mq/producer/backfill_producer.go +++ b/backend/modules/observability/infra/mq/producer/backfill_producer.go @@ -12,7 +12,12 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/mq" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" mq2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/mq" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/json" "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" + "github.com/coze-dev/coze-loop/backend/pkg/logs" ) var ( @@ -25,6 +30,21 @@ type BackfillProducerImpl struct { mqProducer mq.IProducer } +func (b *BackfillProducerImpl) SendBackfill(ctx context.Context, message *entity.BackFillEvent) error { + bytes, err := json.Marshal(message) + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommercialCommonInternalErrorCodeCode) + } + msg := mq.NewDeferMessage(b.topic, 10*time.Second, bytes) + _, err = b.mqProducer.Send(ctx, msg) + if err != nil { + logs.CtxWarn(ctx, "send annotation msg err: %v", err) + return errorx.WrapByCode(err, obErrorx.CommercialCommonRPCErrorCodeCode) + } + logs.CtxInfo(ctx, "send annotation msg %s successfully", string(bytes)) + return nil +} + func NewBackfillProducerImpl(traceConfig config.ITraceConfig, mqFactory mq.IFactory) (mq2.IBackfillProducer, error) { var err error backfillProducerOnce.Do(func() { From f36d253556feb0d34d5d8607b0637e8579a0164f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 15 Sep 2025 17:46:06 +0800 Subject: [PATCH 168/462] add backfill --- .../domain/task/taskexe/tracehub/backfill.go | 498 ++++++++++++++++-- .../domain/task/taskexe/tracehub/trace_hub.go | 12 + 2 files changed, 476 insertions(+), 34 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go index 8e3674de9..3c29b895b 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go @@ -5,42 +5,472 @@ package tracehub import ( "context" + "encoding/json" + "errors" + "sync" + "time" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" + "github.com/coze-dev/coze-loop/backend/pkg/lang/goroutine" + "github.com/coze-dev/coze-loop/backend/pkg/logs" ) func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { - //if h.isBackfillDone(ctx) { - // logs.CtxInfo(ctx, "backfill is done, task_id=%d", c.task.ID) - // return nil - //} - // - //if err := h.startTask(ctx); err != nil { - // return err - //} - // - //subCtx, cancel := context.WithCancel(ctx) - //wg := sync.WaitGroup{} - //wg.Add(1) - //goutil.GoWithRecover(ctx, func() { - // defer wg.Done() - // defer cancel() - // h.flushSpans(subCtx) - //}) - // - //listErr := h.listSpans(subCtx) - //if listErr != nil { - // logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", c.task.ID, listErr) - // // continue on error - //} - //close(h.flushCh) - //wg.Wait() - // - //return h.onHandleDone(ctx, listErr) - return nil -} - -//func (h *TraceHubServiceImpl) isBackfillDone(ctx context.Context) bool { -// task := h.task -// return task.BackfillStat != nil && task.BackfillStat.BackfillStat.IsFinished() -//} + // 设置当前任务上下文 + if err := h.setBackfillTask(ctx, event); err != nil { + return err + } + + // 1. 判断回溯任务是否已完成 - 避免重复执行 + if h.isBackfillDone(ctx) { + logs.CtxInfo(ctx, "backfill already completed, task_id=%d", h.task.GetID()) + return nil + } + + // 2. 启动任务 - 更新任务状态为运行中 + if err := h.startTask(ctx); err != nil { + logs.CtxError(ctx, "start backfill task failed, task_id=%d, err=%v", h.task.GetID(), err) + return err + } + + // 3. 创建并发控制机制 - 设置上下文和等待组 + subCtx, cancel := context.WithCancel(ctx) + defer cancel() + wg := sync.WaitGroup{} + + // 初始化 flushCh 通道和错误收集器 + h.flushCh = make(chan *flushReq, 100) // 缓冲通道,避免阻塞 + h.flushErrLock.Lock() + h.flushErr = nil // 重置错误收集器 + h.flushErrLock.Unlock() + + // 4. 启动异步刷新处理 - 通过 goroutine 实现并发处理 + wg.Add(1) + goroutine.Go(ctx, func() { + defer wg.Done() + h.flushSpans(subCtx) + }) + + // 5. 获取 span 数据 - 从观测服务获取需要处理的数据 + listErr := h.listSpans(subCtx) + if listErr != nil { + logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", h.task.GetID(), listErr) + // continue on error,不中断处理流程 + } + + // 关闭通道并等待处理完成 + close(h.flushCh) + wg.Wait() + + // 6. 同步等待完成 - 确保所有数据处理完毕 + return h.onHandleDone(ctx, listErr) +} + +// setBackfillTask 设置当前回填任务的上下文 +func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity.BackFillEvent) error { + taskConfig, err := h.taskRepo.GetTask(ctx, event.TaskID, nil, nil) + if err != nil { + logs.CtxError(ctx, "get task config failed, task_id=%d, err=%v", event.TaskID, err) + return err + } + if taskConfig == nil { + return errors.New("task config not found") + } + + // 解析任务规则 + var rule *task.Rule + if taskConfig.Sampler != nil && *taskConfig.Sampler != "" { + var sampler task.Sampler + if err := json.Unmarshal([]byte(*taskConfig.Sampler), &sampler); err == nil { + rule = &task.Rule{ + Sampler: &sampler, + } + } + } + + // 转换为 task.Task 结构 + taskStatus := task.TaskStatusUnstarted // 默认状态 + h.task = &task.Task{ + ID: &taskConfig.ID, + WorkspaceID: &taskConfig.WorkspaceID, + TaskStatus: &taskStatus, + Rule: rule, + } + + return nil +} + +// isBackfillDone 检查回填任务是否已完成 +func (h *TraceHubServiceImpl) isBackfillDone(ctx context.Context) bool { + if h.task == nil { + return false + } + + // 检查任务状态是否为已完成 + status := h.task.GetTaskStatus() + return status == task.TaskStatusSuccess || status == task.TaskStatusDisabled +} + +// startTask 启动回填任务 +func (h *TraceHubServiceImpl) startTask(ctx context.Context) error { + if h.task == nil { + return errors.New("task not initialized") + } + + // 这里可以添加任务状态更新逻辑 + logs.CtxInfo(ctx, "starting backfill task, task_id=%d", h.task.GetID()) + return nil +} + +func (h *TraceHubServiceImpl) listSpans(ctx context.Context) error { + // 1. 获取任务配置 + taskConfig, err := h.taskRepo.GetTask(ctx, h.task.GetID(), nil, nil) + if err != nil { + logs.CtxError(ctx, "get task config failed, task_id=%d, err=%v", h.task.GetID(), err) + return err + } + if taskConfig == nil { + return errors.New("task config not found") + } + + // 2. 解析回填时间窗口 + backfillTime, err := h.parseBackfillTime(ctx, taskConfig) + if err != nil { + logs.CtxError(ctx, "parse backfill time failed, task_id=%d, err=%v", h.task.GetID(), err) + return err + } + + // 3. 获取租户信息 + tenants, err := h.getTenantsForTask(ctx, taskConfig) + if err != nil { + logs.CtxError(ctx, "get tenants failed, task_id=%d, err=%v", h.task.GetID(), err) + return err + } + + // 4. 构建查询参数 + listParam := &repo.ListSpansParam{ + Tenants: tenants, + Filters: h.buildSpanFilters(taskConfig), + StartAt: backfillTime.GetStartAt(), + EndAt: backfillTime.GetEndAt(), + Limit: 1000, // 分页大小 + DescByStartTime: true, + NotQueryAnnotation: true, // 回填时不需要查询注解 + } + + // 5. 分页查询并发送数据 + return h.fetchAndSendSpans(ctx, listParam) +} + +// parseBackfillTime 解析回填时间窗口 +func (h *TraceHubServiceImpl) parseBackfillTime(ctx context.Context, taskConfig *entity.ObservabilityTask) (*task.EffectiveTime, error) { + // 优先使用 BackfillEffectiveTime + if taskConfig.BackfillEffectiveTime != nil && *taskConfig.BackfillEffectiveTime != "" { + var backfillTime task.EffectiveTime + if err := json.Unmarshal([]byte(*taskConfig.BackfillEffectiveTime), &backfillTime); err != nil { + logs.CtxWarn(ctx, "parse backfill effective time failed, use default, task_id=%d, err=%v", h.task.GetID(), err) + } else { + return &backfillTime, nil + } + } + + // 使用任务的有效时间 + if taskConfig.EffectiveTime != nil && *taskConfig.EffectiveTime != "" { + var effectiveTime task.EffectiveTime + if err := json.Unmarshal([]byte(*taskConfig.EffectiveTime), &effectiveTime); err != nil { + logs.CtxWarn(ctx, "parse effective time failed, use default, task_id=%d, err=%v", h.task.GetID(), err) + } else { + return &effectiveTime, nil + } + } + + // 使用默认时间窗口:过去24小时 + now := time.Now().UnixMilli() + startTime := now - 24*60*60*1000 // 24小时前 + return &task.EffectiveTime{ + StartAt: &startTime, + EndAt: &now, + }, nil +} + +// getTenantsForTask 获取任务的租户信息 +func (h *TraceHubServiceImpl) getTenantsForTask(ctx context.Context, taskConfig *entity.ObservabilityTask) ([]string, error) { + var platformType loop_span.PlatformType = loop_span.PlatformCozeLoop // 默认值 + + // 从 SpanFilter 中解析平台类型 + if taskConfig.SpanFilter != nil && *taskConfig.SpanFilter != "" { + var spanFilter map[string]interface{} + if err := json.Unmarshal([]byte(*taskConfig.SpanFilter), &spanFilter); err == nil { + if platform, ok := spanFilter["platform_type"].(string); ok { + platformType = loop_span.PlatformType(platform) + } + } + } + + return h.getTenants(ctx, platformType) +} + +// buildSpanFilters 构建 span 过滤条件 +func (h *TraceHubServiceImpl) buildSpanFilters(taskConfig *entity.ObservabilityTask) *loop_span.FilterFields { + // 可以根据任务配置构建更复杂的过滤条件 + // 这里简化处理,返回 nil 表示不添加额外过滤 + return nil +} + +// fetchAndSendSpans 分页获取并发送 span 数据 +func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam *repo.ListSpansParam) error { + pageToken := "" + totalCount := int64(0) + + for { + listParam.PageToken = pageToken + + result, err := h.traceRepo.ListSpans(ctx, listParam) + if err != nil { + logs.CtxError(ctx, "list spans failed, task_id=%d, page_token=%s, err=%v", h.task.GetID(), pageToken, err) + return err + } + + if len(result.Spans) > 0 { + // 发送到通道 + flushReq := &flushReq{ + retrievedSpanCount: int64(len(result.Spans)), + pageToken: result.PageToken, + spans: result.Spans, + noMore: !result.HasMore, + } + + select { + case h.flushCh <- flushReq: + totalCount += int64(len(result.Spans)) + logs.CtxInfo(ctx, "sent %d spans to flush channel, total=%d, task_id=%d", len(result.Spans), totalCount, h.task.GetID()) + case <-ctx.Done(): + logs.CtxWarn(ctx, "context cancelled while sending spans, task_id=%d", h.task.GetID()) + return ctx.Err() + } + } + + if !result.HasMore { + logs.CtxInfo(ctx, "completed listing spans, total_count=%d, task_id=%d", totalCount, h.task.GetID()) + break + } + + pageToken = result.PageToken + } + + return nil +} + +func (h *TraceHubServiceImpl) flushSpans(ctx context.Context) { + for { + select { + case fr, ok := <-h.flushCh: + if !ok { + // 通道已关闭,退出 + return + } + + flushed, sampled, err := h.doFlush(ctx, fr) + if err != nil { + logs.CtxError(ctx, "flush spans failed, task_id=%d, err=%v", h.task.GetID(), err) + // 收集错误,继续处理 + h.flushErrLock.Lock() + h.flushErr = append(h.flushErr, err) + h.flushErrLock.Unlock() + } + + // 记录处理结果 + h.recordFlushResult(ctx, fr, flushed, sampled, err) + + case <-ctx.Done(): + logs.CtxWarn(ctx, "flush spans context cancelled, task_id=%d", h.task.GetID()) + return + } + } +} + +func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq) (flushed, sampled int, _ error) { + if fr == nil || len(fr.spans) == 0 { + return 0, 0, nil + } + + logs.CtxInfo(ctx, "processing %d spans for backfill, task_id=%d", len(fr.spans), h.task.GetID()) + + // 1. 数据预处理和过滤 + validSpans := h.filterValidSpans(fr.spans) + if len(validSpans) == 0 { + logs.CtxInfo(ctx, "no valid spans after filtering, task_id=%d", h.task.GetID()) + return 0, 0, nil + } + + // 2. 应用采样逻辑 + sampledSpans := h.applySampling(validSpans) + if len(sampledSpans) == 0 { + logs.CtxInfo(ctx, "no spans after sampling, task_id=%d", h.task.GetID()) + return len(validSpans), 0, nil + } + + // 3. 执行具体的业务逻辑处理 + err := h.processSpansForBackfill(ctx, sampledSpans) + if err != nil { + logs.CtxError(ctx, "process spans failed, task_id=%d, err=%v", h.task.GetID(), err) + return len(validSpans), len(sampledSpans), err + } + + logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", + len(sampledSpans), len(validSpans), h.task.GetID()) + + return len(validSpans), len(sampledSpans), nil +} + +// filterValidSpans 过滤有效的 span 数据 +func (h *TraceHubServiceImpl) filterValidSpans(spans []*loop_span.Span) []*loop_span.Span { + validSpans := make([]*loop_span.Span, 0, len(spans)) + + for _, span := range spans { + if h.isValidSpan(span) { + validSpans = append(validSpans, span) + } + } + + return validSpans +} + +// isValidSpan 检查 span 是否有效 +func (h *TraceHubServiceImpl) isValidSpan(span *loop_span.Span) bool { + if span == nil { + return false + } + + // 基本字段检查 + if span.SpanID == "" || span.TraceID == "" || span.WorkspaceID == "" { + return false + } + + // 时间有效性检查 + if span.StartTime <= 0 { + return false + } + + return true +} + +// applySampling 应用采样逻辑 +func (h *TraceHubServiceImpl) applySampling(spans []*loop_span.Span) []*loop_span.Span { + if h.task == nil || h.task.Rule == nil { + return spans + } + + sampler := h.task.GetRule().GetSampler() + if sampler == nil { + return spans + } + + sampleRate := sampler.GetSampleRate() + if sampleRate >= 1.0 { + return spans // 100% 采样 + } + + if sampleRate <= 0.0 { + return nil // 0% 采样 + } + + // 计算采样数量 + sampleSize := int(float64(len(spans)) * sampleRate) + if sampleSize == 0 && len(spans) > 0 { + sampleSize = 1 // 至少采样一个 + } + + if sampleSize >= len(spans) { + return spans + } + + return spans[:sampleSize] +} + +// processSpansForBackfill 处理回填的 span 数据 +func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans []*loop_span.Span) error { + // 批量处理 spans,提高效率 + const batchSize = 100 + + for i := 0; i < len(spans); i += batchSize { + end := i + batchSize + if end > len(spans) { + end = len(spans) + } + + batch := spans[i:end] + if err := h.processBatchSpans(ctx, batch); err != nil { + logs.CtxError(ctx, "process batch spans failed, task_id=%d, batch_start=%d, err=%v", + h.task.GetID(), i, err) + // 继续处理下一批,不因单批失败而中断 + continue + } + } + + return nil +} + +// processBatchSpans 批量处理 span 数据 +func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*loop_span.Span) error { + // 这里实现具体的批量处理逻辑 + // 例如:数据转换、存储、触发下游处理等 + + for _, span := range spans { + // 执行单个 span 的处理逻辑 + if err := h.processIndividualSpan(ctx, span); err != nil { + logs.CtxWarn(ctx, "process individual span failed, span_id=%s, trace_id=%s, err=%v", + span.SpanID, span.TraceID, err) + // 继续处理其他span,不因单个失败而中断批处理 + } + } + + return nil +} + +// processIndividualSpan 处理单个 span +func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *loop_span.Span) error { + // 根据任务类型执行相应的处理逻辑 + logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", + span.SpanID, span.TraceID, h.task.GetID()) + + // 这里可以添加具体的处理逻辑: + // 1. 数据验证 + // 2. 格式转换 + // 3. 业务逻辑处理 + // 4. 存储或转发 + + return nil +} + +// recordFlushResult 记录刷新结果 +func (h *TraceHubServiceImpl) recordFlushResult(ctx context.Context, fr *flushReq, flushed, sampled int, err error) { + if err != nil { + logs.CtxError(ctx, "flush result: error=%v, task_id=%d", err, h.task.GetID()) + } else { + logs.CtxInfo(ctx, "flush result: flushed=%d, sampled=%d, task_id=%d", flushed, sampled, h.task.GetID()) + } +} + +// onHandleDone 处理完成回调 +func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error) error { + // 收集所有错误 + h.flushErrLock.Lock() + allErrors := append([]error{}, h.flushErr...) + if listErr != nil { + allErrors = append(allErrors, listErr) + } + h.flushErrLock.Unlock() + + if len(allErrors) > 0 { + logs.CtxWarn(ctx, "backfill completed with %d errors, task_id=%d", len(allErrors), h.task.GetID()) + // 返回第一个错误作为代表 + return allErrors[0] + } + + logs.CtxInfo(ctx, "backfill completed successfully, task_id=%d", h.task.GetID()) + return nil +} \ No newline at end of file diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 07d079a93..4072fd9da 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -65,6 +65,18 @@ type TraceHubServiceImpl struct { taskRepo repo.ITaskRepo traceRepo trace_repo.ITraceRepo tenantProvider tenant.ITenantProvider + + task *task.Task + flushCh chan *flushReq + flushErrLock sync.Mutex + flushErr []error +} + +type flushReq struct { + retrievedSpanCount int64 + pageToken string + spans []*loop_span.Span + noMore bool } const TagKeyResult = "tag_key" From 1563e8f41c5aa246cedf060b88fc87a2ee96d2d1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 15 Sep 2025 19:09:05 +0800 Subject: [PATCH 169/462] feat:add back fill --- .../modules/observability/application/wire.go | 7 +- .../observability/application/wire_gen.go | 24 +-- .../domain/task/service/task_service.go | 143 +++++++++++++++++- .../task/taskexe/processor/auto_evaluate.go | 2 +- .../task/taskexe/processor/data_reflow.go | 2 +- .../domain/task/taskexe/types.go | 2 +- 6 files changed, 159 insertions(+), 21 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index ccc302640..47fd6f40e 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -63,9 +63,12 @@ var ( taskDomainSet = wire.NewSet( taskSvc.NewTaskServiceImpl, obrepo.NewTaskRepoImpl, + obrepo.NewTaskRunRepoImpl, mysqldao.NewTaskDaoImpl, tredis.NewTaskDAO, + tredis.NewTaskRunDAO, mysqldao.NewTaskRunDaoImpl, + mq2.NewBackfillProducerImpl, ) traceDomainSet = wire.NewSet( service.NewTraceServiceImpl, @@ -118,7 +121,6 @@ var ( user.NewUserRPCProvider, //evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, - mq2.NewBackfillProducerImpl, traceDomainSet, ) ) @@ -246,6 +248,7 @@ func InitTaskApplication( configFactory conf.IConfigLoaderFactory, ckDb ck.Provider, redis redis.Cmdable, + mqFactory mq.IFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, @@ -254,4 +257,4 @@ func InitTaskApplication( datasetService datasetservice.Client) (ITaskApplication, error) { wire.Build(taskSet) return nil, nil -} +} \ No newline at end of file diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 4bc8df9f3..b78757008 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -192,13 +192,24 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb return iTraceIngestionApplication, nil } -func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, ckDb ck.Provider, redis2 redis.Cmdable, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client) (ITaskApplication, error) { +func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, ckDb ck.Provider, redis2 redis.Cmdable, mqFactory mq.IFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client) (ITaskApplication, error) { iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao) + iTaskRunDAO := dao.NewTaskRunDAO(redis2) + iTaskRunRepo := repo.NewTaskRunRepoImpl(iTaskRunDao, idgen2, iTaskRunDAO) iUserProvider := user.NewUserRPCProvider(userClient) - iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iUserProvider, idgen2) + iConfigLoader, err := NewTraceConfigLoader(configFactory) + if err != nil { + return nil, err + } + iTraceConfig := config.NewTraceConfigCenter(iConfigLoader) + iBackfillProducer, err := producer.NewBackfillProducerImpl(iTraceConfig, mqFactory) + if err != nil { + return nil, err + } + iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iTaskRunRepo, iUserProvider, idgen2, iBackfillProducer) if err != nil { return nil, err } @@ -214,11 +225,6 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto if err != nil { return nil, err } - iConfigLoader, err := NewTraceConfigLoader(configFactory) - if err != nil { - return nil, err - } - iTraceConfig := config.NewTraceConfigCenter(iConfigLoader) iTraceRepo, err := repo.NewTraceCKRepoImpl(iSpansDao, iAnnotationDao, iTraceConfig) if err != nil { return nil, err @@ -238,7 +244,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto // wire.go: var ( - taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, mysql.NewTaskRunDaoImpl) + taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, repo.NewTaskRunRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, dao.NewTaskRunDAO, mysql.NewTaskRunDaoImpl, producer.NewBackfillProducerImpl) traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, evaluator.NewEvaluatorRPCProvider, NewDatasetServiceAdapter, taskDomainSet, @@ -253,7 +259,7 @@ var ( openApiSet = wire.NewSet( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) - taskSet = wire.NewSet(tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, producer.NewBackfillProducerImpl, traceDomainSet) + taskSet = wire.NewSet(tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, traceDomainSet) ) func NewTraceProcessorBuilder( diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 403730aaf..a03a8a599 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -5,6 +5,7 @@ package service import ( "context" + "encoding/json" "time" "github.com/bytedance/gg/gptr" @@ -14,8 +15,11 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/mq" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" @@ -74,23 +78,39 @@ type ITaskService interface { func NewTaskServiceImpl( tRepo repo.ITaskRepo, + tRunRepo repo.ITaskRunRepo, userProvider rpc.IUserProvider, idGenerator idgen.IIDGenerator, + backfillProducer mq.IBackfillProducer, ) (ITaskService, error) { return &TaskServiceImpl{ - TaskRepo: tRepo, - userProvider: userProvider, - idGenerator: idGenerator, + TaskRepo: tRepo, + TaskRunRepo: tRunRepo, + userProvider: userProvider, + idGenerator: idGenerator, + backfillProducer: backfillProducer, }, nil } type TaskServiceImpl struct { - TaskRepo repo.ITaskRepo - userProvider rpc.IUserProvider - idGenerator idgen.IIDGenerator + TaskRepo repo.ITaskRepo + TaskRunRepo repo.ITaskRunRepo + userProvider rpc.IUserProvider + idGenerator idgen.IIDGenerator + backfillProducer mq.IBackfillProducer } func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) { + proc, err := processor.NewProcessor(ctx, req.Task.TaskType) + if err != nil { + logs.CtxError(ctx, "NewProcessor err:%v", err) + return nil, err + } + // 校验配置项是否有效 + if err = proc.ValidateConfig(ctx, req.Task); err != nil { + logs.CtxError(ctx, "ValidateConfig err:%v", err) + return nil, err + } userID := session.UserIDInCtxOrEmpty(ctx) if userID == "" { return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) @@ -100,7 +120,30 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if err != nil { return nil, err } - //todo[xun]:历史回溯数据发mq + + // TODO 1: 历史回溯数据发MQ + if t.shouldTriggerBackfill(req.Task) { + backfillEvent := &entity.BackFillEvent{ + SpaceID: req.Task.GetWorkspaceID(), + TaskID: id, + } + + // 异步发送MQ消息,不阻塞任务创建流程 + go func() { + if err := t.sendBackfillMessage(context.Background(), backfillEvent); err != nil { + logs.CtxWarn(ctx, "send backfill message failed, task_id=%d, err=%v", id, err) + } + }() + } + + // TODO 2: 数据回流任务创建taskrun + if t.shouldCreateTaskRun(req.Task) { + if err := t.createInitialTaskRun(ctx, id, req.Task, userID); err != nil { + logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) + // 根据业务需求,TaskRun创建失败不影响任务创建,只记录错误日志 + } + } + return &CreateTaskResp{TaskID: &id}, nil } func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (err error) { @@ -225,3 +268,89 @@ func (t *TaskServiceImpl) CheckTaskName(ctx context.Context, req *CheckTaskNameR } return resp, nil } + +// shouldTriggerBackfill 判断是否需要发送历史回溯MQ +func (t *TaskServiceImpl) shouldTriggerBackfill(taskDO *task.Task) bool { + // 检查任务类型 + taskType := taskDO.GetTaskType() + if taskType != task.TaskTypeAutoEval && taskType != task.TaskTypeAutoDataReflow { + return false + } + + // 检查回填时间配置 + rule := taskDO.GetRule() + if rule == nil { + return false + } + + backfillTime := rule.GetBackfillEffectiveTime() + if backfillTime == nil { + return false + } + + return backfillTime.GetStartAt() > 0 && + backfillTime.GetEndAt() > 0 && + backfillTime.GetStartAt() < backfillTime.GetEndAt() +} + +// shouldCreateTaskRun 判断是否需要创建TaskRun +func (t *TaskServiceImpl) shouldCreateTaskRun(taskDO *task.Task) bool { + // 只有数据回流任务需要立即创建TaskRun + return taskDO.GetTaskType() == task.TaskTypeAutoDataReflow +} + +// sendBackfillMessage 发送MQ消息 +func (t *TaskServiceImpl) sendBackfillMessage(ctx context.Context, event *entity.BackFillEvent) error { + if t.backfillProducer == nil { + return errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg("backfill producer not initialized")) + } + + return t.backfillProducer.SendBackfill(ctx, event) +} + +// createInitialTaskRun 创建TaskRun实例 +func (t *TaskServiceImpl) createInitialTaskRun(ctx context.Context, taskID int64, taskDO *task.Task, userID string) error { + // 计算任务运行时间 + //effectiveTime := taskDO.GetRule().GetEffectiveTime() + //startTime := time.UnixMilli(effectiveTime.GetStartAt()) + //endTime := time.UnixMilli(effectiveTime.GetEndAt()) + // + //// 构建运行配置 + //runConfig := &task.TaskRunConfig{ + // DataReflowRunConfig: &task.DataReflowRunConfig{ + // DatasetID: 0, // 将在processor中设置 + // EndAt: effectiveTime.GetEndAt(), + // CycleStartAt: effectiveTime.GetStartAt(), + // CycleEndAt: effectiveTime.GetEndAt(), + // Status: task.TaskStatusPending, + // }, + //} + // + //taskRun := &entity.TaskRun{ + // TaskID: taskID, + // WorkspaceID: taskDO.GetWorkspaceID(), + // TaskType: taskDO.GetTaskType(), + // RunStatus: task.TaskStatusPending, + // RunStartAt: startTime, + // RunEndAt: endTime, + // RunConfig: ptr.Of(t.toJSONString(ctx, runConfig)), + // CreatedAt: time.Now(), + // UpdatedAt: time.Now(), + //} + // + //_, err := t.TaskRunRepo.CreateTaskRun(ctx, taskRun) + return nil +} + +// toJSONString 将对象转换为JSON字符串 +func (t *TaskServiceImpl) toJSONString(ctx context.Context, obj interface{}) string { + if obj == nil { + return "" + } + jsonData, err := json.Marshal(obj) + if err != nil { + logs.CtxError(ctx, "JSON marshal error: %v", err) + return "" + } + return string(jsonData) +} diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index fb231daca..b19703085 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -58,7 +58,7 @@ func newAutoEvaluteProcessor( } } -func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any, workspaceID int64) error { +func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any) error { return nil } diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 5390f741e..5932a07b3 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -36,7 +36,7 @@ func newDataReflowProcessor(datasetServiceProvider *service.DatasetServiceAdapto } } -func (p *DataReflowProcessor) ValidateConfig(ctx context.Context, config any, workspaceID int64) error { +func (p *DataReflowProcessor) ValidateConfig(ctx context.Context, config any) error { return nil } diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index 19b15e644..43bf45e68 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -23,7 +23,7 @@ var ( ) type Processor interface { - ValidateConfig(ctx context.Context, config any, workspaceID int64) error // 校验配置项是否有效 + ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 OnChangeProcessor(ctx context.Context, task *task.Task, taskOp task.TaskStatus) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 Finish(ctx context.Context, config any, trigger *Trigger) error //Finish From eafe38fd7136799a2fa16fad669cc3fb3b0c5e7d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 15 Sep 2025 20:52:12 +0800 Subject: [PATCH 170/462] feat:add back fill --- .../domain/task/service/task_service.go | 28 ++- .../domain/task/taskexe/tracehub/backfill.go | 196 +++++++++++++----- .../domain/task/taskexe/tracehub/trace_hub.go | 1 + 3 files changed, 163 insertions(+), 62 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index a03a8a599..4be240784 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -115,13 +115,26 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if userID == "" { return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) } + // 数据回流任务——创建/更新输出数据集 + if t.shouldCreateTaskRun(req.Task) { + if err = t.upsertDatasetForTask(ctx, req.Task); err != nil { + return nil, err + } + } + // 创建task taskPO := tconv.CreateTaskDTO2PO(ctx, req.Task, userID) id, err := t.TaskRepo.CreateTask(ctx, taskPO) if err != nil { return nil, err } - - // TODO 1: 历史回溯数据发MQ + // 创建taskrun + if t.shouldCreateTaskRun(req.Task) { + if err := t.createInitialTaskRun(ctx, id, req.Task, userID); err != nil { + logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) + // 根据业务需求,TaskRun创建失败不影响任务创建,只记录错误日志 + } + } + // TODO: 历史回溯数据发MQ if t.shouldTriggerBackfill(req.Task) { backfillEvent := &entity.BackFillEvent{ SpaceID: req.Task.GetWorkspaceID(), @@ -136,14 +149,6 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r }() } - // TODO 2: 数据回流任务创建taskrun - if t.shouldCreateTaskRun(req.Task) { - if err := t.createInitialTaskRun(ctx, id, req.Task, userID); err != nil { - logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) - // 根据业务需求,TaskRun创建失败不影响任务创建,只记录错误日志 - } - } - return &CreateTaskResp{TaskID: &id}, nil } func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (err error) { @@ -292,6 +297,9 @@ func (t *TaskServiceImpl) shouldTriggerBackfill(taskDO *task.Task) bool { backfillTime.GetEndAt() > 0 && backfillTime.GetStartAt() < backfillTime.GetEndAt() } +func (t *TaskServiceImpl) upsertDatasetForTask(ctx context.Context, task *task.Task) error { + return nil +} // shouldCreateTaskRun 判断是否需要创建TaskRun func (t *TaskServiceImpl) shouldCreateTaskRun(taskDO *task.Task) bool { diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go index 3c29b895b..2bd29e47a 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go @@ -11,10 +11,16 @@ import ( "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service/trace/span_filter" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/lang/goroutine" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -40,13 +46,13 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi subCtx, cancel := context.WithCancel(ctx) defer cancel() wg := sync.WaitGroup{} - + // 初始化 flushCh 通道和错误收集器 h.flushCh = make(chan *flushReq, 100) // 缓冲通道,避免阻塞 h.flushErrLock.Lock() h.flushErr = nil // 重置错误收集器 h.flushErrLock.Unlock() - + // 4. 启动异步刷新处理 - 通过 goroutine 实现并发处理 wg.Add(1) goroutine.Go(ctx, func() { @@ -60,11 +66,11 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", h.task.GetID(), listErr) // continue on error,不中断处理流程 } - + // 关闭通道并等待处理完成 close(h.flushCh) wg.Wait() - + // 6. 同步等待完成 - 确保所有数据处理完毕 return h.onHandleDone(ctx, listErr) } @@ -79,7 +85,7 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity if taskConfig == nil { return errors.New("task config not found") } - + // 解析任务规则 var rule *task.Rule if taskConfig.Sampler != nil && *taskConfig.Sampler != "" { @@ -90,7 +96,7 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity } } } - + // 转换为 task.Task 结构 taskStatus := task.TaskStatusUnstarted // 默认状态 h.task = &task.Task{ @@ -99,7 +105,7 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity TaskStatus: &taskStatus, Rule: rule, } - + return nil } @@ -108,7 +114,7 @@ func (h *TraceHubServiceImpl) isBackfillDone(ctx context.Context) bool { if h.task == nil { return false } - + // 检查任务状态是否为已完成 status := h.task.GetTaskStatus() return status == task.TaskStatusSuccess || status == task.TaskStatusDisabled @@ -119,7 +125,7 @@ func (h *TraceHubServiceImpl) startTask(ctx context.Context) error { if h.task == nil { return errors.New("task not initialized") } - + // 这里可以添加任务状态更新逻辑 logs.CtxInfo(ctx, "starting backfill task, task_id=%d", h.task.GetID()) return nil @@ -127,24 +133,25 @@ func (h *TraceHubServiceImpl) startTask(ctx context.Context) error { func (h *TraceHubServiceImpl) listSpans(ctx context.Context) error { // 1. 获取任务配置 - taskConfig, err := h.taskRepo.GetTask(ctx, h.task.GetID(), nil, nil) + task, err := h.taskRepo.GetTask(ctx, h.task.GetID(), nil, nil) if err != nil { logs.CtxError(ctx, "get task config failed, task_id=%d, err=%v", h.task.GetID(), err) return err } - if taskConfig == nil { + if task == nil { return errors.New("task config not found") } + taskConfig := tconv.TaskPO2DTO(ctx, task, nil) // 2. 解析回填时间窗口 - backfillTime, err := h.parseBackfillTime(ctx, taskConfig) + backfillTime, err := h.parseBackfillTime(ctx, task) if err != nil { logs.CtxError(ctx, "parse backfill time failed, task_id=%d, err=%v", h.task.GetID(), err) return err } // 3. 获取租户信息 - tenants, err := h.getTenantsForTask(ctx, taskConfig) + tenants, err := h.getTenantsForTask(ctx, task) if err != nil { logs.CtxError(ctx, "get tenants failed, task_id=%d, err=%v", h.task.GetID(), err) return err @@ -153,7 +160,7 @@ func (h *TraceHubServiceImpl) listSpans(ctx context.Context) error { // 4. 构建查询参数 listParam := &repo.ListSpansParam{ Tenants: tenants, - Filters: h.buildSpanFilters(taskConfig), + Filters: h.buildSpanFilters(ctx, taskConfig), StartAt: backfillTime.GetStartAt(), EndAt: backfillTime.GetEndAt(), Limit: 1000, // 分页大小 @@ -176,7 +183,7 @@ func (h *TraceHubServiceImpl) parseBackfillTime(ctx context.Context, taskConfig return &backfillTime, nil } } - + // 使用任务的有效时间 if taskConfig.EffectiveTime != nil && *taskConfig.EffectiveTime != "" { var effectiveTime task.EffectiveTime @@ -186,7 +193,7 @@ func (h *TraceHubServiceImpl) parseBackfillTime(ctx context.Context, taskConfig return &effectiveTime, nil } } - + // 使用默认时间窗口:过去24小时 now := time.Now().UnixMilli() startTime := now - 24*60*60*1000 // 24小时前 @@ -199,7 +206,7 @@ func (h *TraceHubServiceImpl) parseBackfillTime(ctx context.Context, taskConfig // getTenantsForTask 获取任务的租户信息 func (h *TraceHubServiceImpl) getTenantsForTask(ctx context.Context, taskConfig *entity.ObservabilityTask) ([]string, error) { var platformType loop_span.PlatformType = loop_span.PlatformCozeLoop // 默认值 - + // 从 SpanFilter 中解析平台类型 if taskConfig.SpanFilter != nil && *taskConfig.SpanFilter != "" { var spanFilter map[string]interface{} @@ -209,25 +216,110 @@ func (h *TraceHubServiceImpl) getTenantsForTask(ctx context.Context, taskConfig } } } - + return h.getTenants(ctx, platformType) } +type ListSpansReq struct { + WorkspaceID int64 + ThirdPartyWorkspaceID string + StartTime int64 // ms + EndTime int64 // ms + Filters *loop_span.FilterFields + Limit int32 + DescByStartTime bool + PageToken string + PlatformType loop_span.PlatformType + SpanListType loop_span.SpanListType +} + // buildSpanFilters 构建 span 过滤条件 -func (h *TraceHubServiceImpl) buildSpanFilters(taskConfig *entity.ObservabilityTask) *loop_span.FilterFields { +func (h *TraceHubServiceImpl) buildSpanFilters(ctx context.Context, taskConfig *task.Task) *loop_span.FilterFields { // 可以根据任务配置构建更复杂的过滤条件 // 这里简化处理,返回 nil 表示不添加额外过滤 - return nil + + platformFilter, err := h.buildHelper.BuildPlatformRelatedFilter(ctx, loop_span.PlatformType(*taskConfig.Rule.SpanFilters.PlatformType)) + if err != nil { + return nil + } + builtinFilter, err := h.buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ + WorkspaceID: taskConfig.GetWorkspaceID(), + SpanListType: loop_span.SpanListType(*taskConfig.Rule.SpanFilters.SpanListType), + }) + if err != nil { + return nil + } + filters := h.combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(taskConfig.Rule.SpanFilters.Filters)) + + return filters +} + +func (h *TraceHubServiceImpl) buildBuiltinFilters(ctx context.Context, f span_filter.Filter, req *ListSpansReq) (*loop_span.FilterFields, error) { + filters := make([]*loop_span.FilterField, 0) + env := &span_filter.SpanEnv{ + WorkspaceID: req.WorkspaceID, + ThirdPartyWorkspaceID: req.ThirdPartyWorkspaceID, + } + basicFilter, forceQuery, err := f.BuildBasicSpanFilter(ctx, env) + if err != nil { + return nil, err + } else if len(basicFilter) == 0 && !forceQuery { // if it's null, no need to query from ck + return nil, nil + } + filters = append(filters, basicFilter...) + switch req.SpanListType { + case loop_span.SpanListTypeRootSpan: + subFilter, err := f.BuildRootSpanFilter(ctx, env) + if err != nil { + return nil, err + } + filters = append(filters, subFilter...) + case loop_span.SpanListTypeLLMSpan: + subFilter, err := f.BuildLLMSpanFilter(ctx, env) + if err != nil { + return nil, err + } + filters = append(filters, subFilter...) + case loop_span.SpanListTypeAllSpan: + subFilter, err := f.BuildALLSpanFilter(ctx, env) + if err != nil { + return nil, err + } + filters = append(filters, subFilter...) + default: + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid span list type: %s")) + } + filterAggr := &loop_span.FilterFields{ + QueryAndOr: ptr.Of(loop_span.QueryAndOrEnumAnd), + FilterFields: filters, + } + return filterAggr, nil +} + +func (h *TraceHubServiceImpl) combineFilters(filters ...*loop_span.FilterFields) *loop_span.FilterFields { + filterAggr := &loop_span.FilterFields{ + QueryAndOr: ptr.Of(loop_span.QueryAndOrEnumAnd), + } + for _, f := range filters { + if f == nil { + continue + } + filterAggr.FilterFields = append(filterAggr.FilterFields, &loop_span.FilterField{ + QueryAndOr: ptr.Of(loop_span.QueryAndOrEnumAnd), + SubFilter: f, + }) + } + return filterAggr } // fetchAndSendSpans 分页获取并发送 span 数据 func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam *repo.ListSpansParam) error { pageToken := "" totalCount := int64(0) - + for { listParam.PageToken = pageToken - + result, err := h.traceRepo.ListSpans(ctx, listParam) if err != nil { logs.CtxError(ctx, "list spans failed, task_id=%d, page_token=%s, err=%v", h.task.GetID(), pageToken, err) @@ -242,7 +334,7 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * spans: result.Spans, noMore: !result.HasMore, } - + select { case h.flushCh <- flushReq: totalCount += int64(len(result.Spans)) @@ -257,7 +349,7 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * logs.CtxInfo(ctx, "completed listing spans, total_count=%d, task_id=%d", totalCount, h.task.GetID()) break } - + pageToken = result.PageToken } @@ -272,7 +364,7 @@ func (h *TraceHubServiceImpl) flushSpans(ctx context.Context) { // 通道已关闭,退出 return } - + flushed, sampled, err := h.doFlush(ctx, fr) if err != nil { logs.CtxError(ctx, "flush spans failed, task_id=%d, err=%v", h.task.GetID(), err) @@ -281,10 +373,10 @@ func (h *TraceHubServiceImpl) flushSpans(ctx context.Context) { h.flushErr = append(h.flushErr, err) h.flushErrLock.Unlock() } - + // 记录处理结果 h.recordFlushResult(ctx, fr, flushed, sampled, err) - + case <-ctx.Done(): logs.CtxWarn(ctx, "flush spans context cancelled, task_id=%d", h.task.GetID()) return @@ -320,7 +412,7 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq) (flushe return len(validSpans), len(sampledSpans), err } - logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", + logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", len(sampledSpans), len(validSpans), h.task.GetID()) return len(validSpans), len(sampledSpans), nil @@ -329,13 +421,13 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq) (flushe // filterValidSpans 过滤有效的 span 数据 func (h *TraceHubServiceImpl) filterValidSpans(spans []*loop_span.Span) []*loop_span.Span { validSpans := make([]*loop_span.Span, 0, len(spans)) - + for _, span := range spans { if h.isValidSpan(span) { validSpans = append(validSpans, span) } } - + return validSpans } @@ -344,17 +436,17 @@ func (h *TraceHubServiceImpl) isValidSpan(span *loop_span.Span) bool { if span == nil { return false } - + // 基本字段检查 if span.SpanID == "" || span.TraceID == "" || span.WorkspaceID == "" { return false } - + // 时间有效性检查 if span.StartTime <= 0 { return false } - + return true } @@ -363,31 +455,31 @@ func (h *TraceHubServiceImpl) applySampling(spans []*loop_span.Span) []*loop_spa if h.task == nil || h.task.Rule == nil { return spans } - + sampler := h.task.GetRule().GetSampler() if sampler == nil { return spans } - + sampleRate := sampler.GetSampleRate() if sampleRate >= 1.0 { return spans // 100% 采样 } - + if sampleRate <= 0.0 { return nil // 0% 采样 } - + // 计算采样数量 sampleSize := int(float64(len(spans)) * sampleRate) if sampleSize == 0 && len(spans) > 0 { sampleSize = 1 // 至少采样一个 } - + if sampleSize >= len(spans) { return spans } - + return spans[:sampleSize] } @@ -395,22 +487,22 @@ func (h *TraceHubServiceImpl) applySampling(spans []*loop_span.Span) []*loop_spa func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans []*loop_span.Span) error { // 批量处理 spans,提高效率 const batchSize = 100 - + for i := 0; i < len(spans); i += batchSize { end := i + batchSize if end > len(spans) { end = len(spans) } - + batch := spans[i:end] if err := h.processBatchSpans(ctx, batch); err != nil { - logs.CtxError(ctx, "process batch spans failed, task_id=%d, batch_start=%d, err=%v", + logs.CtxError(ctx, "process batch spans failed, task_id=%d, batch_start=%d, err=%v", h.task.GetID(), i, err) // 继续处理下一批,不因单批失败而中断 continue } } - + return nil } @@ -418,31 +510,31 @@ func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*loop_span.Span) error { // 这里实现具体的批量处理逻辑 // 例如:数据转换、存储、触发下游处理等 - + for _, span := range spans { // 执行单个 span 的处理逻辑 if err := h.processIndividualSpan(ctx, span); err != nil { - logs.CtxWarn(ctx, "process individual span failed, span_id=%s, trace_id=%s, err=%v", + logs.CtxWarn(ctx, "process individual span failed, span_id=%s, trace_id=%s, err=%v", span.SpanID, span.TraceID, err) // 继续处理其他span,不因单个失败而中断批处理 } } - + return nil } // processIndividualSpan 处理单个 span func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *loop_span.Span) error { // 根据任务类型执行相应的处理逻辑 - logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", + logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", span.SpanID, span.TraceID, h.task.GetID()) - + // 这里可以添加具体的处理逻辑: // 1. 数据验证 // 2. 格式转换 // 3. 业务逻辑处理 // 4. 存储或转发 - + return nil } @@ -464,13 +556,13 @@ func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error) e allErrors = append(allErrors, listErr) } h.flushErrLock.Unlock() - + if len(allErrors) > 0 { logs.CtxWarn(ctx, "backfill completed with %d errors, task_id=%d", len(allErrors), h.task.GetID()) // 返回第一个错误作为代表 return allErrors[0] } - + logs.CtxInfo(ctx, "backfill completed successfully, task_id=%d", h.task.GetID()) return nil -} \ No newline at end of file +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 4072fd9da..fc2c9cc12 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -66,6 +66,7 @@ type TraceHubServiceImpl struct { traceRepo trace_repo.ITraceRepo tenantProvider tenant.ITenantProvider + buildHelper service.TraceFilterProcessorBuilder task *task.Task flushCh chan *flushReq flushErrLock sync.Mutex From 822f1932af18cfbc545567ed2ae684c820ea2489 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 15 Sep 2025 20:57:48 +0800 Subject: [PATCH 171/462] fix --- .../observability/domain/task/taskexe/tracehub/backfill.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go index 2bd29e47a..83da818e0 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go @@ -238,18 +238,18 @@ func (h *TraceHubServiceImpl) buildSpanFilters(ctx context.Context, taskConfig * // 可以根据任务配置构建更复杂的过滤条件 // 这里简化处理,返回 nil 表示不添加额外过滤 - platformFilter, err := h.buildHelper.BuildPlatformRelatedFilter(ctx, loop_span.PlatformType(*taskConfig.Rule.SpanFilters.PlatformType)) + platformFilter, err := h.buildHelper.BuildPlatformRelatedFilter(ctx, loop_span.PlatformType(taskConfig.GetRule().GetSpanFilters().GetPlatformType())) if err != nil { return nil } builtinFilter, err := h.buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ WorkspaceID: taskConfig.GetWorkspaceID(), - SpanListType: loop_span.SpanListType(*taskConfig.Rule.SpanFilters.SpanListType), + SpanListType: loop_span.SpanListType(taskConfig.GetRule().GetSpanFilters().GetSpanListType()), }) if err != nil { return nil } - filters := h.combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(taskConfig.Rule.SpanFilters.Filters)) + filters := h.combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(taskConfig.GetRule().GetSpanFilters().GetFilters())) return filters } From 974071c251877b9ac638c7b8502d64ce9560a2a5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 15 Sep 2025 21:04:00 +0800 Subject: [PATCH 172/462] feat:add build --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index fc2c9cc12..1d9520043 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -42,6 +42,7 @@ func NewTraceHubImpl( evaluationService rpc.IEvaluationRPCAdapter, traceRepo trace_repo.ITraceRepo, tenantProvider tenant.ITenantProvider, + buildHelper service.TraceFilterProcessorBuilder, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 @@ -51,6 +52,7 @@ func NewTraceHubImpl( stopChan: make(chan struct{}), traceRepo: traceRepo, tenantProvider: tenantProvider, + buildHelper: buildHelper, } // 立即启动定时任务 From 26a8b7f1ce0a539b169309b39dc7d9471d26e46b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 15 Sep 2025 21:07:40 +0800 Subject: [PATCH 173/462] feat:wire gen --- backend/modules/observability/application/wire.go | 6 ++++-- backend/modules/observability/application/wire_gen.go | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 47fd6f40e..29c721b43 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -254,7 +254,9 @@ func InitTaskApplication( evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, - datasetService datasetservice.Client) (ITaskApplication, error) { + datasetService datasetservice.Client, + benefit benefit.IBenefitService, + fileClient fileservice.Client) (ITaskApplication, error) { wire.Build(taskSet) return nil, nil -} \ No newline at end of file +} diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index b78757008..3f1a644d5 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -192,7 +192,7 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb return iTraceIngestionApplication, nil } -func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, ckDb ck.Provider, redis2 redis.Cmdable, mqFactory mq.IFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client) (ITaskApplication, error) { +func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, ckDb ck.Provider, redis2 redis.Cmdable, mqFactory mq.IFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client, benefit2 benefit.IBenefitService, fileClient fileservice.Client) (ITaskApplication, error) { iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) @@ -230,7 +230,9 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto return nil, err } iTenantProvider := tenant.NewTenantProvider(iTraceConfig) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTraceRepo, iTenantProvider) + iFileProvider := file.NewFileRPCProvider(fileClient) + traceFilterProcessorBuilder := NewTraceProcessorBuilder(iTraceConfig, iFileProvider, benefit2) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder) if err != nil { return nil, err } From b50e8be8fdd5ba5348fb4de434cb58857b59ebc4 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 11:10:22 +0800 Subject: [PATCH 174/462] feat:add backfill proc --- .../domain/task/taskexe/tracehub/backfill.go | 52 +++++++++++++------ 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go index 83da818e0..31be4d234 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go @@ -14,6 +14,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service/trace/span_filter" @@ -26,7 +27,8 @@ import ( func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 设置当前任务上下文 - if err := h.setBackfillTask(ctx, event); err != nil { + sub, err := h.setBackfillTask(ctx, event) + if err != nil { return err } @@ -57,7 +59,7 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi wg.Add(1) goroutine.Go(ctx, func() { defer wg.Done() - h.flushSpans(subCtx) + h.flushSpans(subCtx, sub) }) // 5. 获取 span 数据 - 从观测服务获取需要处理的数据 @@ -76,16 +78,30 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi } // setBackfillTask 设置当前回填任务的上下文 -func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity.BackFillEvent) error { +func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity.BackFillEvent) (*spanSubscriber, error) { taskConfig, err := h.taskRepo.GetTask(ctx, event.TaskID, nil, nil) if err != nil { logs.CtxError(ctx, "get task config failed, task_id=%d, err=%v", event.TaskID, err) - return err + return nil, err } if taskConfig == nil { - return errors.New("task config not found") + return nil, errors.New("task config not found") + } + taskConfigDO := tconv.TaskPO2DTO(ctx, taskConfig, nil) + proc, err := processor.NewProcessor(ctx, taskConfig.TaskType) + if err != nil { + return nil, err + } + sub := &spanSubscriber{ + taskID: taskConfigDO.GetID(), + RWMutex: sync.RWMutex{}, + t: taskConfigDO, + processor: proc, + bufCap: 0, + flushWait: sync.WaitGroup{}, + maxFlushInterval: time.Second * 5, + taskRepo: h.taskRepo, } - // 解析任务规则 var rule *task.Rule if taskConfig.Sampler != nil && *taskConfig.Sampler != "" { @@ -106,7 +122,7 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity Rule: rule, } - return nil + return sub, nil } // isBackfillDone 检查回填任务是否已完成 @@ -356,7 +372,7 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * return nil } -func (h *TraceHubServiceImpl) flushSpans(ctx context.Context) { +func (h *TraceHubServiceImpl) flushSpans(ctx context.Context, sub *spanSubscriber) { for { select { case fr, ok := <-h.flushCh: @@ -365,7 +381,7 @@ func (h *TraceHubServiceImpl) flushSpans(ctx context.Context) { return } - flushed, sampled, err := h.doFlush(ctx, fr) + flushed, sampled, err := h.doFlush(ctx, fr, sub) if err != nil { logs.CtxError(ctx, "flush spans failed, task_id=%d, err=%v", h.task.GetID(), err) // 收集错误,继续处理 @@ -384,7 +400,7 @@ func (h *TraceHubServiceImpl) flushSpans(ctx context.Context) { } } -func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq) (flushed, sampled int, _ error) { +func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *spanSubscriber) (flushed, sampled int, _ error) { if fr == nil || len(fr.spans) == 0 { return 0, 0, nil } @@ -406,7 +422,7 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq) (flushe } // 3. 执行具体的业务逻辑处理 - err := h.processSpansForBackfill(ctx, sampledSpans) + err := h.processSpansForBackfill(ctx, sampledSpans, sub) if err != nil { logs.CtxError(ctx, "process spans failed, task_id=%d, err=%v", h.task.GetID(), err) return len(validSpans), len(sampledSpans), err @@ -484,7 +500,7 @@ func (h *TraceHubServiceImpl) applySampling(spans []*loop_span.Span) []*loop_spa } // processSpansForBackfill 处理回填的 span 数据 -func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans []*loop_span.Span) error { +func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans []*loop_span.Span, sub *spanSubscriber) error { // 批量处理 spans,提高效率 const batchSize = 100 @@ -495,7 +511,7 @@ func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans } batch := spans[i:end] - if err := h.processBatchSpans(ctx, batch); err != nil { + if err := h.processBatchSpans(ctx, batch, sub); err != nil { logs.CtxError(ctx, "process batch spans failed, task_id=%d, batch_start=%d, err=%v", h.task.GetID(), i, err) // 继续处理下一批,不因单批失败而中断 @@ -507,13 +523,13 @@ func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans } // processBatchSpans 批量处理 span 数据 -func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*loop_span.Span) error { +func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*loop_span.Span, sub *spanSubscriber) error { // 这里实现具体的批量处理逻辑 // 例如:数据转换、存储、触发下游处理等 for _, span := range spans { // 执行单个 span 的处理逻辑 - if err := h.processIndividualSpan(ctx, span); err != nil { + if err := h.processIndividualSpan(ctx, span, sub); err != nil { logs.CtxWarn(ctx, "process individual span failed, span_id=%s, trace_id=%s, err=%v", span.SpanID, span.TraceID, err) // 继续处理其他span,不因单个失败而中断批处理 @@ -524,11 +540,15 @@ func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*lo } // processIndividualSpan 处理单个 span -func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *loop_span.Span) error { +func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *loop_span.Span, sub *spanSubscriber) error { // 根据任务类型执行相应的处理逻辑 logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", span.SpanID, span.TraceID, h.task.GetID()) + if err := h.dispatch(ctx, span, []*spanSubscriber{sub}); err != nil { + return err + } + // 这里可以添加具体的处理逻辑: // 1. 数据验证 // 2. 格式转换 From 73ce0b9c00359a31b57fbb31b69fbcf57ec4ee77 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 11:34:33 +0800 Subject: [PATCH 175/462] feat:fix df --- .../observability/domain/task/taskexe/processor/data_reflow.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 5932a07b3..7fc75e8c0 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -109,6 +109,7 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask var datasetID int64 for _, dataReflowConfig := range dataReflowConfigs { if dataReflowConfig.DatasetID != nil { + datasetID = *dataReflowConfig.DatasetID logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", dataReflowConfig.DatasetID) continue } From aae9e79dc5562d606c9bd64475b88e9d4d24ea47 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 11:57:35 +0800 Subject: [PATCH 176/462] feat:fix creat task --- .../domain/task/service/task_service.go | 56 +++---------------- 1 file changed, 8 insertions(+), 48 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 4be240784..73882fb72 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -115,23 +115,19 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if userID == "" { return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) } - // 数据回流任务——创建/更新输出数据集 - if t.shouldCreateTaskRun(req.Task) { - if err = t.upsertDatasetForTask(ctx, req.Task); err != nil { - return nil, err - } - } // 创建task taskPO := tconv.CreateTaskDTO2PO(ctx, req.Task, userID) id, err := t.TaskRepo.CreateTask(ctx, taskPO) if err != nil { return nil, err } - // 创建taskrun + // 数据回流任务——创建/更新输出数据集 + // 自动评测历史回溯——创建空壳子 if t.shouldCreateTaskRun(req.Task) { - if err := t.createInitialTaskRun(ctx, id, req.Task, userID); err != nil { + if err = proc.OnChangeProcessor(ctx, req.Task, task.TaskStatusUnstarted); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) - // 根据业务需求,TaskRun创建失败不影响任务创建,只记录错误日志 + //任务改为禁用? + return nil, err } } // TODO: 历史回溯数据发MQ @@ -295,16 +291,14 @@ func (t *TaskServiceImpl) shouldTriggerBackfill(taskDO *task.Task) bool { return backfillTime.GetStartAt() > 0 && backfillTime.GetEndAt() > 0 && - backfillTime.GetStartAt() < backfillTime.GetEndAt() -} -func (t *TaskServiceImpl) upsertDatasetForTask(ctx context.Context, task *task.Task) error { - return nil + backfillTime.GetStartAt() < backfillTime.GetEndAt() && + backfillTime.GetEndAt() > time.Now().UnixMilli() } // shouldCreateTaskRun 判断是否需要创建TaskRun func (t *TaskServiceImpl) shouldCreateTaskRun(taskDO *task.Task) bool { // 只有数据回流任务需要立即创建TaskRun - return taskDO.GetTaskType() == task.TaskTypeAutoDataReflow + return taskDO.GetTaskType() == task.TaskTypeAutoDataReflow || t.shouldTriggerBackfill(taskDO) } // sendBackfillMessage 发送MQ消息 @@ -316,40 +310,6 @@ func (t *TaskServiceImpl) sendBackfillMessage(ctx context.Context, event *entity return t.backfillProducer.SendBackfill(ctx, event) } -// createInitialTaskRun 创建TaskRun实例 -func (t *TaskServiceImpl) createInitialTaskRun(ctx context.Context, taskID int64, taskDO *task.Task, userID string) error { - // 计算任务运行时间 - //effectiveTime := taskDO.GetRule().GetEffectiveTime() - //startTime := time.UnixMilli(effectiveTime.GetStartAt()) - //endTime := time.UnixMilli(effectiveTime.GetEndAt()) - // - //// 构建运行配置 - //runConfig := &task.TaskRunConfig{ - // DataReflowRunConfig: &task.DataReflowRunConfig{ - // DatasetID: 0, // 将在processor中设置 - // EndAt: effectiveTime.GetEndAt(), - // CycleStartAt: effectiveTime.GetStartAt(), - // CycleEndAt: effectiveTime.GetEndAt(), - // Status: task.TaskStatusPending, - // }, - //} - // - //taskRun := &entity.TaskRun{ - // TaskID: taskID, - // WorkspaceID: taskDO.GetWorkspaceID(), - // TaskType: taskDO.GetTaskType(), - // RunStatus: task.TaskStatusPending, - // RunStartAt: startTime, - // RunEndAt: endTime, - // RunConfig: ptr.Of(t.toJSONString(ctx, runConfig)), - // CreatedAt: time.Now(), - // UpdatedAt: time.Now(), - //} - // - //_, err := t.TaskRunRepo.CreateTaskRun(ctx, taskRun) - return nil -} - // toJSONString 将对象转换为JSON字符串 func (t *TaskServiceImpl) toJSONString(ctx context.Context, obj interface{}) string { if obj == nil { From c21eb899343e95beea744559c4dd626df2981f31 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 12:04:22 +0800 Subject: [PATCH 177/462] feat:fix --- .../modules/observability/domain/task/service/task_service.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 73882fb72..b51bdafd8 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -121,10 +121,11 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if err != nil { return nil, err } + taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) // 数据回流任务——创建/更新输出数据集 // 自动评测历史回溯——创建空壳子 if t.shouldCreateTaskRun(req.Task) { - if err = proc.OnChangeProcessor(ctx, req.Task, task.TaskStatusUnstarted); err != nil { + if err = proc.OnChangeProcessor(ctx, taskConfig, task.TaskStatusUnstarted); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) //任务改为禁用? return nil, err From efb61daffebcd3cb21d2508e9d5ce8f7d14db85b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 14:22:37 +0800 Subject: [PATCH 178/462] feat:fix idl --- .../loop/observability/domain/task/k-task.go | 285 +++++++++++- .../loop/observability/domain/task/task.go | 428 +++++++++++++++++- .../domain/task/task_validator.go | 3 + .../domain/task/service/task_service.go | 15 +- .../task/taskexe/processor/auto_evaluate.go | 6 +- .../task/taskexe/processor/data_reflow.go | 6 +- .../domain/task/taskexe/types.go | 17 +- .../loop/observability/domain/task.thrift | 9 +- 8 files changed, 744 insertions(+), 25 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index 1d2a69c5e..5b0b704eb 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -2506,6 +2506,285 @@ func (p *RunDetail) DeepCopy(s interface{}) error { return nil } +func (p *BackfillDetail) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_BackfillDetail[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *BackfillDetail) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SuccessCount = _field + return offset, nil +} + +func (p *BackfillDetail) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.FailedCount = _field + return offset, nil +} + +func (p *BackfillDetail) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *RunStatus + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.BackfillStatus = _field + return offset, nil +} + +func (p *BackfillDetail) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.LastSpanPageToken = _field + return offset, nil +} + +func (p *BackfillDetail) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *BackfillDetail) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *BackfillDetail) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *BackfillDetail) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccessCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], *p.SuccessCount) + } + return offset +} + +func (p *BackfillDetail) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetFailedCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 2) + offset += thrift.Binary.WriteI64(buf[offset:], *p.FailedCount) + } + return offset +} + +func (p *BackfillDetail) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBackfillStatus() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.BackfillStatus) + } + return offset +} + +func (p *BackfillDetail) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetLastSpanPageToken() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.LastSpanPageToken) + } + return offset +} + +func (p *BackfillDetail) field1Length() int { + l := 0 + if p.IsSetSuccessCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *BackfillDetail) field2Length() int { + l := 0 + if p.IsSetFailedCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *BackfillDetail) field3Length() int { + l := 0 + if p.IsSetBackfillStatus() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.BackfillStatus) + } + return l +} + +func (p *BackfillDetail) field4Length() int { + l := 0 + if p.IsSetLastSpanPageToken() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.LastSpanPageToken) + } + return l +} + +func (p *BackfillDetail) DeepCopy(s interface{}) error { + src, ok := s.(*BackfillDetail) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.SuccessCount != nil { + tmp := *src.SuccessCount + p.SuccessCount = &tmp + } + + if src.FailedCount != nil { + tmp := *src.FailedCount + p.FailedCount = &tmp + } + + if src.BackfillStatus != nil { + tmp := *src.BackfillStatus + p.BackfillStatus = &tmp + } + + if src.LastSpanPageToken != nil { + var tmp string + if *src.LastSpanPageToken != "" { + tmp = kutils.StringDeepCopy(*src.LastSpanPageToken) + } + p.LastSpanPageToken = &tmp + } + + return nil +} + func (p *FieldMapping) FastRead(buf []byte) (int, error) { var err error @@ -3118,7 +3397,7 @@ func (p *TaskRun) FastReadField6(buf []byte) (int, error) { func (p *TaskRun) FastReadField7(buf []byte) (int, error) { offset := 0 - _field := NewRunDetail() + _field := NewBackfillDetail() if l, err := _field.FastRead(buf[offset:]); err != nil { return offset, err } else { @@ -3417,9 +3696,9 @@ func (p *TaskRun) DeepCopy(s interface{}) error { } p.RunDetail = _runDetail - var _backfillRunDetail *RunDetail + var _backfillRunDetail *BackfillDetail if src.BackfillRunDetail != nil { - _backfillRunDetail = &RunDetail{} + _backfillRunDetail = &BackfillDetail{} if err := _backfillRunDetail.DeepCopy(src.BackfillRunDetail); err != nil { return err } diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index a399a2d37..99d042b20 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -3495,6 +3495,418 @@ func (p *RunDetail) Field2DeepEqual(src *int64) bool { return true } +type BackfillDetail struct { + SuccessCount *int64 `thrift:"success_count,1,optional" frugal:"1,optional,i64" form:"success_count" json:"success_count,omitempty" query:"success_count"` + FailedCount *int64 `thrift:"failed_count,2,optional" frugal:"2,optional,i64" form:"failed_count" json:"failed_count,omitempty" query:"failed_count"` + BackfillStatus *RunStatus `thrift:"backfill_status,3,optional" frugal:"3,optional,string" form:"backfill_status" json:"backfill_status,omitempty" query:"backfill_status"` + LastSpanPageToken *string `thrift:"last_span_page_token,4,optional" frugal:"4,optional,string" form:"last_span_page_token" json:"last_span_page_token,omitempty" query:"last_span_page_token"` +} + +func NewBackfillDetail() *BackfillDetail { + return &BackfillDetail{} +} + +func (p *BackfillDetail) InitDefault() { +} + +var BackfillDetail_SuccessCount_DEFAULT int64 + +func (p *BackfillDetail) GetSuccessCount() (v int64) { + if p == nil { + return + } + if !p.IsSetSuccessCount() { + return BackfillDetail_SuccessCount_DEFAULT + } + return *p.SuccessCount +} + +var BackfillDetail_FailedCount_DEFAULT int64 + +func (p *BackfillDetail) GetFailedCount() (v int64) { + if p == nil { + return + } + if !p.IsSetFailedCount() { + return BackfillDetail_FailedCount_DEFAULT + } + return *p.FailedCount +} + +var BackfillDetail_BackfillStatus_DEFAULT RunStatus + +func (p *BackfillDetail) GetBackfillStatus() (v RunStatus) { + if p == nil { + return + } + if !p.IsSetBackfillStatus() { + return BackfillDetail_BackfillStatus_DEFAULT + } + return *p.BackfillStatus +} + +var BackfillDetail_LastSpanPageToken_DEFAULT string + +func (p *BackfillDetail) GetLastSpanPageToken() (v string) { + if p == nil { + return + } + if !p.IsSetLastSpanPageToken() { + return BackfillDetail_LastSpanPageToken_DEFAULT + } + return *p.LastSpanPageToken +} +func (p *BackfillDetail) SetSuccessCount(val *int64) { + p.SuccessCount = val +} +func (p *BackfillDetail) SetFailedCount(val *int64) { + p.FailedCount = val +} +func (p *BackfillDetail) SetBackfillStatus(val *RunStatus) { + p.BackfillStatus = val +} +func (p *BackfillDetail) SetLastSpanPageToken(val *string) { + p.LastSpanPageToken = val +} + +var fieldIDToName_BackfillDetail = map[int16]string{ + 1: "success_count", + 2: "failed_count", + 3: "backfill_status", + 4: "last_span_page_token", +} + +func (p *BackfillDetail) IsSetSuccessCount() bool { + return p.SuccessCount != nil +} + +func (p *BackfillDetail) IsSetFailedCount() bool { + return p.FailedCount != nil +} + +func (p *BackfillDetail) IsSetBackfillStatus() bool { + return p.BackfillStatus != nil +} + +func (p *BackfillDetail) IsSetLastSpanPageToken() bool { + return p.LastSpanPageToken != nil +} + +func (p *BackfillDetail) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.I64 { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRING { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_BackfillDetail[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *BackfillDetail) ReadField1(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.SuccessCount = _field + return nil +} +func (p *BackfillDetail) ReadField2(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.FailedCount = _field + return nil +} +func (p *BackfillDetail) ReadField3(iprot thrift.TProtocol) error { + + var _field *RunStatus + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.BackfillStatus = _field + return nil +} +func (p *BackfillDetail) ReadField4(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.LastSpanPageToken = _field + return nil +} + +func (p *BackfillDetail) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("BackfillDetail"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *BackfillDetail) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccessCount() { + if err = oprot.WriteFieldBegin("success_count", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.SuccessCount); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *BackfillDetail) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetFailedCount() { + if err = oprot.WriteFieldBegin("failed_count", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.FailedCount); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *BackfillDetail) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetBackfillStatus() { + if err = oprot.WriteFieldBegin("backfill_status", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.BackfillStatus); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *BackfillDetail) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetLastSpanPageToken() { + if err = oprot.WriteFieldBegin("last_span_page_token", thrift.STRING, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.LastSpanPageToken); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} + +func (p *BackfillDetail) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("BackfillDetail(%+v)", *p) + +} + +func (p *BackfillDetail) DeepEqual(ano *BackfillDetail) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.SuccessCount) { + return false + } + if !p.Field2DeepEqual(ano.FailedCount) { + return false + } + if !p.Field3DeepEqual(ano.BackfillStatus) { + return false + } + if !p.Field4DeepEqual(ano.LastSpanPageToken) { + return false + } + return true +} + +func (p *BackfillDetail) Field1DeepEqual(src *int64) bool { + + if p.SuccessCount == src { + return true + } else if p.SuccessCount == nil || src == nil { + return false + } + if *p.SuccessCount != *src { + return false + } + return true +} +func (p *BackfillDetail) Field2DeepEqual(src *int64) bool { + + if p.FailedCount == src { + return true + } else if p.FailedCount == nil || src == nil { + return false + } + if *p.FailedCount != *src { + return false + } + return true +} +func (p *BackfillDetail) Field3DeepEqual(src *RunStatus) bool { + + if p.BackfillStatus == src { + return true + } else if p.BackfillStatus == nil || src == nil { + return false + } + if strings.Compare(*p.BackfillStatus, *src) != 0 { + return false + } + return true +} +func (p *BackfillDetail) Field4DeepEqual(src *string) bool { + + if p.LastSpanPageToken == src { + return true + } else if p.LastSpanPageToken == nil || src == nil { + return false + } + if strings.Compare(*p.LastSpanPageToken, *src) != 0 { + return false + } + return true +} + type FieldMapping struct { // 数据集字段约束 FieldSchema *dataset.FieldSchema `thrift:"field_schema,1,required" frugal:"1,required,dataset.FieldSchema" form:"field_schema,required" json:"field_schema,required" query:"field_schema,required"` @@ -3903,9 +4315,9 @@ type TaskRun struct { // 任务状态详情 RunDetail *RunDetail `thrift:"run_detail,6,optional" frugal:"6,optional,RunDetail" form:"run_detail" json:"run_detail,omitempty" query:"run_detail"` // 任务历史数据执行详情 - BackfillRunDetail *RunDetail `thrift:"backfill_run_detail,7,optional" frugal:"7,optional,RunDetail" form:"backfill_run_detail" json:"backfill_run_detail,omitempty" query:"backfill_run_detail"` - RunStartAt int64 `thrift:"run_start_at,8,required" frugal:"8,required,i64" json:"run_start_at" form:"run_start_at,required" query:"run_start_at,required"` - RunEndAt int64 `thrift:"run_end_at,9,required" frugal:"9,required,i64" json:"run_end_at" form:"run_end_at,required" query:"run_end_at,required"` + BackfillRunDetail *BackfillDetail `thrift:"backfill_run_detail,7,optional" frugal:"7,optional,BackfillDetail" form:"backfill_run_detail" json:"backfill_run_detail,omitempty" query:"backfill_run_detail"` + RunStartAt int64 `thrift:"run_start_at,8,required" frugal:"8,required,i64" json:"run_start_at" form:"run_start_at,required" query:"run_start_at,required"` + RunEndAt int64 `thrift:"run_end_at,9,required" frugal:"9,required,i64" json:"run_end_at" form:"run_end_at,required" query:"run_end_at,required"` // 配置 TaskRunConfig *TaskRunConfig `thrift:"task_run_config,10,optional" frugal:"10,optional,TaskRunConfig" form:"task_run_config" json:"task_run_config,omitempty" query:"task_run_config"` // 基础信息 @@ -3966,9 +4378,9 @@ func (p *TaskRun) GetRunDetail() (v *RunDetail) { return p.RunDetail } -var TaskRun_BackfillRunDetail_DEFAULT *RunDetail +var TaskRun_BackfillRunDetail_DEFAULT *BackfillDetail -func (p *TaskRun) GetBackfillRunDetail() (v *RunDetail) { +func (p *TaskRun) GetBackfillRunDetail() (v *BackfillDetail) { if p == nil { return } @@ -4033,7 +4445,7 @@ func (p *TaskRun) SetRunStatus(val RunStatus) { func (p *TaskRun) SetRunDetail(val *RunDetail) { p.RunDetail = val } -func (p *TaskRun) SetBackfillRunDetail(val *RunDetail) { +func (p *TaskRun) SetBackfillRunDetail(val *BackfillDetail) { p.BackfillRunDetail = val } func (p *TaskRun) SetRunStartAt(val int64) { @@ -4328,7 +4740,7 @@ func (p *TaskRun) ReadField6(iprot thrift.TProtocol) error { return nil } func (p *TaskRun) ReadField7(iprot thrift.TProtocol) error { - _field := NewRunDetail() + _field := NewBackfillDetail() if err := _field.Read(iprot); err != nil { return err } @@ -4719,7 +5131,7 @@ func (p *TaskRun) Field6DeepEqual(src *RunDetail) bool { } return true } -func (p *TaskRun) Field7DeepEqual(src *RunDetail) bool { +func (p *TaskRun) Field7DeepEqual(src *BackfillDetail) bool { if !p.BackfillRunDetail.DeepEqual(src) { return false diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go index 443c638f7..dd63e4861 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go @@ -102,6 +102,9 @@ func (p *AutoEvaluateConfig) IsValid() error { func (p *RunDetail) IsValid() error { return nil } +func (p *BackfillDetail) IsValid() error { + return nil +} func (p *FieldMapping) IsValid() error { if p.FieldSchema != nil { if err := p.FieldSchema.IsValid(); err != nil { diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index b51bdafd8..d10549e7a 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -19,6 +19,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" @@ -124,11 +125,15 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) // 数据回流任务——创建/更新输出数据集 // 自动评测历史回溯——创建空壳子 - if t.shouldCreateTaskRun(req.Task) { - if err = proc.OnChangeProcessor(ctx, taskConfig, task.TaskStatusUnstarted); err != nil { - logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) - //任务改为禁用? - return nil, err + if req.Task.GetTaskType() == task.TaskTypeAutoDataReflow { + taskOp := taskexe.TaskOpNewData + if t.shouldTriggerBackfill(req.Task) { + taskOp = taskexe.TaskOpCreateBackfill + if err = proc.OnChangeProcessor(ctx, taskConfig, taskOp); err != nil { + logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) + //任务改为禁用? + return nil, err + } } } // TODO: 历史回溯数据发MQ diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index b19703085..91b79538b 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -124,7 +124,7 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * return nil } -func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { +func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp taskexe.TaskOp) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) //todo:[xun]加锁 ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) @@ -248,7 +248,9 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas if err != nil { return err } - taskConfig.TaskStatus = task.TaskStatusRunning + if taskOp != taskexe.TaskOpNewData { + taskConfig.TaskStatus = task.TaskStatusRunning + } var cycleStartAt, cycleEndAt int64 currentTime := time.Now().UnixMilli() diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 7fc75e8c0..4f7e016fc 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -98,7 +98,7 @@ func (p *DataReflowProcessor) Finish(ctx context.Context, config any, trigger *t return nil } -func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { +func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp taskexe.TaskOp) error { logs.CtxInfo(ctx, "[auto_task] DataReflowProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) session := getSession(ctx, currentTask) category := getCategory(currentTask.TaskType) @@ -133,7 +133,9 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask if err != nil { return err } - taskConfig.TaskStatus = task.TaskStatusRunning + if taskOp != taskexe.TaskOpNewData { + taskConfig.TaskStatus = task.TaskStatusRunning + } cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() // 5、创建 taskrun diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index 43bf45e68..af84c6660 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -22,11 +22,20 @@ var ( ErrInvalidTrigger = errors.New("invalid span trigger") ) +type TaskOp string + +const ( + TaskOpUndefined TaskOp = "undefined" + TaskOpCreateBackfill TaskOp = "create_backfill" + TaskOpNewData TaskOp = "create_new_data" + TaskOpFinish TaskOp = "finish" +) + type Processor interface { - ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 - Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 - OnChangeProcessor(ctx context.Context, task *task.Task, taskOp task.TaskStatus) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 - Finish(ctx context.Context, config any, trigger *Trigger) error //Finish + ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 + Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 + OnChangeProcessor(ctx context.Context, task *task.Task, taskOp TaskOp) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 + Finish(ctx context.Context, config any, trigger *Trigger) error //Finish } type ProcessorUnion interface { diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index b5034c8be..c8c11f269 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -89,6 +89,13 @@ struct RunDetail { 2: optional i64 failed_count } +struct BackfillDetail { + 1: optional i64 success_count + 2: optional i64 failed_count + 3: optional RunStatus backfill_status + 4: optional string last_span_page_token +} + struct FieldMapping { 1: required export_dataset.FieldSchema field_schema // 数据集字段约束 2: required string trace_field_key @@ -104,7 +111,7 @@ struct TaskRun { 4: required TaskType task_type // 类型 5: required RunStatus run_status // 状态 6: optional RunDetail run_detail // 任务状态详情 - 7: optional RunDetail backfill_run_detail // 任务历史数据执行详情 + 7: optional BackfillDetail backfill_run_detail // 任务历史数据执行详情 8: required i64 run_start_at (api.js_conv="true", go.tag='json:"run_start_at"') 9: required i64 run_end_at (api.js_conv="true", go.tag='json:"run_end_at"') 10: optional TaskRunConfig task_run_config // 配置 From 8da3796dccd32711b0bd9b7e05fe5b9d8a6b3ac7 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 14:28:56 +0800 Subject: [PATCH 179/462] feat:fix --- .../application/convertor/task/task_run.go | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task_run.go b/backend/modules/observability/application/convertor/task/task_run.go index e072c6522..faf1f358e 100644 --- a/backend/modules/observability/application/convertor/task/task_run.go +++ b/backend/modules/observability/application/convertor/task/task_run.go @@ -37,7 +37,7 @@ func TaskRunPO2DTO(ctx context.Context, v *entity.TaskRun, userMap map[string]*e TaskType: v.TaskType, RunStatus: v.RunStatus, RunDetail: RunDetailPO2DTO(ctx, v.RunDetail), - BackfillRunDetail: RunDetailPO2DTO(ctx, v.BackfillDetail), + BackfillRunDetail: BackfillRunDetailPO2DTO(ctx, v.BackfillDetail), RunStartAt: v.RunStartAt.UnixMilli(), RunEndAt: v.RunEndAt.UnixMilli(), TaskRunConfig: TaskRunConfigPO2DTO(ctx, v.RunConfig), @@ -51,13 +51,28 @@ func RunDetailPO2DTO(ctx context.Context, runDetail *string) *task.RunDetail { if runDetail == nil || *runDetail == "" { return nil } - + var runDetailDTO task.RunDetail if err := sonic.Unmarshal([]byte(*runDetail), &runDetailDTO); err != nil { logs.CtxError(ctx, "RunDetailPO2DTO sonic.Unmarshal err:%v", err) return nil } - + + return &runDetailDTO +} + +// RunDetailPO2DTO 将JSON字符串转换为RunDetail结构体 +func BackfillRunDetailPO2DTO(ctx context.Context, runDetail *string) *task.BackfillDetail { + if runDetail == nil || *runDetail == "" { + return nil + } + + var runDetailDTO task.BackfillDetail + if err := sonic.Unmarshal([]byte(*runDetail), &runDetailDTO); err != nil { + logs.CtxError(ctx, "RunDetailPO2DTO sonic.Unmarshal err:%v", err) + return nil + } + return &runDetailDTO } @@ -66,13 +81,13 @@ func TaskRunConfigPO2DTO(ctx context.Context, runConfig *string) *task.TaskRunCo if runConfig == nil || *runConfig == "" { return nil } - + var runConfigDTO task.TaskRunConfig if err := sonic.Unmarshal([]byte(*runConfig), &runConfigDTO); err != nil { logs.CtxError(ctx, "TaskRunConfigPO2DTO sonic.Unmarshal err:%v", err) return nil } - + return &runConfigDTO } @@ -86,4 +101,4 @@ func buildTaskRunBaseInfo(v *entity.TaskRun, userMap map[string]*entity_common.U CreatedBy: &common.UserInfo{UserID: gptr.Of("")}, UpdatedBy: &common.UserInfo{UserID: gptr.Of("")}, } -} \ No newline at end of file +} From 526d1784ecf28fb817c5d4e1f7c3c1b2b7069f29 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 14:36:36 +0800 Subject: [PATCH 180/462] feat:fix --- .../modules/observability/domain/task/service/task_service.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index d10549e7a..2547bc758 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -297,8 +297,7 @@ func (t *TaskServiceImpl) shouldTriggerBackfill(taskDO *task.Task) bool { return backfillTime.GetStartAt() > 0 && backfillTime.GetEndAt() > 0 && - backfillTime.GetStartAt() < backfillTime.GetEndAt() && - backfillTime.GetEndAt() > time.Now().UnixMilli() + backfillTime.GetStartAt() < backfillTime.GetEndAt() } // shouldCreateTaskRun 判断是否需要创建TaskRun From 717c9821cc8e4b38435b2bfbff4716bd4ca3c1f6 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 14:43:57 +0800 Subject: [PATCH 181/462] feat:fix --- .../domain/task/service/task_service.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 2547bc758..f985f78d0 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -125,15 +125,18 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) // 数据回流任务——创建/更新输出数据集 // 自动评测历史回溯——创建空壳子 + taskOp := taskexe.TaskOpUndefined if req.Task.GetTaskType() == task.TaskTypeAutoDataReflow { - taskOp := taskexe.TaskOpNewData - if t.shouldTriggerBackfill(req.Task) { - taskOp = taskexe.TaskOpCreateBackfill - if err = proc.OnChangeProcessor(ctx, taskConfig, taskOp); err != nil { - logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) - //任务改为禁用? - return nil, err - } + taskOp = taskexe.TaskOpNewData + } + if t.shouldTriggerBackfill(req.Task) { + taskOp = taskexe.TaskOpCreateBackfill + } + if taskOp != taskexe.TaskOpUndefined { + if err = proc.OnChangeProcessor(ctx, taskConfig, taskOp); err != nil { + logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) + //任务改为禁用? + return nil, err } } // TODO: 历史回溯数据发MQ From 463073ef03742e0e33da7b1bed35453bdd10d888 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 14:56:05 +0800 Subject: [PATCH 182/462] feat:fix taskrun --- .../task/taskexe/processor/auto_evaluate.go | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 91b79538b..261c110c7 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -251,33 +251,37 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas if taskOp != taskexe.TaskOpNewData { taskConfig.TaskStatus = task.TaskStatusRunning } - var cycleStartAt, cycleEndAt int64 + var cycleStartAt, cycleEndAt, endAt int64 currentTime := time.Now().UnixMilli() - if len(taskConfig.TaskRuns) == 0 { - // 首次创建 taskrun,从任务生效时间开始 - cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) - } else { - // 找到最新的 cycleEndAt 作为新的 cycleStartAt - for _, run := range taskConfig.TaskRuns { - if run.RunStartAt.UnixMilli() > cycleStartAt { - cycleStartAt = run.RunEndAt.UnixMilli() + if taskOp != taskexe.TaskOpCreateBackfill { + endAt = effectiveTime.GetEndAt() + if len(taskConfig.TaskRuns) == 0 { + // 首次创建 taskrun,从任务生效时间开始 + cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) + } else { + // 找到最新的 cycleEndAt 作为新的 cycleStartAt + for _, run := range taskConfig.TaskRuns { + if run.RunStartAt.UnixMilli() > cycleStartAt { + cycleStartAt = run.RunEndAt.UnixMilli() + } } + cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) } - cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) - } - cycleEndAt = cycleStartAt + maxAliveTime - - // 确保周期开始时间不早于任务生效时间 - if cycleStartAt < effectiveTime.GetStartAt() { - cycleStartAt = effectiveTime.GetStartAt() cycleEndAt = cycleStartAt + maxAliveTime - } - // 确保周期结束时间不晚于任务结束时间 - if cycleEndAt > effectiveTime.GetEndAt() { - cycleEndAt = effectiveTime.GetEndAt() + // 确保周期开始时间不早于任务生效时间 + if cycleStartAt < effectiveTime.GetStartAt() { + cycleStartAt = effectiveTime.GetStartAt() + cycleEndAt = cycleStartAt + maxAliveTime + } + + // 确保周期结束时间不晚于任务结束时间 + if cycleEndAt > effectiveTime.GetEndAt() { + cycleEndAt = effectiveTime.GetEndAt() + } } + logs.CtxInfo(ctx, "Creating taskrun with cycle: startAt=%d, endAt=%d, currentTime=%d", cycleStartAt, cycleEndAt, currentTime) // 5、创建 taskrun taskRunConfig := &task.TaskRunConfig{ @@ -287,7 +291,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas EvalID: datasetID, SchemaID: evaluationSetConfig.DatasetVersion.DatasetSchema.ID, Schema: ptr.Of(ToJSONString(ctx, evaluationSetConfig.DatasetVersion.DatasetSchema.FieldSchemas)), - EndAt: effectiveTime.GetEndAt(), + EndAt: endAt, CycleStartAt: cycleStartAt, CycleEndAt: cycleEndAt, Status: task.TaskStatusRunning, From 70c2b26bf9d2850aeab334917e7d6609c109dc00 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 14:58:12 +0800 Subject: [PATCH 183/462] feat:fix time --- .../domain/task/taskexe/processor/auto_evaluate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 261c110c7..b2ecd055c 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -254,7 +254,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas var cycleStartAt, cycleEndAt, endAt int64 currentTime := time.Now().UnixMilli() - if taskOp != taskexe.TaskOpCreateBackfill { + if effectiveTime != nil { endAt = effectiveTime.GetEndAt() if len(taskConfig.TaskRuns) == 0 { // 首次创建 taskrun,从任务生效时间开始 From 311b13328864ab935203473de07efd43731c9ae0 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 15:16:32 +0800 Subject: [PATCH 184/462] feat:runScheduledTask --- .../domain/task/taskexe/tracehub/trace_hub.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 1d9520043..37b8b37ef 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -320,9 +320,19 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxError(ctx, "ListNonFinalTask err:%v", err) return } - tasks := tconv.TaskPOs2DOs(ctx, taskPOs, nil) + var tasks []*task.Task + taskRunstat := make(map[int64]bool) logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) - + for _, taskPO := range taskPOs { + tasks = append(tasks, tconv.TaskPO2DTO(ctx, taskPO, nil)) + runDone := true + for _, taskRun := range taskPO.TaskRuns { + if taskRun.RunStatus == task.RunStatusRunning { + runDone = false + } + } + taskRunstat[taskPO.ID] = runDone + } // 遍历任务 for _, taskInfo := range tasks { endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) @@ -335,7 +345,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 达到任务时间期限 // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) - if time.Now().After(endTime) { + if time.Now().After(endTime) && taskRunstat[*taskInfo.ID] { updateMap := map[string]interface{}{ "task_status": task.TaskStatusSuccess, } From 2a59b39682f8b265fba908515e68d7162c072af0 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 15:37:19 +0800 Subject: [PATCH 185/462] feat:fix time --- .../domain/task/taskexe/processor/auto_evaluate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index b2ecd055c..703603cab 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -254,7 +254,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas var cycleStartAt, cycleEndAt, endAt int64 currentTime := time.Now().UnixMilli() - if effectiveTime != nil { + if effectiveTime.StartAt != nil && effectiveTime.EndAt != nil { endAt = effectiveTime.GetEndAt() if len(taskConfig.TaskRuns) == 0 { // 首次创建 taskrun,从任务生效时间开始 From f4df9c371e83e99288d5369cb26a05df883a7935 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 15:49:01 +0800 Subject: [PATCH 186/462] add debug log --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 37b8b37ef..f3dee7d98 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -333,6 +333,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } taskRunstat[taskPO.ID] = runDone } + logs.CtxInfo(ctx, "taskRunstat:%v", taskRunstat) // 遍历任务 for _, taskInfo := range tasks { endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) From 29005378ffab9fb1cc456a517adb2d1da76be43b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 15:53:51 +0800 Subject: [PATCH 187/462] feat:add debug log --- .../infra/mq/consumer/autotask_callback_consumer.go | 1 + .../observability/infra/mq/consumer/correction_consumer.go | 1 + 2 files changed, 2 insertions(+) diff --git a/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go b/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go index 950287005..56fb8e94d 100644 --- a/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go @@ -53,5 +53,6 @@ func (e *CallbackConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt logs.CtxError(ctx, "Callback msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) return nil } + logs.CtxInfo(ctx, "Callback msg, event: %v", event) return e.handler.CallBack(ctx, event) } diff --git a/backend/modules/observability/infra/mq/consumer/correction_consumer.go b/backend/modules/observability/infra/mq/consumer/correction_consumer.go index 7166da2b6..6b750368c 100644 --- a/backend/modules/observability/infra/mq/consumer/correction_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/correction_consumer.go @@ -52,5 +52,6 @@ func (e *CorrectionConsumer) HandleMessage(ctx context.Context, ext *mq.MessageE logs.CtxError(ctx, "Correction msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) return nil } + logs.CtxInfo(ctx, "Correction msg, event: %v", event) return e.handler.Correction(ctx, event) } From c22ff52e496b096c5ddf001881d4b13d5a11bd37 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 16:19:51 +0800 Subject: [PATCH 188/462] feat: [Coda] complete TODO in CreateTask method for non-final task list cache update (LogID: 2025091616133601009111020717128B4) Co-Authored-By: Coda --- .../domain/task/taskexe/tracehub/common.go | 4 +++ .../task/taskexe/tracehub/scheduled_task.go | 4 +++ .../modules/observability/infra/repo/task.go | 32 ++++++++++--------- 3 files changed, 25 insertions(+), 15 deletions(-) create mode 100644 backend/modules/observability/domain/task/taskexe/tracehub/common.go create mode 100644 backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/common.go b/backend/modules/observability/domain/task/taskexe/tracehub/common.go new file mode 100644 index 000000000..02558b881 --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/tracehub/common.go @@ -0,0 +1,4 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package tracehub diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go new file mode 100644 index 000000000..02558b881 --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -0,0 +1,4 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package tracehub diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 8dff15b17..898dc0c65 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -118,12 +118,16 @@ func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityT do.ID = createdID go func() { // 缓存新创建的任务 - if err := v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { + if err = v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { logs.Error("failed to set task cache after create", "id", createdID, "err", err) } - - // 清理相关列表缓存 - v.clearListCaches(context.Background(), do.WorkspaceID) + + // 更新非最终状态任务列表缓存 + if isNonFinalTaskStatus(do.TaskStatus) { + if err := v.TaskRedisDao.DeleteNonFinalTaskList(context.Background()); err != nil { + logs.Error("failed to delete non final task list cache after create", "id", createdID, "err", err) + } + } }() return createdID, nil @@ -275,17 +279,15 @@ func (v *TaskRepoImpl) clearListCaches(ctx context.Context, workspaceID int64) { } } -// generateFilterHash 生成过滤条件的 hash -func (v *TaskRepoImpl) generateFilterHash(param mysql.ListTaskParam) string { - if param.TaskFilters == nil { - return "no_filter" +// isNonFinalTaskStatus 判断任务状态是否为非最终状态 +func isNonFinalTaskStatus(status string) bool { + finalStatuses := []string{"success", "disabled"} + for _, finalStatus := range finalStatuses { + if status == finalStatus { + return false + } } - - // 将过滤条件序列化为字符串 - filterStr := fmt.Sprintf("%+v", param.TaskFilters) - - // 生成简单的 hash(在实际生产环境中可能需要更复杂的 hash 算法) - return fmt.Sprintf("%x", len(filterStr)) + return true } func (v *TaskRepoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string) { @@ -323,4 +325,4 @@ func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID in return count, nil } return count, nil -} +} \ No newline at end of file From 1e47287f7dba9a36b60443ad48a16526931cb2aa Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 16:27:37 +0800 Subject: [PATCH 189/462] feat: [Coda] update CreateTask to append new task to non-final task list cache (LogID: 2025091616133601009111020717128B4) Co-Authored-By: Coda --- backend/modules/observability/infra/repo/task.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 898dc0c65..e3c1da508 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -124,8 +124,17 @@ func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityT // 更新非最终状态任务列表缓存 if isNonFinalTaskStatus(do.TaskStatus) { - if err := v.TaskRedisDao.DeleteNonFinalTaskList(context.Background()); err != nil { - logs.Error("failed to delete non final task list cache after create", "id", createdID, "err", err) + // 读取当前缓存的非最终状态任务列表 + currentList, err := v.TaskRedisDao.GetNonFinalTaskList(context.Background()) + if err != nil { + logs.Error("failed to get non final task list cache", "id", createdID, "err", err) + } else { + // 将新创建的任务添加到列表中 + updatedList := append(currentList, do) + // 更新缓存 + if err := v.TaskRedisDao.SetNonFinalTaskList(context.Background(), updatedList, NonFinalTaskListTTL); err != nil { + logs.Error("failed to update non final task list cache after create", "id", createdID, "err", err) + } } } }() From 1d425356c35fab94597bc1a26c68c2373b029eae Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 16:47:24 +0800 Subject: [PATCH 190/462] feat: [Coda] implement cache key generation methods for task Redis operations (LogID: 2025091616133601009111020717128B4) Co-Authored-By: Coda --- .../infra/repo/redis/dao/task.go | 177 +++++++----------- .../modules/observability/infra/repo/task.go | 23 +-- 2 files changed, 77 insertions(+), 123 deletions(-) diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 8a373721f..9cc3ebc6a 100644 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -22,34 +22,32 @@ import ( //go:generate mockgen -destination=mocks/Task_dao.go -package=mocks . ITaskDAO type ITaskDAO interface { - // 原有方法 - MSetTaskConfig(ctx context.Context, taskConfig *entity.ObservabilityTask) error - MGetTaskConfig(ctx context.Context, taskID int64) (taskConfig *entity.ObservabilityTask, err error) - MGetTaskCount(ctx context.Context, taskID int64) (count int64, err error) - MGetTaskRunCount(ctx context.Context, taskID, runID int64) (count int64, err error) - MIncrTaskCount(ctx context.Context, taskID int64, count int64) error - MDecrTaskCount(ctx context.Context, taskID int64, count int64) error - MIncrTaskRunCount(ctx context.Context, taskID, runID int64, count int64) error - MDecrTaskRunCount(ctx context.Context, taskID, runID int64, count int64) error - - // 新增 CRUD 缓存方法 + // Task相关 GetTask(ctx context.Context, id int64) (*entity.ObservabilityTask, error) SetTask(ctx context.Context, task *entity.ObservabilityTask, ttl time.Duration) error - DeleteTask(ctx context.Context, id int64) error + // TaskList相关 GetTaskList(ctx context.Context, key string) ([]*entity.ObservabilityTask, int64, error) SetTaskList(ctx context.Context, key string, tasks []*entity.ObservabilityTask, total int64, ttl time.Duration) error DeleteTaskList(ctx context.Context, pattern string) error + // NonFinalTaskList相关 GetNonFinalTaskList(ctx context.Context) ([]*entity.ObservabilityTask, error) SetNonFinalTaskList(ctx context.Context, tasks []*entity.ObservabilityTask, ttl time.Duration) error DeleteNonFinalTaskList(ctx context.Context) error + AddNonFinalTask(ctx context.Context, task *entity.ObservabilityTask) error + RemoveNonFinalTask(ctx context.Context, taskID int64) error + // TaskCount相关 GetTaskCount(ctx context.Context, taskID int64) (int64, error) SetTaskCount(ctx context.Context, taskID int64, count int64, ttl time.Duration) error DeleteTaskCount(ctx context.Context, taskID int64) error + // TaskRunCount相关 GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) + SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error + DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error + GetObjListWithTask(ctx context.Context) ([]string, []string, error) } @@ -64,30 +62,25 @@ func NewTaskDAO(cmdable redis.Cmdable) ITaskDAO { } } -// 原有 key 生成方法 func (q *TaskDAOImpl) makeTaskConfigKey(taskID int64) string { return fmt.Sprintf("task_config_%d", taskID) } -func (q *TaskDAOImpl) makeTaskCountKey(taskID int64) string { - return fmt.Sprintf("count_%d", taskID) +func (q *TaskDAOImpl) makeNonFinalTaskListKey() string { + return "task:list:non_final" } -func (q *TaskDAOImpl) makeTaskRunCountKey(taskID, runID int64) string { - return fmt.Sprintf("count_%d_%d", taskID, runID) +func (q *TaskDAOImpl) makeSpaceListWithTaskKey() string { + return "space:list:with_task" } - -// 新增 key 生成方法 -func (q *TaskDAOImpl) makeTaskDetailKey(id int64) string { - return fmt.Sprintf("task:detail:%d", id) +func (q *TaskDAOImpl) makeBotListWithTaskKey() string { + return "bot:list:with_task" } - -func (q *TaskDAOImpl) makeTaskListKey(workspaceID int64, filterHash string, page, size int32) string { - return fmt.Sprintf("task:list:%d:%s:%d:%d", workspaceID, filterHash, page, size) +func (q *TaskDAOImpl) makeWorkflowListWithTaskKey() string { + return "workflow:list:with_task" } - -func (q *TaskDAOImpl) makeNonFinalTaskListKey() string { - return "task:list:non_final" +func (q *TaskDAOImpl) makeAppListWithTaskKey() string { + return "app:list:with_task" } func (q *TaskDAOImpl) makeTaskCountCacheKey(taskID int64) string { @@ -115,77 +108,6 @@ func (q *TaskDAOImpl) generateFilterHash(param mysql.ListTaskParam) string { return hex.EncodeToString(hash[:]) } -func (p *TaskDAOImpl) MSetTaskConfig(ctx context.Context, taskConfig *entity.ObservabilityTask) error { - bytes, err := convert.NewTaskConverter().FromDO(taskConfig) - if err != nil { - return err - } - key := p.makeTaskConfigKey(taskConfig.ID) - if err := p.cmdable.Set(ctx, key, bytes, time.Hour*24*2).Err(); err != nil { - return errorx.Wrapf(err, "redis set key: %v", key) - } - return nil -} - -func (p *TaskDAOImpl) MGetTaskConfig(ctx context.Context, taskID int64) (taskConfig *entity.ObservabilityTask, err error) { - key := p.makeTaskConfigKey(taskID) - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil && !redis.IsNilError(err) { - return nil, errorx.Wrapf(err, "redis get fail, key: %v", key) - } - return convert.NewTaskConverter().ToDO(conv.UnsafeStringToBytes(got)) -} - -func (p *TaskDAOImpl) MGetTaskCount(ctx context.Context, taskID int64) (count int64, err error) { - key := p.makeTaskCountKey(taskID) - got, err := p.cmdable.Get(ctx, key).Int64() - if err != nil && !redis.IsNilError(err) { - return 0, errorx.Wrapf(err, "redis get fail, key: %v", key) - } - return got, nil -} - -func (p *TaskDAOImpl) MGetTaskRunCount(ctx context.Context, taskID, runID int64) (count int64, err error) { - key := p.makeTaskRunCountKey(taskID, runID) - got, err := p.cmdable.Get(ctx, key).Int64() - if err != nil && !redis.IsNilError(err) { - return 0, errorx.Wrapf(err, "redis get fail, key: %v", key) - } - return got, nil -} - -func (p *TaskDAOImpl) MIncrTaskCount(ctx context.Context, taskID int64, count int64) error { - key := p.makeTaskCountKey(taskID) - if err := p.cmdable.IncrBy(ctx, key, count).Err(); err != nil { - return errorx.Wrapf(err, "redis incr key: %v", key) - } - return nil -} -func (p *TaskDAOImpl) MDecrTaskCount(ctx context.Context, taskID int64, count int64) error { - key := p.makeTaskCountKey(taskID) - if err := p.cmdable.DecrBy(ctx, key, count).Err(); err != nil { - return errorx.Wrapf(err, "redis decr key: %v", key) - } - return nil -} - -func (p *TaskDAOImpl) MIncrTaskRunCount(ctx context.Context, taskID, runID int64, count int64) error { - key := p.makeTaskRunCountKey(taskID, runID) - if err := p.cmdable.IncrBy(ctx, key, count).Err(); err != nil { - return errorx.Wrapf(err, "redis incr key: %v", key) - } - return nil -} -func (p *TaskDAOImpl) MDecrTaskRunCount(ctx context.Context, taskID, runID int64, count int64) error { - key := p.makeTaskRunCountKey(taskID, runID) - if err := p.cmdable.DecrBy(ctx, key, count).Err(); err != nil { - return errorx.Wrapf(err, "redis decr key: %v", key) - } - return nil -} - -// 新增 CRUD 缓存方法实现 - // GetTask 获取单个任务缓存 func (p *TaskDAOImpl) GetTask(ctx context.Context, id int64) (*entity.ObservabilityTask, error) { key := p.makeTaskConfigKey(id) @@ -213,16 +135,6 @@ func (p *TaskDAOImpl) SetTask(ctx context.Context, task *entity.ObservabilityTas return nil } -// DeleteTask 删除单个任务缓存 -func (p *TaskDAOImpl) DeleteTask(ctx context.Context, id int64) error { - key := p.makeTaskDetailKey(id) - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete task key: %v", key) - } - return nil -} - // TaskListCache 任务列表缓存结构 type TaskListCache struct { Items []*entity.ObservabilityTask `json:"items"` @@ -311,6 +223,33 @@ func (p *TaskDAOImpl) SetNonFinalTaskList(ctx context.Context, tasks []*entity.O return nil } +// 向非最终状态任务列表中新增任务 +func (p *TaskDAOImpl) AddNonFinalTask(ctx context.Context, task *entity.ObservabilityTask) error { + tasks, err := p.GetNonFinalTaskList(ctx) + if err != nil { + logs.CtxError(ctx, "GetNonFinalTaskList failed", "err", err) + return err + } + tasks = append(tasks, task) + return p.SetNonFinalTaskList(ctx, tasks, time.Hour*24*2) +} + +// 向非最终状态任务列表中删除任务 +func (p *TaskDAOImpl) RemoveNonFinalTask(ctx context.Context, taskID int64) error { + tasks, err := p.GetNonFinalTaskList(ctx) + if err != nil { + logs.CtxError(ctx, "GetNonFinalTaskList failed", "err", err) + return err + } + for i, task := range tasks { + if task.ID == taskID { + tasks = append(tasks[:i], tasks[i+1:]...) + break + } + } + return p.SetNonFinalTaskList(ctx, tasks, time.Hour*24*2) +} + // DeleteNonFinalTaskList 删除非最终状态任务列表缓存 func (p *TaskDAOImpl) DeleteNonFinalTaskList(ctx context.Context) error { key := p.makeNonFinalTaskListKey() @@ -367,6 +306,26 @@ func (p *TaskDAOImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int return got, nil } +// SetTaskRunCount 设置任务运行计数缓存 +func (p *TaskDAOImpl) SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error { + key := p.makeTaskRunCountCacheKey(taskID, taskRunID) + if err := p.cmdable.Set(ctx, key, count, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set task run count cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set task run count key: %v", key) + } + return nil +} + +// DeleteTaskRunCount 删除任务运行计数缓存 +func (p *TaskDAOImpl) DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { + key := p.makeTaskRunCountCacheKey(taskID, taskRunID) + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete task run count cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete task run count key: %v", key) + } + return nil +} + func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, error) { spaceKey := "spaceList" botKey := "botList" @@ -393,4 +352,4 @@ func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) } return spaceList, botList, nil -} +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index e3c1da508..c5967fc16 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -121,20 +121,15 @@ func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityT if err = v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { logs.Error("failed to set task cache after create", "id", createdID, "err", err) } - + // 更新非最终状态任务列表缓存 - if isNonFinalTaskStatus(do.TaskStatus) { - // 读取当前缓存的非最终状态任务列表 - currentList, err := v.TaskRedisDao.GetNonFinalTaskList(context.Background()) - if err != nil { - logs.Error("failed to get non final task list cache", "id", createdID, "err", err) - } else { - // 将新创建的任务添加到列表中 - updatedList := append(currentList, do) - // 更新缓存 - if err := v.TaskRedisDao.SetNonFinalTaskList(context.Background(), updatedList, NonFinalTaskListTTL); err != nil { - logs.Error("failed to update non final task list cache after create", "id", createdID, "err", err) - } + currentList, err := v.TaskRedisDao.GetNonFinalTaskList(context.Background()) + if err != nil { + logs.Error("failed to get non final task list cache", "id", createdID, "err", err) + } else { + updatedList := append(currentList, do) + if err := v.TaskRedisDao.SetNonFinalTaskList(context.Background(), updatedList, NonFinalTaskListTTL); err != nil { + logs.Error("failed to update non final task list cache after create", "id", createdID, "err", err) } } }() @@ -334,4 +329,4 @@ func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID in return count, nil } return count, nil -} \ No newline at end of file +} From a9e4c4c375efb3adb29cdb251e38b4e81be170eb Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 16:50:49 +0800 Subject: [PATCH 191/462] feat: [Coda] implement SpaceListWithTask cache operations methods (LogID: 2025091616133601009111020717128B4) Co-Authored-By: Coda --- .../infra/repo/redis/dao/task.go | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 9cc3ebc6a..7f28cc6ce 100644 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -11,6 +11,7 @@ import ( "time" "github.com/coze-dev/coze-loop/backend/infra/redis" + foundationEntity "github.com/coze-dev/coze-loop/backend/modules/foundation/domain/user/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/convert" @@ -49,6 +50,11 @@ type ITaskDAO interface { DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error GetObjListWithTask(ctx context.Context) ([]string, []string, error) + + // SpaceListWithTask相关 + GetSpaceListWithTask(ctx context.Context) ([]*foundationEntity.Space, error) + SetSpaceListWithTask(ctx context.Context, spaces []*foundationEntity.Space, ttl time.Duration) error + DeleteSpaceListWithTask(ctx context.Context) error } type TaskDAOImpl struct { @@ -352,4 +358,49 @@ func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) } return spaceList, botList, nil +} + +// GetSpaceListWithTask 获取包含任务的空间列表缓存 +func (p *TaskDAOImpl) GetSpaceListWithTask(ctx context.Context) ([]*foundationEntity.Space, error) { + key := p.makeSpaceListWithTaskKey() + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil // 缓存未命中 + } + return nil, errorx.Wrapf(err, "redis get space list with task fail, key: %v", key) + } + + var spaces []*foundationEntity.Space + if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &spaces); err != nil { + return nil, errorx.Wrapf(err, "unmarshal space list with task cache failed") + } + + return spaces, nil +} + +// SetSpaceListWithTask 设置包含任务的空间列表缓存 +func (p *TaskDAOImpl) SetSpaceListWithTask(ctx context.Context, spaces []*foundationEntity.Space, ttl time.Duration) error { + key := p.makeSpaceListWithTaskKey() + + bytes, err := json.Marshal(spaces) + if err != nil { + return errorx.Wrapf(err, "marshal space list with task cache failed") + } + + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set space list with task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set space list with task key: %v", key) + } + return nil +} + +// DeleteSpaceListWithTask 删除包含任务的空间列表缓存 +func (p *TaskDAOImpl) DeleteSpaceListWithTask(ctx context.Context) error { + key := p.makeSpaceListWithTaskKey() + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete space list with task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete space list with task key: %v", key) + } + return nil } \ No newline at end of file From f6959278ec8fb26b4f19c5719f8731fb26163c6b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 17:05:13 +0800 Subject: [PATCH 192/462] feat: [Coda] reimplement SpaceListWithTask and related cache operations (LogID: 2025091616133601009111020717128B4) Co-Authored-By: Coda --- .../modules/observability/application/task.go | 27 --- .../domain/task/service/task_service.go | 20 ++- .../task/taskexe/processor/auto_evaluate.go | 35 +++- .../task/taskexe/processor/data_reflow.go | 8 + .../task/taskexe/tracehub/scheduled_task.go | 86 +++++++++ .../domain/task/taskexe/tracehub/trace_hub.go | 77 +------- .../infra/repo/redis/dao/task.go | 165 +++++++++++++++++- .../modules/observability/infra/repo/task.go | 17 ++ 8 files changed, 321 insertions(+), 114 deletions(-) mode change 100644 => 100755 backend/modules/observability/infra/repo/redis/dao/task.go diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 859143069..4229e0567 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -14,7 +14,6 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/tracehub" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" - "github.com/coze-dev/coze-loop/backend/pkg/logs" ) type ITaskQueueConsumer interface { @@ -116,32 +115,6 @@ func (t *TaskApplication) validateCreateTaskReq(ctx context.Context, req *task.C return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("The start time must be earlier than the end time.")) } } - switch req.GetTask().GetTaskType() { - case "auto_evaluate": - var evaluatorVersionIDs []int64 - for _, autoEvaluateConfig := range req.GetTask().GetTaskConfig().GetAutoEvaluateConfigs() { - evaluatorVersionIDs = append(evaluatorVersionIDs, autoEvaluateConfig.GetEvaluatorVersionID()) - } - if len(evaluatorVersionIDs) == 0 { - return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Invalid parameter. Please check the parameter and try again.")) - } - // 检查评估器版本是否合法 - evaluators, _, err := t.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ - WorkspaceID: req.GetTask().GetWorkspaceID(), - EvaluatorVersionIds: evaluatorVersionIDs, - }) - if err != nil { - return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithMsgParam("evaluatorVersionIDs is invalid, BatchGetEvaluators err: %v", err.Error())) - } - if len(evaluators) != len(evaluatorVersionIDs) { - logs.CtxError(ctx, "evaluators len: %d, evaluatorVersionIDs len: %d", len(evaluators), len(evaluatorVersionIDs)) - return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("evaluatorVersionIDs is invalid, len(evaluators) != len(evaluatorVersionIDs)")) - } - case "auto_data_reflow": - // 检查数据集id是否合法 - default: - return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Invalid parameter. Please check the parameter and try again.")) - } return nil } diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index f985f78d0..6a7e96829 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -122,7 +122,6 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if err != nil { return nil, err } - taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) // 数据回流任务——创建/更新输出数据集 // 自动评测历史回溯——创建空壳子 taskOp := taskexe.TaskOpUndefined @@ -133,13 +132,14 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r taskOp = taskexe.TaskOpCreateBackfill } if taskOp != taskexe.TaskOpUndefined { + taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) if err = proc.OnChangeProcessor(ctx, taskConfig, taskOp); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) //任务改为禁用? return nil, err } } - // TODO: 历史回溯数据发MQ + // 历史回溯数据发MQ if t.shouldTriggerBackfill(req.Task) { backfillEvent := &entity.BackFillEvent{ SpaceID: req.Task.GetWorkspaceID(), @@ -169,6 +169,7 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e if userID == "" { return errorx.NewByCode(obErrorx.UserParseFailedCode) } + // 校验更新参数是否合法 if req.Description != nil { taskPO.Description = req.Description } @@ -189,7 +190,19 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e } if validTaskStatus != "" { if validTaskStatus == task.TaskStatusDisabled { - //todo[xun]:禁用操作处理 + // 禁用操作处理 + proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) + if err != nil { + logs.CtxError(ctx, "CreateTask NewProcessor err:%v", err) + return err + } + taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) + taskRuns := tconv.TaskRunPOs2DOs(ctx, taskPO.TaskRuns, nil) + if err = proc.Finish(ctx, taskRuns, &taskexe.Trigger{Task: taskConfig, Span: nil, IsFinish: false}); err != nil { + logs.CtxError(ctx, "proc Finish err:%v", err) + return err + + } } taskPO.TaskStatus = *req.TaskStatus } @@ -201,6 +214,7 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e } return nil } + func (t *TaskServiceImpl) ListTasks(ctx context.Context, req *ListTasksReq) (resp *ListTasksResp, err error) { taskPOs, total, err := t.TaskRepo.ListTasks(ctx, mysql.ListTaskParam{ WorkspaceIDs: []int64{req.WorkspaceID}, diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 703603cab..88bb0972a 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -12,6 +12,8 @@ import ( "github.com/bytedance/sonic" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/apaxa-go/helper/strconvh" @@ -59,7 +61,38 @@ func newAutoEvaluteProcessor( } func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any) error { - + cfg, ok := config.(*task.Task) + if !ok { + return taskexe.ErrInvalidConfig + } + if cfg.GetRule() != nil && cfg.GetRule().GetEffectiveTime() != nil { + startAt := cfg.GetRule().GetEffectiveTime().GetStartAt() + endAt := cfg.GetRule().GetEffectiveTime().GetEndAt() + if startAt <= time.Now().Add(-10*time.Minute).UnixMilli() { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } + if startAt >= endAt { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } + } + var evaluatorVersionIDs []int64 + for _, autoEvaluateConfig := range cfg.GetTaskConfig().GetAutoEvaluateConfigs() { + evaluatorVersionIDs = append(evaluatorVersionIDs, autoEvaluateConfig.GetEvaluatorVersionID()) + } + if len(evaluatorVersionIDs) == 0 { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } + // 检查评估器版本是否合法 + evaluators, _, err := p.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ + WorkspaceID: cfg.GetWorkspaceID(), + EvaluatorVersionIds: evaluatorVersionIDs, + }) + if err != nil { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } + if len(evaluators) != len(evaluatorVersionIDs) { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } return nil } diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 4f7e016fc..b5d501875 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -37,7 +37,15 @@ func newDataReflowProcessor(datasetServiceProvider *service.DatasetServiceAdapto } func (p *DataReflowProcessor) ValidateConfig(ctx context.Context, config any) error { + cfg, ok := config.(*task.Task) + if !ok { + return taskexe.ErrInvalidConfig + } + if cfg.GetTaskConfig().GetDataReflowConfig() == nil || len(cfg.GetTaskConfig().GetDataReflowConfig()) == 0 { + return taskexe.ErrInvalidConfig + } + // todo:[xun]1、数据集是否存在,2、数据集是否重名 return nil } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 02558b881..52c09d80b 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -2,3 +2,89 @@ // SPDX-License-Identifier: Apache-2.0 package tracehub + +import ( + "context" + "time" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +// startScheduledTask 启动定时任务goroutine +func (h *TraceHubServiceImpl) startScheduledTask() { + go func() { + for { + select { + case <-h.ticker.C: + // 执行定时任务 + h.runScheduledTask() + case <-h.stopChan: + // 停止定时任务 + h.ticker.Stop() + return + } + } + }() +} + +func (h *TraceHubServiceImpl) runScheduledTask() { + ctx := context.Background() + logs.CtxInfo(ctx, "定时任务开始执行...") + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) + ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + // 读取所有非终态(成功/禁用)任务 + taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) + if err != nil { + logs.CtxError(ctx, "ListNonFinalTask err:%v", err) + return + } + var tasks []*task.Task + taskRunstat := make(map[int64]bool) + logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) + for _, taskPO := range taskPOs { + tasks = append(tasks, tconv.TaskPO2DTO(ctx, taskPO, nil)) + runDone := true + for _, taskRun := range taskPO.TaskRuns { + if taskRun.RunStatus == task.RunStatusRunning { + runDone = false + } + } + taskRunstat[taskPO.ID] = runDone + } + logs.CtxInfo(ctx, "taskRunstat:%v", taskRunstat) + // 遍历任务 + for _, taskInfo := range tasks { + endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) + startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()*int64(time.Millisecond)) + proc, err := processor.NewProcessor(ctx, taskInfo.TaskType) + if err != nil { + logs.CtxError(ctx, "NewProcessor err:%v", err) + continue + } + // 达到任务时间期限 + // 到任务结束时间就结束 + logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) + if time.Now().After(endTime) && taskRunstat[*taskInfo.ID] { + updateMap := map[string]interface{}{ + "task_status": task.TaskStatusSuccess, + } + err = h.taskRepo.UpdateTaskWithOCC(ctx, taskInfo.GetID(), taskInfo.GetWorkspaceID(), updateMap) + if err != nil { + logs.CtxError(ctx, "[auto_task] UpdateTask err:%v", err) + continue + } + } + // 如果任务状态为unstarted,到任务开始时间就开始create + if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { + err = proc.OnChangeProcessor(ctx, taskInfo, task.TaskStatusUnstarted) + if err != nil { + logs.CtxError(ctx, "OnChangeProcessor err:%v", err) + continue + } + } + } +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index f3dee7d98..385889e0a 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -90,12 +90,14 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS var tags []metrics.T // 1、转换成标准span,并根据space_id初步过滤 span := rawSpan.RawSpanConvertToLoopSpan() + // 1.1 过滤掉 Evaluator 类型的 span if slices.Contains([]string{"Evaluator"}, span.CallType) { return nil } logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) spaceList, _ := h.taskRepo.GetObjListWithTask(ctx) logs.CtxInfo(ctx, "space list: %v", spaceList) + // 1.2 过滤掉不在 spaceList 中的 span if !gslice.Contains(spaceList, span.WorkspaceID) { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) logs.CtxInfo(ctx, "no space found for span, %s", logSuffix) @@ -291,81 +293,6 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S return merr.ErrorOrNil() } -// startScheduledTask 启动定时任务goroutine -func (h *TraceHubServiceImpl) startScheduledTask() { - go func() { - for { - select { - case <-h.ticker.C: - // 执行定时任务 - h.runScheduledTask() - case <-h.stopChan: - // 停止定时任务 - h.ticker.Stop() - return - } - } - }() -} - -func (h *TraceHubServiceImpl) runScheduledTask() { - ctx := context.Background() - logs.CtxInfo(ctx, "定时任务开始执行...") - logID := logs.NewLogID() - ctx = logs.SetLogID(ctx, logID) - ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") - // 读取所有非终态(成功/禁用)任务 - taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) - if err != nil { - logs.CtxError(ctx, "ListNonFinalTask err:%v", err) - return - } - var tasks []*task.Task - taskRunstat := make(map[int64]bool) - logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) - for _, taskPO := range taskPOs { - tasks = append(tasks, tconv.TaskPO2DTO(ctx, taskPO, nil)) - runDone := true - for _, taskRun := range taskPO.TaskRuns { - if taskRun.RunStatus == task.RunStatusRunning { - runDone = false - } - } - taskRunstat[taskPO.ID] = runDone - } - logs.CtxInfo(ctx, "taskRunstat:%v", taskRunstat) - // 遍历任务 - for _, taskInfo := range tasks { - endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) - startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()*int64(time.Millisecond)) - proc, err := processor.NewProcessor(ctx, taskInfo.TaskType) - if err != nil { - logs.CtxError(ctx, "NewProcessor err:%v", err) - continue - } - // 达到任务时间期限 - // 到任务结束时间就结束 - logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) - if time.Now().After(endTime) && taskRunstat[*taskInfo.ID] { - updateMap := map[string]interface{}{ - "task_status": task.TaskStatusSuccess, - } - err = h.taskRepo.UpdateTaskWithOCC(ctx, taskInfo.GetID(), taskInfo.GetWorkspaceID(), updateMap) - if err != nil { - logs.CtxError(ctx, "[auto_task] UpdateTask err:%v", err) - continue - } - } - // 如果任务状态为unstarted,到任务开始时间就开始create - if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { - err = proc.OnChangeProcessor(ctx, taskInfo, task.TaskStatusUnstarted) - if err != nil { - logs.CtxError(ctx, "OnChangeProcessor err:%v", err) - continue - } - } - } -} func (h *TraceHubServiceImpl) Close() { close(h.stopChan) } diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go old mode 100644 new mode 100755 index 7f28cc6ce..dbf168cda --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -11,7 +11,6 @@ import ( "time" "github.com/coze-dev/coze-loop/backend/infra/redis" - foundationEntity "github.com/coze-dev/coze-loop/backend/modules/foundation/domain/user/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/convert" @@ -52,9 +51,24 @@ type ITaskDAO interface { GetObjListWithTask(ctx context.Context) ([]string, []string, error) // SpaceListWithTask相关 - GetSpaceListWithTask(ctx context.Context) ([]*foundationEntity.Space, error) - SetSpaceListWithTask(ctx context.Context, spaces []*foundationEntity.Space, ttl time.Duration) error + GetSpaceListWithTask(ctx context.Context) ([]string, error) + SetSpaceListWithTask(ctx context.Context, spaces []string, ttl time.Duration) error DeleteSpaceListWithTask(ctx context.Context) error + + // BotListWithTask相关 + GetBotListWithTask(ctx context.Context) ([]string, error) + SetBotListWithTask(ctx context.Context, bots []string, ttl time.Duration) error + DeleteBotListWithTask(ctx context.Context) error + + // WorkflowListWithTask相关 + GetWorkflowListWithTask(ctx context.Context) ([]string, error) + SetWorkflowListWithTask(ctx context.Context, workflows []string, ttl time.Duration) error + DeleteWorkflowListWithTask(ctx context.Context) error + + // AppListWithTask相关 + GetAppListWithTask(ctx context.Context) ([]string, error) + SetAppListWithTask(ctx context.Context, apps []string, ttl time.Duration) error + DeleteAppListWithTask(ctx context.Context) error } type TaskDAOImpl struct { @@ -299,7 +313,7 @@ func (p *TaskDAOImpl) DeleteTaskCount(ctx context.Context, workspaceID int64) er return nil } -// GetTaskCount 获取任务计数缓存 +// GetTaskRunCount 获取任务运行计数缓存 func (p *TaskDAOImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { key := p.makeTaskRunCountCacheKey(taskID, taskRunID) got, err := p.cmdable.Get(ctx, key).Int64() @@ -361,7 +375,7 @@ func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin } // GetSpaceListWithTask 获取包含任务的空间列表缓存 -func (p *TaskDAOImpl) GetSpaceListWithTask(ctx context.Context) ([]*foundationEntity.Space, error) { +func (p *TaskDAOImpl) GetSpaceListWithTask(ctx context.Context) ([]string, error) { key := p.makeSpaceListWithTaskKey() got, err := p.cmdable.Get(ctx, key).Result() if err != nil { @@ -371,7 +385,7 @@ func (p *TaskDAOImpl) GetSpaceListWithTask(ctx context.Context) ([]*foundationEn return nil, errorx.Wrapf(err, "redis get space list with task fail, key: %v", key) } - var spaces []*foundationEntity.Space + var spaces []string if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &spaces); err != nil { return nil, errorx.Wrapf(err, "unmarshal space list with task cache failed") } @@ -380,7 +394,7 @@ func (p *TaskDAOImpl) GetSpaceListWithTask(ctx context.Context) ([]*foundationEn } // SetSpaceListWithTask 设置包含任务的空间列表缓存 -func (p *TaskDAOImpl) SetSpaceListWithTask(ctx context.Context, spaces []*foundationEntity.Space, ttl time.Duration) error { +func (p *TaskDAOImpl) SetSpaceListWithTask(ctx context.Context, spaces []string, ttl time.Duration) error { key := p.makeSpaceListWithTaskKey() bytes, err := json.Marshal(spaces) @@ -403,4 +417,139 @@ func (p *TaskDAOImpl) DeleteSpaceListWithTask(ctx context.Context) error { return errorx.Wrapf(err, "redis delete space list with task key: %v", key) } return nil -} \ No newline at end of file +} + +// GetBotListWithTask 获取包含任务的机器人列表缓存 +func (p *TaskDAOImpl) GetBotListWithTask(ctx context.Context) ([]string, error) { + key := p.makeBotListWithTaskKey() + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil // 缓存未命中 + } + return nil, errorx.Wrapf(err, "redis get bot list with task fail, key: %v", key) + } + + var bots []string + if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &bots); err != nil { + return nil, errorx.Wrapf(err, "unmarshal bot list with task cache failed") + } + + return bots, nil +} + +// SetBotListWithTask 设置包含任务的机器人列表缓存 +func (p *TaskDAOImpl) SetBotListWithTask(ctx context.Context, bots []string, ttl time.Duration) error { + key := p.makeBotListWithTaskKey() + + bytes, err := json.Marshal(bots) + if err != nil { + return errorx.Wrapf(err, "marshal bot list with task cache failed") + } + + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set bot list with task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set bot list with task key: %v", key) + } + return nil +} + +// DeleteBotListWithTask 删除包含任务的机器人列表缓存 +func (p *TaskDAOImpl) DeleteBotListWithTask(ctx context.Context) error { + key := p.makeBotListWithTaskKey() + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete bot list with task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete bot list with task key: %v", key) + } + return nil +} + +// GetWorkflowListWithTask 获取包含任务的工作流列表缓存 +func (p *TaskDAOImpl) GetWorkflowListWithTask(ctx context.Context) ([]string, error) { + key := p.makeWorkflowListWithTaskKey() + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil // 缓存未命中 + } + return nil, errorx.Wrapf(err, "redis get workflow list with task fail, key: %v", key) + } + + var workflows []string + if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &workflows); err != nil { + return nil, errorx.Wrapf(err, "unmarshal workflow list with task cache failed") + } + + return workflows, nil +} + +// SetWorkflowListWithTask 设置包含任务的工作流列表缓存 +func (p *TaskDAOImpl) SetWorkflowListWithTask(ctx context.Context, workflows []string, ttl time.Duration) error { + key := p.makeWorkflowListWithTaskKey() + + bytes, err := json.Marshal(workflows) + if err != nil { + return errorx.Wrapf(err, "marshal workflow list with task cache failed") + } + + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set workflow list with task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set workflow list with task key: %v", key) + } + return nil +} + +// DeleteWorkflowListWithTask 删除包含任务的工作流列表缓存 +func (p *TaskDAOImpl) DeleteWorkflowListWithTask(ctx context.Context) error { + key := p.makeWorkflowListWithTaskKey() + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete workflow list with task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete workflow list with task key: %v", key) + } + return nil +} + +// GetAppListWithTask 获取包含任务的应用列表缓存 +func (p *TaskDAOImpl) GetAppListWithTask(ctx context.Context) ([]string, error) { + key := p.makeAppListWithTaskKey() + got, err := p.cmdable.Get(ctx, key).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil // 缓存未命中 + } + return nil, errorx.Wrapf(err, "redis get app list with task fail, key: %v", key) + } + + var apps []string + if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &apps); err != nil { + return nil, errorx.Wrapf(err, "unmarshal app list with task cache failed") + } + + return apps, nil +} + +// SetAppListWithTask 设置包含任务的应用列表缓存 +func (p *TaskDAOImpl) SetAppListWithTask(ctx context.Context, apps []string, ttl time.Duration) error { + key := p.makeAppListWithTaskKey() + + bytes, err := json.Marshal(apps) + if err != nil { + return errorx.Wrapf(err, "marshal app list with task cache failed") + } + + if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { + logs.CtxError(ctx, "redis set app list with task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis set app list with task key: %v", key) + } + return nil +} + +// DeleteAppListWithTask 删除包含任务的应用列表缓存 +func (p *TaskDAOImpl) DeleteAppListWithTask(ctx context.Context) error { + key := p.makeAppListWithTaskKey() + if err := p.cmdable.Del(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis delete app list with task cache failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis delete app list with task key: %v", key) + } + return nil +} diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index c5967fc16..d5a5c9ae9 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -330,3 +330,20 @@ func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID in } return count, nil } + +func (v *TaskRepoImpl) IncrTaskCount(ctx context.Context, taskID int64) error { + + return nil +} +func (v *TaskRepoImpl) DecrTaskCount(ctx context.Context, taskID int64) error { + + return nil +} +func (v *TaskRepoImpl) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { + + return nil +} +func (v *TaskRepoImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { + + return nil +} From 454bf4ffb68d568c958e00bfec4012041df8d3fe Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 17:20:57 +0800 Subject: [PATCH 193/462] fix: [Coda] adjust taskRunstat logic to check all runs are done (LogID: 2025091616133601009111020717128B4) Co-Authored-By: Coda --- .../task/taskexe/tracehub/scheduled_task.go | 23 +++++++++++----- .../modules/observability/infra/repo/task.go | 27 ------------------- 2 files changed, 17 insertions(+), 33 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 52c09d80b..a2ea6c37f 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -47,14 +47,25 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) for _, taskPO := range taskPOs { tasks = append(tasks, tconv.TaskPO2DTO(ctx, taskPO, nil)) - runDone := true - for _, taskRun := range taskPO.TaskRuns { - if taskRun.RunStatus == task.RunStatusRunning { - runDone = false + + // 计算 taskRunstat:只有当所有 run 都为 done 状态时才为 true + allRunsDone := true + if len(taskPO.TaskRuns) == 0 { + // 如果没有 TaskRuns,则认为未完成 + allRunsDone = false + } else { + // 检查所有 TaskRuns 是否都为 done 状态 + for _, taskRun := range taskPO.TaskRuns { + if taskRun.RunStatus != task.RunStatusDone { + allRunsDone = false + break + } } } - taskRunstat[taskPO.ID] = runDone + + taskRunstat[taskPO.ID] = allRunsDone } + logs.CtxInfo(ctx, "taskPOs:%v", taskPOs) logs.CtxInfo(ctx, "taskRunstat:%v", taskRunstat) // 遍历任务 for _, taskInfo := range tasks { @@ -87,4 +98,4 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } -} +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index d5a5c9ae9..459902f82 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -167,27 +167,6 @@ func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityT return nil } -func (v *TaskRepoImpl) DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error { - // 先执行数据库操作 - err := v.TaskDao.DeleteTask(ctx, id, workspaceID, userID) - if err != nil { - return err - } - - // 数据库操作成功后,删除缓存 - go func() { - // 删除单个任务缓存 - if err := v.TaskRedisDao.DeleteTask(context.Background(), id); err != nil { - logs.Error("failed to delete task cache", "id", id, "err", err) - } - - // 清理相关列表缓存 - v.clearListCaches(context.Background(), workspaceID) - }() - - return nil -} - func (v *TaskRepoImpl) ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) { // 先查 Redis 缓存 cachedTasks, err := v.TaskRedisDao.GetNonFinalTaskList(ctx) @@ -247,11 +226,6 @@ func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspac // 数据库操作成功后,删除缓存(因为无法直接更新部分字段) go func() { - // 删除单个任务缓存,下次查询时会重新加载 - if err := v.TaskRedisDao.DeleteTask(context.Background(), id); err != nil { - logs.Error("failed to delete task cache after OCC update", "id", id, "err", err) - } - // 清理相关列表缓存 v.clearListCaches(context.Background(), workspaceID) @@ -332,7 +306,6 @@ func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID in } func (v *TaskRepoImpl) IncrTaskCount(ctx context.Context, taskID int64) error { - return nil } func (v *TaskRepoImpl) DecrTaskCount(ctx context.Context, taskID int64) error { From 4ea58a92faa7aa5dd0dd3e9dca7604e4f6a2d0b5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 17:29:30 +0800 Subject: [PATCH 194/462] =?UTF-8?q?feat=EF=BC=9Aadd=20debug=20log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../observability/domain/task/repo/task.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index c80fa4fbe..39e23d786 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -12,15 +12,25 @@ import ( //go:generate mockgen -destination=mocks/Task.go -package=mocks . ITaskRepo type ITaskRepo interface { + // task GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityTask, error) ListTasks(ctx context.Context, param mysql.ListTaskParam) ([]*entity.ObservabilityTask, int64, error) UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) - DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error - ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error - GetObjListWithTask(ctx context.Context) ([]string, []string) - ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask + + // task count GetTaskCount(ctx context.Context, taskID int64) (int64, error) + IncrTaskCount(ctx context.Context, taskID int64) error + DecrTaskCount(ctx context.Context, taskID int64) error + + // task run count GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) + IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error + DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error + + // + ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) + GetObjListWithTask(ctx context.Context) ([]string, []string) + ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask } From ffa902e64e8f2415b0f12f61c54c201743731021 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 19:22:15 +0800 Subject: [PATCH 195/462] fix --- .../observability/domain/task/service/task_service.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 6a7e96829..19f151629 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -198,7 +198,14 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e } taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) taskRuns := tconv.TaskRunPOs2DOs(ctx, taskPO.TaskRuns, nil) - if err = proc.Finish(ctx, taskRuns, &taskexe.Trigger{Task: taskConfig, Span: nil, IsFinish: false}); err != nil { + var taskRun *task.TaskRun + for _, tr := range taskRuns { + if tr.RunStatus == task.RunStatusRunning { + taskRun = tr + break + } + } + if err = proc.Finish(ctx, taskRun, &taskexe.Trigger{Task: taskConfig, Span: nil, IsFinish: false}); err != nil { logs.CtxError(ctx, "proc Finish err:%v", err) return err From ffbf370641712d5b192f1708ef91428453d591d4 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 19:25:50 +0800 Subject: [PATCH 196/462] fix --- .../domain/task/service/task_service.go | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 19f151629..2afbb0f10 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -191,25 +191,25 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e if validTaskStatus != "" { if validTaskStatus == task.TaskStatusDisabled { // 禁用操作处理 - proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) - if err != nil { - logs.CtxError(ctx, "CreateTask NewProcessor err:%v", err) - return err - } - taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) - taskRuns := tconv.TaskRunPOs2DOs(ctx, taskPO.TaskRuns, nil) - var taskRun *task.TaskRun - for _, tr := range taskRuns { - if tr.RunStatus == task.RunStatusRunning { - taskRun = tr - break - } - } - if err = proc.Finish(ctx, taskRun, &taskexe.Trigger{Task: taskConfig, Span: nil, IsFinish: false}); err != nil { - logs.CtxError(ctx, "proc Finish err:%v", err) - return err - - } + //proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) + //if err != nil { + // logs.CtxError(ctx, "CreateTask NewProcessor err:%v", err) + // return err + //} + //taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) + //taskRuns := tconv.TaskRunPOs2DOs(ctx, taskPO.TaskRuns, nil) + //var taskRun *task.TaskRun + //for _, tr := range taskRuns { + // if tr.RunStatus == task.RunStatusRunning { + // taskRun = tr + // break + // } + //} + //if err = proc.Finish(ctx, taskRun, &taskexe.Trigger{Task: taskConfig, Span: nil, IsFinish: false}); err != nil { + // logs.CtxError(ctx, "proc Finish err:%v", err) + // return err + // + //} } taskPO.TaskStatus = *req.TaskStatus } From 1f7ef590f60b5f3098475dc39c28091e81f12265 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 19:46:22 +0800 Subject: [PATCH 197/462] delete useless code --- .../observability/infra/repo/mysql/task.go | 279 ------------------ .../infra/repo/mysql/task_run.go | 233 --------------- 2 files changed, 512 deletions(-) delete mode 100644 backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go delete mode 100755 backend/script/gorm_gen/modules/observability/infra/repo/mysql/task_run.go diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go deleted file mode 100644 index 27dce67d1..000000000 --- a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task.go +++ /dev/null @@ -1,279 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 -package mysql - -import ( - "context" - "errors" - "fmt" - "strconv" - - "github.com/coze-dev/coze-loop/backend/infra/db" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" - "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" - "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" - genquery "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" - obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" - "github.com/coze-dev/coze-loop/backend/pkg/errorx" - "github.com/coze-dev/coze-loop/backend/pkg/logs" - "gorm.io/gen/field" - "gorm.io/gorm" -) - -// 默认限制条数 -const ( - DefaultLimit = 20 - MaxLimit = 501 - DefaultOffset = 0 -) - -type ListTaskParam struct { - WorkspaceIDs []int64 - TaskFilters *filter.TaskFilterFields - ReqLimit int32 - ReqOffset int32 - OrderBy *common.OrderBy -} - -//go:generate mockgen -destination=mocks/task.go -package=mocks . ITaskDao -type ITaskDao interface { - GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTask, error) - CreateTask(ctx context.Context, po *model.ObservabilityTask) (int64, error) - UpdateTask(ctx context.Context, po *model.ObservabilityTask) error - DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error - ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) -} - -func NewTaskDaoImpl(db db.Provider) ITaskDao { - return &TaskDaoImpl{ - dbMgr: db, - } -} - -type TaskDaoImpl struct { - dbMgr db.Provider -} - -func (v *TaskDaoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTask, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask - qd := q.WithContext(ctx).Where(q.ID.Eq(id)) - if workspaceID != nil { - qd = qd.Where(q.WorkspaceID.Eq(*workspaceID)) - } - if userID != nil { - qd = qd.Where(q.CreatedBy.Eq(*userID)) - } - TaskPo, err := qd.First() - if err != nil { - if errors.Is(err, gorm.ErrRecordNotFound) { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Task not found")) - } else { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - } - return TaskPo, nil -} - -func (v *TaskDaoImpl) CreateTask(ctx context.Context, po *model.ObservabilityTask) (int64, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask - if err := q.WithContext(ctx).Create(po); err != nil { - if errors.Is(err, gorm.ErrDuplicatedKey) { - return 0, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("Task duplicate key")) - } else { - return 0, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - } else { - return po.ID, nil - } -} - -func (v *TaskDaoImpl) UpdateTask(ctx context.Context, po *model.ObservabilityTask) error { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask - if err := q.WithContext(ctx).Save(po); err != nil { - return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } else { - return nil - } -} - -func (v *TaskDaoImpl) DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTask - qd := q.WithContext(ctx).Where(q.ID.Eq(id)).Where(q.WorkspaceID.Eq(workspaceID)).Where(q.CreatedBy.Eq(userID)) - info, err := qd.Delete() - if err != nil { - return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - logs.CtxInfo(ctx, "%d rows deleted", info.RowsAffected) - return nil -} - -func (v *TaskDaoImpl) ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)) - qd := q.WithContext(ctx).ObservabilityTask - var total int64 - if len(param.WorkspaceIDs) != 0 { - qd = qd.Where(q.ObservabilityTask.WorkspaceID.In(param.WorkspaceIDs...)) - } - // 应用过滤条件 - qdf, err := v.applyTaskFilters(q, param.TaskFilters) - if err != nil { - return nil, 0, err - } - if qdf != nil { - qd = qd.Where(qdf) - } - // order by - qd = qd.Order(v.order(q, param.OrderBy.GetField(), param.OrderBy.GetIsAsc())) - // 计算分页参数 - limit, offset := calculatePagination(param.ReqLimit, param.ReqOffset) - results, err := qd.Limit(limit).Offset(offset).Find() - if err != nil { - return nil, total, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return results, total, nil -} - -// 处理任务过滤条件 -func (v *TaskDaoImpl) applyTaskFilters(q *query.Query, taskFilters *filter.TaskFilterFields) (field.Expr, error) { - var filterExpr field.Expr - if taskFilters == nil { - return nil, nil - } - for _, f := range taskFilters.FilterFields { - if f.FieldName == nil || f.QueryType == nil { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("field name or query type is nil")) - } - - switch *f.FieldName { - case filter.TaskFieldNameTaskName: - switch *f.QueryType { - case filter.QueryTypeEq: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg(("no value provided for query"))) - } - filterExpr = q.ObservabilityTask.Name.Eq(f.Values[0]) - case filter.QueryTypeMatch: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for query")) - } - filterExpr = q.ObservabilityTask.Name.Like(fmt.Sprintf("%%%s%%", f.Values[0])) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task name")) - } - case filter.TaskFieldNameTaskType: - switch *f.QueryType { - case filter.QueryTypeIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) - } - filterExpr = q.ObservabilityTask.TaskType.In(f.Values...) - case filter.QueryTypeNotIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) - } - filterExpr = q.ObservabilityTask.TaskType.NotIn(f.Values...) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task type")) - } - case filter.TaskFieldNameTaskStatus: - switch *f.QueryType { - case filter.QueryTypeIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) - } - filterExpr = q.ObservabilityTask.TaskStatus.In(f.Values...) - case filter.QueryTypeNotIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) - } - filterExpr = q.ObservabilityTask.TaskStatus.NotIn(f.Values...) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task status")) - } - case filter.TaskFieldNameCreatedBy: - switch *f.QueryType { - case filter.QueryTypeIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) - } - filterExpr = q.ObservabilityTask.CreatedBy.In(f.Values...) - case filter.QueryTypeNotIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) - } - filterExpr = q.ObservabilityTask.CreatedBy.NotIn(f.Values...) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for created_by")) - } - case filter.TaskFieldNameSampleRate: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for sample rate")) - } - //sampleRate, err := strconv.ParseFloat(f.Values[0], 64) - //if err != nil { - // return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid sample rate: %v", err.Error())) - //} - switch *f.QueryType { - case filter.QueryTypeGte: - //filterExpr = q.ObservabilityTask.Sampler.Gte(sampleRate) - //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') >= ?", sampleRate) - case filter.QueryTypeLte: - //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') <= ?", sampleRate) - case filter.QueryTypeEq: - //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') = ?", sampleRate) - case filter.QueryTypeNotEq: - //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') !=?", sampleRate) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for sample rate")) - } - case "task_id": - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for task id")) - } - var taskIDs []int64 - for _, value := range f.Values { - taskID, err := strconv.ParseInt(value, 10, 64) - if err != nil { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid task id: %v", err.Error())) - } - taskIDs = append(taskIDs, taskID) - } - - filterExpr = q.ObservabilityTask.ID.In(taskIDs...) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid filter field name: %s", *f.FieldName)) - } - } - - return filterExpr, nil -} - -// 计算分页参数 -func calculatePagination(reqLimit, reqOffset int32) (int, int) { - limit := DefaultLimit - if reqLimit > 0 && reqLimit < MaxLimit { - limit = int(reqLimit) - } - - offset := DefaultOffset - if reqOffset > 0 { - offset = int(reqOffset) - } - - return limit, offset -} - -func (d *TaskDaoImpl) order(q *query.Query, orderBy string, asc bool) field.Expr { - var orderExpr field.OrderExpr - switch orderBy { - case "created_at": - orderExpr = q.ObservabilityTask.CreatedAt - default: - orderExpr = q.ObservabilityTask.CreatedAt - } - if asc { - return orderExpr.Asc() - } - return orderExpr.Desc() -} diff --git a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task_run.go b/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task_run.go deleted file mode 100755 index 7b4592e19..000000000 --- a/backend/script/gorm_gen/modules/observability/infra/repo/mysql/task_run.go +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 - -package mysql - -import ( - "context" - "errors" - "strconv" - - "github.com/coze-dev/coze-loop/backend/infra/db" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" - "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" - "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" - genquery "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" - obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" - "github.com/coze-dev/coze-loop/backend/pkg/errorx" - "github.com/coze-dev/coze-loop/backend/pkg/logs" - "gorm.io/gen/field" - "gorm.io/gorm" -) - -type ListTaskRunParam struct { - WorkspaceIDs []int64 - TaskID *int64 - TaskRunFilters *filter.TaskFilterFields // 暂时复用TaskFilterFields,后续可扩展为TaskRunFilterFields - ReqLimit int32 - ReqOffset int32 - OrderBy *common.OrderBy -} - -//go:generate mockgen -destination=mocks/task_run.go -package=mocks . ITaskRunDao -type ITaskRunDao interface { - GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTaskRun, error) - CreateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) (int64, error) - UpdateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) error - DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error - ListTaskRuns(ctx context.Context, param ListTaskRunParam) ([]*model.ObservabilityTaskRun, int64, error) -} - -func NewTaskRunDaoImpl(db db.Provider) ITaskRunDao { - return &TaskRunDaoImpl{ - dbMgr: db, - } -} - -type TaskRunDaoImpl struct { - dbMgr db.Provider -} - -func (v *TaskRunDaoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*model.ObservabilityTaskRun, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - qd := q.WithContext(ctx).Where(q.ID.Eq(id)) - if workspaceID != nil { - qd = qd.Where(q.WorkspaceID.Eq(*workspaceID)) - } - if userID != nil { - // 注意:TaskRun模型中没有CreatedBy字段,此过滤条件暂时跳过 - // 如果需要按创建者过滤,需要通过关联Task表来实现 - } - taskRunPo, err := qd.First() - if err != nil { - if errors.Is(err, gorm.ErrRecordNotFound) { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found")) - } else { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - } - return taskRunPo, nil -} - -func (v *TaskRunDaoImpl) CreateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) (int64, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - if err := q.WithContext(ctx).Create(po); err != nil { - if errors.Is(err, gorm.ErrDuplicatedKey) { - return 0, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun duplicate key")) - } else { - return 0, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - } else { - return po.ID, nil - } -} - -func (v *TaskRunDaoImpl) UpdateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) error { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - if err := q.WithContext(ctx).Save(po); err != nil { - return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } else { - return nil - } -} - -func (v *TaskRunDaoImpl) DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - // 注意:TaskRun模型中没有CreatedBy字段,只能按ID和WorkspaceID过滤 - qd := q.WithContext(ctx).Where(q.ID.Eq(id)).Where(q.WorkspaceID.Eq(workspaceID)) - // userID参数暂时忽略,因为TaskRun模型中没有CreatedBy字段 - info, err := qd.Delete() - if err != nil { - return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - logs.CtxInfo(ctx, "%d rows deleted", info.RowsAffected) - return nil -} - -func (v *TaskRunDaoImpl) ListTaskRuns(ctx context.Context, param ListTaskRunParam) ([]*model.ObservabilityTaskRun, int64, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)) - qd := q.WithContext(ctx).ObservabilityTaskRun - var total int64 - - // 工作空间过滤 - if len(param.WorkspaceIDs) != 0 { - qd = qd.Where(q.ObservabilityTaskRun.WorkspaceID.In(param.WorkspaceIDs...)) - } - - // TaskID过滤 - if param.TaskID != nil { - qd = qd.Where(q.ObservabilityTaskRun.TaskID.Eq(*param.TaskID)) - } - - // 应用过滤条件 - qdf, err := v.applyTaskRunFilters(q, param.TaskRunFilters) - if err != nil { - return nil, 0, err - } - if qdf != nil { - qd = qd.Where(qdf) - } - - // 排序 - qd = qd.Order(v.order(q, param.OrderBy.GetField(), param.OrderBy.GetIsAsc())) - - // 计算总数 - total, err = qd.Count() - if err != nil { - return nil, 0, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - - // 计算分页参数 - limit, offset := calculatePagination(param.ReqLimit, param.ReqOffset) - results, err := qd.Limit(limit).Offset(offset).Find() - if err != nil { - return nil, total, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return results, total, nil -} - -// 处理TaskRun过滤条件 -func (v *TaskRunDaoImpl) applyTaskRunFilters(q *query.Query, taskRunFilters *filter.TaskFilterFields) (field.Expr, error) { - var filterExpr field.Expr - if taskRunFilters == nil { - return nil, nil - } - - for _, f := range taskRunFilters.FilterFields { - if f.FieldName == nil || f.QueryType == nil { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("field name or query type is nil")) - } - - switch *f.FieldName { - case "task_run_id": - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for task run id")) - } - var taskRunIDs []int64 - for _, value := range f.Values { - taskRunID, err := strconv.ParseInt(value, 10, 64) - if err != nil { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid task run id: %v", err.Error())) - } - taskRunIDs = append(taskRunIDs, taskRunID) - } - filterExpr = q.ObservabilityTaskRun.ID.In(taskRunIDs...) - case "task_id": - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for task id")) - } - var taskIDs []int64 - for _, value := range f.Values { - taskID, err := strconv.ParseInt(value, 10, 64) - if err != nil { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid task id: %v", err.Error())) - } - taskIDs = append(taskIDs, taskID) - } - filterExpr = q.ObservabilityTaskRun.TaskID.In(taskIDs...) - case "task_run_status": - switch *f.QueryType { - case filter.QueryTypeIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) - } - filterExpr = q.ObservabilityTaskRun.RunStatus.In(f.Values...) - case filter.QueryTypeNotIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) - } - filterExpr = q.ObservabilityTaskRun.RunStatus.NotIn(f.Values...) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task run status")) - } - case "created_by": - // TaskRun模型中没有CreatedBy字段,如果需要按创建者过滤,需要通过关联Task表来实现 - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("created_by filter not supported for TaskRun, use Task association instead")) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid filter field name: %s", *f.FieldName)) - } - } - - return filterExpr, nil -} - -func (d *TaskRunDaoImpl) order(q *query.Query, orderBy string, asc bool) field.Expr { - var orderExpr field.OrderExpr - switch orderBy { - case "created_at": - orderExpr = q.ObservabilityTaskRun.CreatedAt - case "run_start_at": - orderExpr = q.ObservabilityTaskRun.RunStartAt - case "run_end_at": - orderExpr = q.ObservabilityTaskRun.RunEndAt - case "updated_at": - orderExpr = q.ObservabilityTaskRun.UpdatedAt - default: - orderExpr = q.ObservabilityTaskRun.CreatedAt - } - if asc { - return orderExpr.Asc() - } - return orderExpr.Desc() -} \ No newline at end of file From bc9840bdc5e68d5c2e95f7503741ea417d389762 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 20:00:45 +0800 Subject: [PATCH 198/462] feat: [Coda] support multiple where conditions in applyTaskFilters (LogID: 2025091616133601009111020717128B4) Co-Authored-By: Coda --- .../observability/infra/repo/mysql/task.go | 270 +++++++++++------- 1 file changed, 166 insertions(+), 104 deletions(-) diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index 807d13b46..84f9ba162 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -146,117 +146,179 @@ func (v *TaskDaoImpl) ListTasks(ctx context.Context, param ListTaskParam) ([]*mo // 处理任务过滤条件 func (v *TaskDaoImpl) applyTaskFilters(q *query.Query, taskFilters *filter.TaskFilterFields) (field.Expr, error) { - var filterExpr field.Expr - if taskFilters == nil { + if taskFilters == nil || len(taskFilters.FilterFields) == 0 { return nil, nil } + + // 收集所有过滤条件 + var expressions []field.Expr + for _, f := range taskFilters.FilterFields { - if f.FieldName == nil || f.QueryType == nil { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("field name or query type is nil")) + expr, err := v.buildSingleFilterExpr(q, f) + if err != nil { + return nil, err } + if expr != nil { + expressions = append(expressions, expr) + } + } + + if len(expressions) == 0 { + return nil, nil + } + + // 根据 QueryAndOr 关系组合条件 + return v.combineExpressions(expressions, taskFilters.GetQueryAndOr()), nil +} + +// 构建单个过滤条件 +func (v *TaskDaoImpl) buildSingleFilterExpr(q *query.Query, f *filter.TaskFilterField) (field.Expr, error) { + if f.FieldName == nil || f.QueryType == nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("field name or query type is nil")) + } + + switch *f.FieldName { + case filter.TaskFieldNameTaskName: + return v.buildTaskNameFilter(q, f) + case filter.TaskFieldNameTaskType: + return v.buildTaskTypeFilter(q, f) + case filter.TaskFieldNameTaskStatus: + return v.buildTaskStatusFilter(q, f) + case filter.TaskFieldNameCreatedBy: + return v.buildCreatedByFilter(q, f) + case filter.TaskFieldNameSampleRate: + return v.buildSampleRateFilter(q, f) + case "task_id": + return v.buildTaskIDFilter(q, f) + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid filter field name: %s", *f.FieldName)) + } +} + +// 组合多个表达式 +func (v *TaskDaoImpl) combineExpressions(expressions []field.Expr, relation string) field.Expr { + if len(expressions) == 1 { + return expressions[0] + } + + if relation == filter.QueryRelationOr { + return field.Or(expressions...) + } + // 默认使用 AND 关系 + return field.And(expressions...) +} + +// 构建任务名称过滤条件 +func (v *TaskDaoImpl) buildTaskNameFilter(q *query.Query, f *filter.TaskFilterField) (field.Expr, error) { + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for task name query")) + } + + switch *f.QueryType { + case filter.QueryTypeEq: + return q.ObservabilityTask.Name.Eq(f.Values[0]), nil + case filter.QueryTypeMatch: + return q.ObservabilityTask.Name.Like(fmt.Sprintf("%%%s%%", f.Values[0])), nil + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task name")) + } +} + +// 构建任务类型过滤条件 +func (v *TaskDaoImpl) buildTaskTypeFilter(q *query.Query, f *filter.TaskFilterField) (field.Expr, error) { + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for task type query")) + } + + switch *f.QueryType { + case filter.QueryTypeIn: + return q.ObservabilityTask.TaskType.In(f.Values...), nil + case filter.QueryTypeNotIn: + return q.ObservabilityTask.TaskType.NotIn(f.Values...), nil + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task type")) + } +} + +// 构建任务状态过滤条件 +func (v *TaskDaoImpl) buildTaskStatusFilter(q *query.Query, f *filter.TaskFilterField) (field.Expr, error) { + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for task status query")) + } + + switch *f.QueryType { + case filter.QueryTypeIn: + return q.ObservabilityTask.TaskStatus.In(f.Values...), nil + case filter.QueryTypeNotIn: + return q.ObservabilityTask.TaskStatus.NotIn(f.Values...), nil + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task status")) + } +} + +// 构建创建者过滤条件 +func (v *TaskDaoImpl) buildCreatedByFilter(q *query.Query, f *filter.TaskFilterField) (field.Expr, error) { + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for created_by query")) + } + + switch *f.QueryType { + case filter.QueryTypeIn: + return q.ObservabilityTask.CreatedBy.In(f.Values...), nil + case filter.QueryTypeNotIn: + return q.ObservabilityTask.CreatedBy.NotIn(f.Values...), nil + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for created_by")) + } +} - switch *f.FieldName { - case filter.TaskFieldNameTaskName: - switch *f.QueryType { - case filter.QueryTypeEq: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg(("no value provided for query"))) - } - filterExpr = q.ObservabilityTask.Name.Eq(f.Values[0]) - case filter.QueryTypeMatch: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for query")) - } - filterExpr = q.ObservabilityTask.Name.Like(fmt.Sprintf("%%%s%%", f.Values[0])) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task name")) - } - case filter.TaskFieldNameTaskType: - switch *f.QueryType { - case filter.QueryTypeIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) - } - filterExpr = q.ObservabilityTask.TaskType.In(f.Values...) - case filter.QueryTypeNotIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) - } - filterExpr = q.ObservabilityTask.TaskType.NotIn(f.Values...) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task type")) - } - case filter.TaskFieldNameTaskStatus: - switch *f.QueryType { - case filter.QueryTypeIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) - } - filterExpr = q.ObservabilityTask.TaskStatus.In(f.Values...) - case filter.QueryTypeNotIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) - } - filterExpr = q.ObservabilityTask.TaskStatus.NotIn(f.Values...) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for task status")) - } - case filter.TaskFieldNameCreatedBy: - switch *f.QueryType { - case filter.QueryTypeIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for in query")) - } - filterExpr = q.ObservabilityTask.CreatedBy.In(f.Values...) - case filter.QueryTypeNotIn: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no values provided for not in query")) - } - filterExpr = q.ObservabilityTask.CreatedBy.NotIn(f.Values...) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for created_by")) - } - case filter.TaskFieldNameSampleRate: - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for sample rate")) - } - //sampleRate, err := strconv.ParseFloat(f.Values[0], 64) - //if err != nil { - // return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid sample rate: %v", err.Error())) - //} - switch *f.QueryType { - case filter.QueryTypeGte: - //filterExpr = q.ObservabilityTask.Sampler.Gte(sampleRate) - //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') >= ?", sampleRate) - case filter.QueryTypeLte: - //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') <= ?", sampleRate) - case filter.QueryTypeEq: - //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') = ?", sampleRate) - case filter.QueryTypeNotEq: - //db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') !=?", sampleRate) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for sample rate")) - } - case "task_id": - if len(f.Values) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for task id")) - } - var taskIDs []int64 - for _, value := range f.Values { - taskID, err := strconv.ParseInt(value, 10, 64) - if err != nil { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid task id: %v", err.Error())) - } - taskIDs = append(taskIDs, taskID) - } - - filterExpr = q.ObservabilityTask.ID.In(taskIDs...) - default: - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid filter field name: %s", *f.FieldName)) +// 构建采样率过滤条件 +func (v *TaskDaoImpl) buildSampleRateFilter(q *query.Query, f *filter.TaskFilterField) (field.Expr, error) { + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for sample rate")) + } + + // 暂时保留原有的注释逻辑,等待具体实现 + // sampleRate, err := strconv.ParseFloat(f.Values[0], 64) + // if err != nil { + // return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid sample rate: %v", err.Error())) + // } + + switch *f.QueryType { + case filter.QueryTypeGte: + // filterExpr = q.ObservabilityTask.Sampler.Gte(sampleRate) + // db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') >= ?", sampleRate) + return nil, nil + case filter.QueryTypeLte: + // db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') <= ?", sampleRate) + return nil, nil + case filter.QueryTypeEq: + // db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') = ?", sampleRate) + return nil, nil + case filter.QueryTypeNotEq: + // db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') != ?", sampleRate) + return nil, nil + default: + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for sample rate")) + } +} + +// 构建任务ID过滤条件 +func (v *TaskDaoImpl) buildTaskIDFilter(q *query.Query, f *filter.TaskFilterField) (field.Expr, error) { + if len(f.Values) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for task id")) + } + + var taskIDs []int64 + for _, value := range f.Values { + taskID, err := strconv.ParseInt(value, 10, 64) + if err != nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid task id: %v", err.Error())) } + taskIDs = append(taskIDs, taskID) } - return filterExpr, nil + return q.ObservabilityTask.ID.In(taskIDs...), nil } // 计算分页参数 @@ -350,4 +412,4 @@ func (v *TaskDaoImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin var botList []string return spaceList, botList, nil -} +} \ No newline at end of file From d345eef4e8536f8e0749d1a52764cdbd68e77d6a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 20:28:01 +0800 Subject: [PATCH 199/462] fix timestamp --- .../observability/domain/task/taskexe/tracehub/callback.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go index 1fe2f6b5b..cab25f95a 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go @@ -53,8 +53,8 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr []string{spanID}, traceID, workspaceIDStr, - startTime-time.Second.Milliseconds(), - startTime+time.Second.Milliseconds(), + startTime/1000-time.Second.Milliseconds(), + startTime/1000+time.Second.Milliseconds(), ) if err != nil { return err From 068d0e76d391f1d5b7fd629339ce94e046f1c8cf Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 21:31:05 +0800 Subject: [PATCH 200/462] feat:fix --- .../domain/task/taskexe/types.go | 7 ++++++ .../infra/repo/redis/convert/task.go | 22 +++---------------- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index af84c6660..a3517aa69 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -36,6 +36,13 @@ type Processor interface { Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 OnChangeProcessor(ctx context.Context, task *task.Task, taskOp TaskOp) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 Finish(ctx context.Context, config any, trigger *Trigger) error //Finish + + OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnCreateChangeProcessor 调用 evaluation 接口进行前期物料准备 + OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error //OnUpdateChangeProcessor 调用 evaluation 接口进行前期物料准备 + OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor 调用 evaluation 接口进行前期物料准备 + + OnCreateTaskRunProcessor(ctx context.Context, task *task.TaskRun) error //OnCreateTaskRunProcessor 调用 evaluation 接口进行前期物料准备 + OnFinishTaskRunProcessor(ctx context.Context, task *task.TaskRun) error //OnFinishTaskRunProcessor 调用 evaluation 接口进行前期物料准备 } type ProcessorUnion interface { diff --git a/backend/modules/observability/infra/repo/redis/convert/task.go b/backend/modules/observability/infra/repo/redis/convert/task.go index b1180fcc4..66bb3edb7 100644 --- a/backend/modules/observability/infra/repo/redis/convert/task.go +++ b/backend/modules/observability/infra/repo/redis/convert/task.go @@ -7,7 +7,6 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/json" - "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" "github.com/samber/lo" ) @@ -20,34 +19,19 @@ type TaskConverter struct{} func (TaskConverter) FromDO(qse *entity.ObservabilityTask) ([]byte, error) { bytes, err := json.Marshal(qse) if err != nil { - return nil, errorx.Wrapf(err, "TaskExpt json marshal failed") + return nil, errorx.Wrapf(err, "json marshal failed") } return bytes, nil } func (TaskConverter) ToDO(b []byte) (*entity.ObservabilityTask, error) { qse := &entity.ObservabilityTask{} - bytes := toBytes(b) if err := lo.TernaryF( - len(bytes) > 0, - func() error { return json.Unmarshal(bytes, qse) }, + len(b) > 0, + func() error { return json.Unmarshal(b, qse) }, func() error { return nil }, ); err != nil { return nil, errorx.Wrapf(err, "TaskExpt json unmarshal failed") } return qse, nil } - -// toBytes -// -//nolint:staticcheck,S1034 -func toBytes(v any) []byte { - switch v.(type) { - case string: - return conv.UnsafeStringToBytes(v.(string)) - case []byte: - return v.([]byte) - default: - return nil - } -} From 462d15ba659308eebb30a040918ac71bf522c994 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 21:35:06 +0800 Subject: [PATCH 201/462] add proc --- .../task/taskexe/processor/auto_evaluate.go | 17 +++++++++++++++++ .../task/taskexe/processor/data_reflow.go | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 88bb0972a..f49978abe 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -646,3 +646,20 @@ func GetContentInfo(ctx context.Context, contentType common.ContentType, value s } return content, nil } + +func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, task *task.Task) error { + return nil +} +func (p *AutoEvaluteProcessor) OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error { + return nil +} +func (p *AutoEvaluteProcessor) OnFinishChangeProcessor(ctx context.Context, task *task.Task) error { + return nil +} + +func (p *AutoEvaluteProcessor) OnCreateTaskRunProcessor(ctx context.Context, task *task.TaskRun) error { + return nil +} +func (p *AutoEvaluteProcessor) OnFinishTaskRunProcessor(ctx context.Context, task *task.TaskRun) error { + return nil +} diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index b5d501875..1bd68d4dd 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -180,3 +180,20 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask } return nil } + +func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, task *task.Task) error { + return nil +} +func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error { + return nil +} +func (p *DataReflowProcessor) OnFinishChangeProcessor(ctx context.Context, task *task.Task) error { + return nil +} + +func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, task *task.TaskRun) error { + return nil +} +func (p *DataReflowProcessor) OnFinishTaskRunProcessor(ctx context.Context, task *task.TaskRun) error { + return nil +} From 517fddfac24faea864d764ff34974fc067bde3a8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 16 Sep 2025 21:42:40 +0800 Subject: [PATCH 202/462] fix timestamp --- .../observability/domain/task/taskexe/tracehub/callback.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go index cab25f95a..9bcb2c438 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go @@ -132,8 +132,8 @@ func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResu []string{spanID}, "", workspaceIDStr, - startTime-time.Second.Milliseconds(), - startTime+time.Second.Milliseconds(), + startTime/1000-time.Second.Milliseconds(), + startTime/1000+time.Second.Milliseconds(), ) span := spans[0] annotation := &loop_span.Annotation{ From dd26b811e2ade8e22b06b22275fed04a823a1976 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 11:00:11 +0800 Subject: [PATCH 203/462] fix:create --- .../domain/task/service/task_service.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 2afbb0f10..c055ca554 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -102,6 +102,19 @@ type TaskServiceImpl struct { } func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) { + // 校验task name是否存在 + checkResp, err := t.CheckTaskName(ctx, &CheckTaskNameReq{ + WorkspaceID: req.Task.GetWorkspaceID(), + Name: req.Task.GetName(), + }) + if err != nil { + logs.CtxError(ctx, "CheckTaskName err:%v", err) + return nil, err + } + if !*checkResp.Pass { + logs.CtxError(ctx, "task name exist") + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } proc, err := processor.NewProcessor(ctx, req.Task.TaskType) if err != nil { logs.CtxError(ctx, "NewProcessor err:%v", err) From 0af0047bd904ee3343898acd7bb77a5236ff4634 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 11:04:16 +0800 Subject: [PATCH 204/462] fix panic --- .../observability/domain/task/service/task_service.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index c055ca554..0c59f22b0 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -305,12 +305,13 @@ func (t *TaskServiceImpl) CheckTaskName(ctx context.Context, req *CheckTaskNameR logs.CtxError(ctx, "ListTasks err:%v", err) return nil, err } + var pass bool if len(taskPOs) > 0 { - resp.Pass = gptr.Of(false) + pass = false } else { - resp.Pass = gptr.Of(true) + pass = true } - return resp, nil + return &CheckTaskNameResp{Pass: gptr.Of(pass)}, nil } // shouldTriggerBackfill 判断是否需要发送历史回溯MQ From db08e829e598b1522ba444329f77099ca3f87a22 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 11:10:39 +0800 Subject: [PATCH 205/462] add error --- .../modules/observability/domain/task/service/task_service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 0c59f22b0..2db566f48 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -113,7 +113,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r } if !*checkResp.Pass { logs.CtxError(ctx, "task name exist") - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode) + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("task name exist")) } proc, err := processor.NewProcessor(ctx, req.Task.TaskType) if err != nil { From 70df41f2b8e0098cca762a0b70970e3dbf7a04d7 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 14:00:59 +0800 Subject: [PATCH 206/462] =?UTF-8?q?feat:=20[Coda]=20=E8=A1=A5=E5=85=85Task?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E6=96=B9=E6=B3=95=E5=AE=9E=E7=8E=B0(IncrTask?= =?UTF-8?q?Count/DecrTaskCount/IncrTaskRunCount/DecrTaskRunCount)=20(LogID?= =?UTF-8?q?:=2020250917135105010091110207499FD4C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Coda --- .../infra/repo/redis/dao/task.go | 132 +++++++++++++++++- .../modules/observability/infra/repo/task.go | 57 +++++--- .../observability/infra/repo/task_run.go | 1 - 3 files changed, 164 insertions(+), 26 deletions(-) diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index dbf168cda..f76695042 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -42,11 +42,15 @@ type ITaskDAO interface { GetTaskCount(ctx context.Context, taskID int64) (int64, error) SetTaskCount(ctx context.Context, taskID int64, count int64, ttl time.Duration) error DeleteTaskCount(ctx context.Context, taskID int64) error + IncrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) + DecrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) // TaskRunCount相关 GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error + IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl time.Duration) (int64, error) + DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl time.Duration) (int64, error) GetObjListWithTask(ctx context.Context) ([]string, []string, error) @@ -294,8 +298,8 @@ func (p *TaskDAOImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, er } // SetTaskCount 设置任务计数缓存 -func (p *TaskDAOImpl) SetTaskCount(ctx context.Context, workspaceID int64, count int64, ttl time.Duration) error { - key := p.makeTaskCountCacheKey(workspaceID) +func (p *TaskDAOImpl) SetTaskCount(ctx context.Context, taskID int64, count int64, ttl time.Duration) error { + key := p.makeTaskCountCacheKey(taskID) if err := p.cmdable.Set(ctx, key, count, ttl).Err(); err != nil { logs.CtxError(ctx, "redis set task count cache failed", "key", key, "err", err) return errorx.Wrapf(err, "redis set task count key: %v", key) @@ -304,8 +308,8 @@ func (p *TaskDAOImpl) SetTaskCount(ctx context.Context, workspaceID int64, count } // DeleteTaskCount 删除任务计数缓存 -func (p *TaskDAOImpl) DeleteTaskCount(ctx context.Context, workspaceID int64) error { - key := p.makeTaskCountCacheKey(workspaceID) +func (p *TaskDAOImpl) DeleteTaskCount(ctx context.Context, taskID int64) error { + key := p.makeTaskCountCacheKey(taskID) if err := p.cmdable.Del(ctx, key).Err(); err != nil { logs.CtxError(ctx, "redis delete task count cache failed", "key", key, "err", err) return errorx.Wrapf(err, "redis delete task count key: %v", key) @@ -553,3 +557,123 @@ func (p *TaskDAOImpl) DeleteAppListWithTask(ctx context.Context) error { } return nil } + +// IncrTaskCount 原子增加任务计数 +func (p *TaskDAOImpl) IncrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) { + key := p.makeTaskCountCacheKey(taskID) + result, err := p.cmdable.Incr(ctx, key).Result() + if err != nil { + logs.CtxError(ctx, "redis incr task count failed", "key", key, "err", err) + return 0, errorx.Wrapf(err, "redis incr task count key: %v", key) + } + + // 设置TTL + if err := p.cmdable.Expire(ctx, key, ttl).Err(); err != nil { + logs.CtxWarn(ctx, "failed to set TTL for task count", "key", key, "err", err) + } + + return result, nil +} + +// DecrTaskCount 原子减少任务计数,确保不会变为负数 +func (p *TaskDAOImpl) DecrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) { + key := p.makeTaskCountCacheKey(taskID) + + // 先获取当前值 + current, err := p.cmdable.Get(ctx, key).Int64() + if err != nil { + if redis.IsNilError(err) { + // 如果key不存在,返回0 + return 0, nil + } + logs.CtxError(ctx, "redis get task count failed before decr", "key", key, "err", err) + return 0, errorx.Wrapf(err, "redis get task count key: %v", key) + } + + // 如果当前值已经是0或负数,不再减少 + if current <= 0 { + return 0, nil + } + + // 执行减操作 + result, err := p.cmdable.Decr(ctx, key).Result() + if err != nil { + logs.CtxError(ctx, "redis decr task count failed", "key", key, "err", err) + return 0, errorx.Wrapf(err, "redis decr task count key: %v", key) + } + + // 如果减少后变为负数,重置为0 + if result < 0 { + if err := p.cmdable.Set(ctx, key, 0, ttl).Err(); err != nil { + logs.CtxError(ctx, "failed to reset negative task count", "key", key, "err", err) + } + return 0, nil + } + + // 设置TTL + if err := p.cmdable.Expire(ctx, key, ttl).Err(); err != nil { + logs.CtxWarn(ctx, "failed to set TTL for task count", "key", key, "err", err) + } + + return result, nil +} + +// IncrTaskRunCount 原子增加任务运行计数 +func (p *TaskDAOImpl) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl time.Duration) (int64, error) { + key := p.makeTaskRunCountCacheKey(taskID, taskRunID) + result, err := p.cmdable.Incr(ctx, key).Result() + if err != nil { + logs.CtxError(ctx, "redis incr task run count failed", "key", key, "err", err) + return 0, errorx.Wrapf(err, "redis incr task run count key: %v", key) + } + + // 设置TTL + if err := p.cmdable.Expire(ctx, key, ttl).Err(); err != nil { + logs.CtxWarn(ctx, "failed to set TTL for task run count", "key", key, "err", err) + } + + return result, nil +} + +// DecrTaskRunCount 原子减少任务运行计数,确保不会变为负数 +func (p *TaskDAOImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl time.Duration) (int64, error) { + key := p.makeTaskRunCountCacheKey(taskID, taskRunID) + + // 先获取当前值 + current, err := p.cmdable.Get(ctx, key).Int64() + if err != nil { + if redis.IsNilError(err) { + // 如果key不存在,返回0 + return 0, nil + } + logs.CtxError(ctx, "redis get task run count failed before decr", "key", key, "err", err) + return 0, errorx.Wrapf(err, "redis get task run count key: %v", key) + } + + // 如果当前值已经是0或负数,不再减少 + if current <= 0 { + return 0, nil + } + + // 执行减操作 + result, err := p.cmdable.Decr(ctx, key).Result() + if err != nil { + logs.CtxError(ctx, "redis decr task run count failed", "key", key, "err", err) + return 0, errorx.Wrapf(err, "redis decr task run count key: %v", key) + } + + // 如果减少后变为负数,重置为0 + if result < 0 { + if err := p.cmdable.Set(ctx, key, 0, ttl).Err(); err != nil { + logs.CtxError(ctx, "failed to reset negative task run count", "key", key, "err", err) + } + return 0, nil + } + + // 设置TTL + if err := p.cmdable.Expire(ctx, key, ttl).Err(); err != nil { + logs.CtxWarn(ctx, "failed to set TTL for task run count", "key", key, "err", err) + } + + return result, nil +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 459902f82..25edba367 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -39,6 +39,12 @@ type TaskRepoImpl struct { const ( TaskDetailTTL = 30 * time.Minute // 单个任务缓存30分钟 NonFinalTaskListTTL = 1 * time.Minute // 非最终状态任务缓存1分钟 + TaskCountTTL = 10 * time.Minute // 任务计数缓存10分钟 +) + +// 任务运行计数TTL常量 +const ( + TaskRunCountTTL = 10 * time.Minute // 任务运行计数缓存10分钟 ) func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityTask, error) { @@ -71,9 +77,8 @@ func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64 ReqLimit: 1000, ReqOffset: 0, }) - for _, tr := range TaskRunPo { - taskDO.TaskRuns = append(taskDO.TaskRuns, convertor.TaskRunPO2DO(tr)) - } + + taskDO.TaskRuns = convertor.TaskRunsPO2DO(TaskRunPo) if err != nil { return nil, err } @@ -121,16 +126,10 @@ func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityT if err = v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { logs.Error("failed to set task cache after create", "id", createdID, "err", err) } - // 更新非最终状态任务列表缓存 - currentList, err := v.TaskRedisDao.GetNonFinalTaskList(context.Background()) - if err != nil { - logs.Error("failed to get non final task list cache", "id", createdID, "err", err) - } else { - updatedList := append(currentList, do) - if err := v.TaskRedisDao.SetNonFinalTaskList(context.Background(), updatedList, NonFinalTaskListTTL); err != nil { - logs.Error("failed to update non final task list cache after create", "id", createdID, "err", err) - } + if err = v.TaskRedisDao.AddNonFinalTask(ctx, do); err != nil { + logs.Error("failed to set non final task cache after create", "id", createdID, "err", err) + return } }() @@ -158,10 +157,8 @@ func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityT // 更新单个任务缓存 if err = v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { logs.Error("failed to update task cache", "id", do.ID, "err", err) + return } - - // 清理相关列表缓存 - v.clearListCaches(context.Background(), do.WorkspaceID) }() return nil @@ -285,7 +282,6 @@ func (v *TaskRepoImpl) GetObjListWithTask(ctx context.Context) ([]string, []stri } func (v *TaskRepoImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, error) { - // 先查 Redis 缓存 count, err := v.TaskRedisDao.GetTaskCount(ctx, taskID) if err != nil { logs.CtxWarn(ctx, "failed to get task count from redis cache", "taskID", taskID, "err", err) @@ -295,7 +291,6 @@ func (v *TaskRepoImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, e return count, nil } func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { - // 先查 Redis 缓存 count, err := v.TaskRedisDao.GetTaskRunCount(ctx, taskID, taskRunID) if err != nil { logs.CtxWarn(ctx, "failed to get task run count from redis cache", "taskID", taskID, "err", err) @@ -306,17 +301,37 @@ func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID in } func (v *TaskRepoImpl) IncrTaskCount(ctx context.Context, taskID int64) error { + _, err := v.TaskRedisDao.IncrTaskCount(ctx, taskID, TaskCountTTL) + if err != nil { + logs.CtxError(ctx, "failed to increment task count", "taskID", taskID, "err", err) + return err + } return nil } -func (v *TaskRepoImpl) DecrTaskCount(ctx context.Context, taskID int64) error { +func (v *TaskRepoImpl) DecrTaskCount(ctx context.Context, taskID int64) error { + _, err := v.TaskRedisDao.DecrTaskCount(ctx, taskID, TaskCountTTL) + if err != nil { + logs.CtxError(ctx, "failed to decrement task count", "taskID", taskID, "err", err) + return err + } return nil } -func (v *TaskRepoImpl) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { +func (v *TaskRepoImpl) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { + _, err := v.TaskRedisDao.IncrTaskRunCount(ctx, taskID, taskRunID, TaskRunCountTTL) + if err != nil { + logs.CtxError(ctx, "failed to increment task run count", "taskID", taskID, "taskRunID", taskRunID, "err", err) + return err + } return nil } -func (v *TaskRepoImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { +func (v *TaskRepoImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { + _, err := v.TaskRedisDao.DecrTaskRunCount(ctx, taskID, taskRunID, TaskRunCountTTL) + if err != nil { + logs.CtxError(ctx, "failed to decrement task run count", "taskID", taskID, "taskRunID", taskRunID, "err", err) + return err + } return nil -} +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/task_run.go b/backend/modules/observability/infra/repo/task_run.go index faaf5b2c5..b740bd472 100755 --- a/backend/modules/observability/infra/repo/task_run.go +++ b/backend/modules/observability/infra/repo/task_run.go @@ -36,7 +36,6 @@ const ( TaskRunDetailTTL = 15 * time.Minute // TaskRun缓存15分钟 NonFinalTaskRunListTTL = 30 * time.Second // 非终态TaskRun缓存30秒 TaskRunListByTaskTTL = 5 * time.Minute // 按Task分组的TaskRun列表缓存5分钟 - TaskRunCountTTL = 10 * time.Minute // TaskRun计数缓存10分钟 ObjListWithTaskRunTTL = 15 * time.Minute // 对象列表缓存15分钟 ) From f5b400bb347d9cf6273ae51803a34c0466a838f1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 14:27:34 +0800 Subject: [PATCH 207/462] =?UTF-8?q?feat:=20[Coda]=20=E5=9C=A8TraceHub?= =?UTF-8?q?=E4=B8=AD=E6=B7=BB=E5=8A=A0TaskRunCount=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=20(LogID:=2020250917135105?= =?UTF-8?q?010091110207499FD4C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Coda --- .../observability/application/wire_gen.go | 2 +- .../task/taskexe/tracehub/scheduled_task.go | 107 ++++++++++++++++++ .../domain/task/taskexe/tracehub/trace_hub.go | 5 +- 3 files changed, 112 insertions(+), 2 deletions(-) mode change 100644 => 100755 backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 3f1a644d5..bf1e66076 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -232,7 +232,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto iTenantProvider := tenant.NewTenantProvider(iTraceConfig) iFileProvider := file.NewFileRPCProvider(fileClient) traceFilterProcessorBuilder := NewTraceProcessorBuilder(iTraceConfig, iFileProvider, benefit2) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTaskRunRepo, datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder) if err != nil { return nil, err } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go old mode 100644 new mode 100755 index a2ea6c37f..7f0309184 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -5,10 +5,13 @@ package tracehub import ( "context" + "encoding/json" + "fmt" "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -98,4 +101,108 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } + + // TaskRunCount 同步任务 + h.syncTaskRunCounts(ctx, taskPOs) +} + +// syncTaskRunCounts 同步TaskRunCount到数据库 +func (h *TraceHubServiceImpl) syncTaskRunCounts(ctx context.Context, taskPOs []*entity.ObservabilityTask) { + logs.CtxInfo(ctx, "开始同步TaskRunCount到数据库") + + for _, taskPO := range taskPOs { + h.processTaskRuns(ctx, taskPO) + } + + logs.CtxInfo(ctx, "TaskRunCount同步完成") +} + +// processTaskRuns 处理单个任务的所有TaskRun +func (h *TraceHubServiceImpl) processTaskRuns(ctx context.Context, task *entity.ObservabilityTask) { + if len(task.TaskRuns) == 0 { + logs.CtxDebug(ctx, "任务无TaskRuns,跳过, taskID=%d", task.ID) + return + } + + logs.CtxDebug(ctx, "处理任务TaskRuns, taskID=%d, taskRunCount=%d", task.ID, len(task.TaskRuns)) + + for _, taskRun := range task.TaskRuns { + // 只处理非终态的TaskRun + if h.isTaskRunFinal(taskRun.RunStatus) { + logs.CtxDebug(ctx, "TaskRun已为终态,跳过, taskRunID=%d, status=%s", taskRun.ID, taskRun.RunStatus) + continue + } + + h.updateTaskRunWithCount(ctx, task.ID, taskRun) + } +} + +// updateTaskRunWithCount 更新单个TaskRun的RunDetail +func (h *TraceHubServiceImpl) updateTaskRunWithCount(ctx context.Context, taskID int64, taskRun *entity.TaskRun) { + // 从Redis获取TaskRunCount + count, err := h.taskRepo.GetTaskRunCount(ctx, taskID, taskRun.ID) + if err != nil { + logs.CtxError(ctx, "获取TaskRunCount失败, taskID=%d, taskRunID=%d, err=%v", taskID, taskRun.ID, err) + return + } + + // 构造RunDetail + runDetail := h.buildRunDetail(count, taskRun) + + // 更新TaskRun的RunDetail + taskRun.RunDetail = &runDetail + if err := h.taskRunRepo.UpdateTaskRun(ctx, taskRun); err != nil { + logs.CtxError(ctx, "更新TaskRun失败, taskRunID=%d, err=%v", taskRun.ID, err) + return + } + + logs.CtxInfo(ctx, "成功更新TaskRun, taskRunID=%d, taskID=%d, count=%d", taskRun.ID, taskID, count) +} + +// buildRunDetail 构造RunDetail JSON字符串 +func (h *TraceHubServiceImpl) buildRunDetail(count int64, taskRun *entity.TaskRun) string { + detail := map[string]interface{}{ + "task_run_count": count, + "updated_at": time.Now().Format(time.RFC3339), + "status": taskRun.RunStatus, + } + + // 如果已有RunDetail,尝试合并现有数据 + if taskRun.RunDetail != nil && *taskRun.RunDetail != "" { + var existing map[string]interface{} + if err := json.Unmarshal([]byte(*taskRun.RunDetail), &existing); err == nil { + // 保留现有字段,但覆盖关键字段 + for k, v := range existing { + if k != "task_run_count" && k != "updated_at" { + detail[k] = v + } + } + } + } + + jsonData, err := json.Marshal(detail) + if err != nil { + // 如果JSON序列化失败,返回简单格式 + logs.CtxWarn(context.Background(), "JSON序列化失败,使用简单格式, err=%v", err) + return fmt.Sprintf(`{"task_run_count":%d,"updated_at":"%s"}`, count, time.Now().Format(time.RFC3339)) + } + + return string(jsonData) +} + +// isTaskRunFinal 判断TaskRun是否为终态 +func (h *TraceHubServiceImpl) isTaskRunFinal(status string) bool { + finalStatuses := []string{ + "done", + "failed", + "canceled", + } + + for _, finalStatus := range finalStatuses { + if status == finalStatus { + return true + } + } + + return false } \ No newline at end of file diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 385889e0a..27f291c80 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -37,6 +37,7 @@ type ITraceHubService interface { func NewTraceHubImpl( tRepo repo.ITaskRepo, + tRunRepo repo.ITaskRunRepo, datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, @@ -48,6 +49,7 @@ func NewTraceHubImpl( ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, + taskRunRepo: tRunRepo, ticker: ticker, stopChan: make(chan struct{}), traceRepo: traceRepo, @@ -65,6 +67,7 @@ type TraceHubServiceImpl struct { ticker *time.Ticker stopChan chan struct{} taskRepo repo.ITaskRepo + taskRunRepo repo.ITaskRunRepo traceRepo trace_repo.ITraceRepo tenantProvider tenant.ITenantProvider @@ -295,4 +298,4 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S func (h *TraceHubServiceImpl) Close() { close(h.stopChan) -} +} \ No newline at end of file From 0a6bb27d4e651f4ed63a511988ed520f9129b771 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 14:45:45 +0800 Subject: [PATCH 208/462] =?UTF-8?q?feat:=20[Coda]=20=E8=B0=83=E6=95=B4Task?= =?UTF-8?q?RunCount=E5=90=8C=E6=AD=A5=E9=80=BB=E8=BE=91=EF=BC=8C=E5=85=A8?= =?UTF-8?q?=E9=87=8F=E6=89=AB=E6=8F=8FRedis=E6=95=B0=E6=8D=AE=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E6=9B=B4=E6=96=B0taskrun=E8=A1=A8=20(LogID:=202025091?= =?UTF-8?q?7135105010091110207499FD4C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Coda --- backend/infra/redis/commands.go | 3 +- backend/infra/redis/redis.go | 6 +- .../application/convertor/task/task_run.go | 55 ++++ .../observability/domain/task/repo/task.go | 11 +- .../task/taskexe/processor/data_reflow.go | 34 +- .../task/taskexe/tracehub/scheduled_task.go | 301 ++++++++++++++---- .../infra/repo/mysql/convertor/task.go | 11 + .../loop/observability/domain/task.thrift | 6 +- 8 files changed, 357 insertions(+), 70 deletions(-) diff --git a/backend/infra/redis/commands.go b/backend/infra/redis/commands.go index 2bbfec53d..e4cb5ceac 100644 --- a/backend/infra/redis/commands.go +++ b/backend/infra/redis/commands.go @@ -26,6 +26,7 @@ type SimpleCmdable interface { Eval(ctx context.Context, script string, keys []string, args ...any) *redis.Cmd Expire(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd Exists(ctx context.Context, keys ...string) *redis.IntCmd + Keys(ctx context.Context, pattern string) *redis.StringSliceCmd } // StringCmdable copy methods we need in [redis.StringCmdable] @@ -70,4 +71,4 @@ type Pipeliner interface { Len() int Exec(ctx context.Context) ([]redis.Cmder, error) Discard() -} +} \ No newline at end of file diff --git a/backend/infra/redis/redis.go b/backend/infra/redis/redis.go index 9dbf8ee41..f81f7f77d 100644 --- a/backend/infra/redis/redis.go +++ b/backend/infra/redis/redis.go @@ -146,7 +146,11 @@ func (p *provider) Expire(ctx context.Context, key string, expiration time.Durat return p.cli.Expire(ctx, key, expiration) } +func (p *provider) Keys(ctx context.Context, pattern string) *redis.StringSliceCmd { + return p.cli.Keys(ctx, pattern) +} + func (p *provider) Pipeline() Pipeliner { pipe := p.cli.Pipeline() return pipe -} +} \ No newline at end of file diff --git a/backend/modules/observability/application/convertor/task/task_run.go b/backend/modules/observability/application/convertor/task/task_run.go index faf1f358e..e58128dda 100644 --- a/backend/modules/observability/application/convertor/task/task_run.go +++ b/backend/modules/observability/application/convertor/task/task_run.go @@ -5,6 +5,7 @@ package task import ( "context" + "time" "github.com/bytedance/gg/gptr" "github.com/bytedance/sonic" @@ -45,6 +46,60 @@ func TaskRunPO2DTO(ctx context.Context, v *entity.TaskRun, userMap map[string]*e } return taskRunInfo } +func TaskRunDO2PO(ctx context.Context, v *task.TaskRun, userMap map[string]*entity_common.UserInfo) *entity.TaskRun { + if v == nil { + return nil + } + taskRunPO := &entity.TaskRun{ + ID: v.ID, + WorkspaceID: v.WorkspaceID, + TaskID: v.TaskID, + TaskType: v.TaskType, + RunStatus: v.RunStatus, + RunDetail: RunDetailDTO2PO(ctx, v.RunDetail), + BackfillDetail: BackfillRunDetailDTO2PO(ctx, v.BackfillRunDetail), + RunStartAt: time.UnixMilli(v.RunStartAt), + RunEndAt: time.UnixMilli(v.RunEndAt), + RunConfig: TaskRunConfigDTO2PO(ctx, v.TaskRunConfig), + } + return taskRunPO +} + +func RunDetailDTO2PO(ctx context.Context, v *task.RunDetail) *string { + if v == nil { + return nil + } + runDetailJSON, err := sonic.MarshalString(v) + if err != nil { + logs.CtxError(ctx, "RunDetailDTO2PO sonic.MarshalString err:%v", err) + return nil + } + return gptr.Of(runDetailJSON) +} + +func BackfillRunDetailDTO2PO(ctx context.Context, v *task.BackfillDetail) *string { + if v == nil { + return nil + } + backfillDetailJSON, err := sonic.MarshalString(v) + if err != nil { + logs.CtxError(ctx, "BackfillRunDetailDTO2PO sonic.MarshalString err:%v", err) + return nil + } + return gptr.Of(backfillDetailJSON) +} + +func TaskRunConfigDTO2PO(ctx context.Context, v *task.TaskRunConfig) *string { + if v == nil { + return nil + } + taskRunConfigJSON, err := sonic.MarshalString(v) + if err != nil { + logs.CtxError(ctx, "TaskRunConfigDTO2PO sonic.MarshalString err:%v", err) + return nil + } + return gptr.Of(taskRunConfigJSON) +} // RunDetailPO2DTO 将JSON字符串转换为RunDetail结构体 func RunDetailPO2DTO(ctx context.Context, runDetail *string) *task.RunDetail { diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index 39e23d786..ed82dce23 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -19,6 +19,13 @@ type ITaskRepo interface { CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error + // task run + GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.TaskRun, error) + ListTaskRuns(ctx context.Context, taskID int64, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) + UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error + CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) + UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error + // task count GetTaskCount(ctx context.Context, taskID int64) (int64, error) IncrTaskCount(ctx context.Context, taskID int64) error @@ -28,9 +35,9 @@ type ITaskRepo interface { GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error - + // ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) GetObjListWithTask(ctx context.Context) ([]string, []string) ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask -} +} \ No newline at end of file diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 1bd68d4dd..031e8dc5c 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -56,6 +56,15 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t } taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) + taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) + taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + + if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount > trigger.Task.GetRule().GetSampler().GetCycleCount()) || taskCount > trigger.Task.GetRule().GetSampler().GetSampleSize() { + logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) + p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) + p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + return nil + } ctx = session.WithCtxUser(ctx, &session.User{ID: *trigger.Task.BaseInfo.CreatedBy.UserID}) workspaceID := trigger.Task.GetWorkspaceID() sessionInfo := getSession(ctx, trigger.Task) @@ -75,8 +84,12 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t )) _, _, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, taskRun.TaskRunConfig.DataReflowRunConfig.DatasetID, category, successItems) if err != nil { + logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor Invoke, AddDatasetItems err, taskID:%d, err:%v", *trigger.Task.ID, err) + p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) return err } + return nil } @@ -182,18 +195,37 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask } func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, task *task.Task) error { + // 1、创建/更新数据集 + // 2、更新任务配置 + // 3、创建 taskrun:历史回溯生成一个taskRun,新数据生成一个taskRun + // 4、更新任务配置 return nil } func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error { + // return nil } func (p *DataReflowProcessor) OnFinishChangeProcessor(ctx context.Context, task *task.Task) error { + // 更新任务配置 + // 更新TaskRun return nil } func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, task *task.TaskRun) error { + // 创建taskRun + logs.CtxInfo(ctx, "[auto_task] OnCreateTaskRunProcessor, taskID:%d, taskRun:%+v", task.GetTaskID(), task) + return nil } -func (p *DataReflowProcessor) OnFinishTaskRunProcessor(ctx context.Context, task *task.TaskRun) error { +func (p *DataReflowProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task.TaskRun) error { + taskRunDo := tconv.TaskRunDO2PO(ctx, taskRun, nil) + // 设置taskRun状态为已完成 + taskRunDo.RunStatus = task.RunStatusDone + // 更新taskRun + err := p.taskRepo.UpdateTaskRun(ctx, taskRunDo) + if err != nil { + logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.GetID(), err) + return err + } return nil } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 7f0309184..1daf38185 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -7,15 +7,36 @@ import ( "context" "encoding/json" "fmt" + "strconv" + "strings" "time" + "github.com/coze-dev/coze-loop/backend/infra/redis" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) +// TaskRunCountInfo TaskRunCount信息结构 +type TaskRunCountInfo struct { + TaskID int64 + TaskRunID int64 + Count int64 + KeyType string // "task" 或 "taskrun" +} + +// SyncMetrics 同步统计指标 +type SyncMetrics struct { + TotalKeys int64 + SuccessCount int64 + FailureCount int64 + SkippedCount int64 + ProcessingTime time.Duration +} + // startScheduledTask 启动定时任务goroutine func (h *TraceHubServiceImpl) startScheduledTask() { go func() { @@ -50,7 +71,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) for _, taskPO := range taskPOs { tasks = append(tasks, tconv.TaskPO2DTO(ctx, taskPO, nil)) - + // 计算 taskRunstat:只有当所有 run 都为 done 状态时才为 true allRunsDone := true if len(taskPO.TaskRuns) == 0 { @@ -65,7 +86,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } - + taskRunstat[taskPO.ID] = allRunsDone } logs.CtxInfo(ctx, "taskPOs:%v", taskPOs) @@ -101,108 +122,262 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } - + // TaskRunCount 同步任务 h.syncTaskRunCounts(ctx, taskPOs) } -// syncTaskRunCounts 同步TaskRunCount到数据库 +// syncTaskRunCounts 全量同步TaskRunCount到数据库 func (h *TraceHubServiceImpl) syncTaskRunCounts(ctx context.Context, taskPOs []*entity.ObservabilityTask) { - logs.CtxInfo(ctx, "开始同步TaskRunCount到数据库") - - for _, taskPO := range taskPOs { - h.processTaskRuns(ctx, taskPO) + startTime := time.Now() + logs.CtxInfo(ctx, "开始全量同步TaskRunCount到数据库") + + metrics := &SyncMetrics{} + + // 1. 获取Redis中所有TaskRunCount键 + keys, err := h.getAllTaskRunCountKeys(ctx) + if err != nil { + logs.CtxError(ctx, "获取TaskRunCount键失败", "err", err) + return } - - logs.CtxInfo(ctx, "TaskRunCount同步完成") + + metrics.TotalKeys = int64(len(keys)) + logs.CtxInfo(ctx, "发现TaskRunCount键数量", "count", len(keys)) + + // 2. 批量处理键 + batchSize := 100 // 每批处理100个键 + for i := 0; i < len(keys); i += batchSize { + end := i + batchSize + if end > len(keys) { + end = len(keys) + } + + batch := keys[i:end] + batchMetrics := h.processBatchTaskRunCounts(ctx, batch) + + // 累计统计 + metrics.SuccessCount += batchMetrics.SuccessCount + metrics.FailureCount += batchMetrics.FailureCount + metrics.SkippedCount += batchMetrics.SkippedCount + } + + metrics.ProcessingTime = time.Since(startTime) + h.recordSyncMetrics(ctx, metrics) + + logs.CtxInfo(ctx, "TaskRunCount全量同步完成") } -// processTaskRuns 处理单个任务的所有TaskRun -func (h *TraceHubServiceImpl) processTaskRuns(ctx context.Context, task *entity.ObservabilityTask) { - if len(task.TaskRuns) == 0 { - logs.CtxDebug(ctx, "任务无TaskRuns,跳过, taskID=%d", task.ID) - return +// getAllTaskRunCountKeys 获取Redis中所有TaskRunCount键 +func (h *TraceHubServiceImpl) getAllTaskRunCountKeys(ctx context.Context) ([]string, error) { + // 扫描两种键格式 + patterns := []string{ + "count_*_*", // Task模块格式:count_{taskID}_{taskRunID} + "taskrun:count:*:*", // TaskRun模块格式:taskrun:count:{taskID}:{taskRunID} } - - logs.CtxDebug(ctx, "处理任务TaskRuns, taskID=%d, taskRunCount=%d", task.ID, len(task.TaskRuns)) - - for _, taskRun := range task.TaskRuns { - // 只处理非终态的TaskRun - if h.isTaskRunFinal(taskRun.RunStatus) { - logs.CtxDebug(ctx, "TaskRun已为终态,跳过, taskRunID=%d, status=%s", taskRun.ID, taskRun.RunStatus) + + var allKeys []string + + // 通过类型断言获取TaskRepoImpl来访问TaskRedisDao + taskRepoImpl, ok := h.taskRepo.(*repo.TaskRepoImpl) + if !ok { + return nil, fmt.Errorf("无法获取TaskRepoImpl实例") + } + + // 获取底层的Redis客户端 + rawClient, ok := redis.Unwrap(taskRepoImpl.TaskRedisDao.(redis.Cmdable)) + if !ok { + return nil, fmt.Errorf("无法获取原始Redis客户端") + } + + for _, pattern := range patterns { + keys, err := rawClient.Keys(ctx, pattern).Result() + if err != nil { + logs.CtxError(ctx, "扫描Redis键失败", "pattern", pattern, "err", err) + continue + } + allKeys = append(allKeys, keys...) + logs.CtxDebug(ctx, "扫描到键", "pattern", pattern, "count", len(keys)) + } + + return allKeys, nil +} + +// processBatchTaskRunCounts 批量处理TaskRunCount键 +func (h *TraceHubServiceImpl) processBatchTaskRunCounts(ctx context.Context, keys []string) *SyncMetrics { + metrics := &SyncMetrics{} + + // 使用map去重,避免同一个TaskRun被重复更新 + processedTaskRuns := make(map[int64]bool) + + for _, key := range keys { + // 解析键获取taskID和taskRunID + info, err := h.parseTaskRunCountKey(key) + if err != nil { + logs.CtxError(ctx, "解析键失败", "key", key, "err", err) + metrics.FailureCount++ + continue + } + + // 检查是否已处理过此TaskRun + if processedTaskRuns[info.TaskRunID] { + logs.CtxDebug(ctx, "TaskRun已处理,跳过", "taskRunID", info.TaskRunID, "key", key) + metrics.SkippedCount++ + continue + } + + // 获取Redis中的计数值 + var count int64 + if info.KeyType == "task" { + count, err = h.taskRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) + } else { + count, err = h.taskRunRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) + } + + if err != nil { + logs.CtxError(ctx, "获取TaskRunCount失败", "key", key, "err", err) + metrics.FailureCount++ + continue + } + + // 跳过未缓存的数据(count为-1或0) + if count <= 0 { + logs.CtxDebug(ctx, "跳过无效计数", "key", key, "count", count) + metrics.SkippedCount++ continue } - - h.updateTaskRunWithCount(ctx, task.ID, taskRun) + + // 直接更新taskrun表 + if h.updateTaskRunDirectly(ctx, info.TaskID, info.TaskRunID, count) { + metrics.SuccessCount++ + processedTaskRuns[info.TaskRunID] = true + } else { + metrics.FailureCount++ + } } + + return metrics } -// updateTaskRunWithCount 更新单个TaskRun的RunDetail -func (h *TraceHubServiceImpl) updateTaskRunWithCount(ctx context.Context, taskID int64, taskRun *entity.TaskRun) { - // 从Redis获取TaskRunCount - count, err := h.taskRepo.GetTaskRunCount(ctx, taskID, taskRun.ID) +// parseTaskRunCountKey 解析TaskRunCount键 +func (h *TraceHubServiceImpl) parseTaskRunCountKey(key string) (*TaskRunCountInfo, error) { + // 解析 count_{taskID}_{taskRunID} 格式 + if strings.HasPrefix(key, "count_") { + parts := strings.Split(key, "_") + if len(parts) != 3 { + return nil, fmt.Errorf("无效的task键格式: %s", key) + } + + taskID, err := strconv.ParseInt(parts[1], 10, 64) + if err != nil { + return nil, fmt.Errorf("解析taskID失败: %s", parts[1]) + } + + taskRunID, err := strconv.ParseInt(parts[2], 10, 64) + if err != nil { + return nil, fmt.Errorf("解析taskRunID失败: %s", parts[2]) + } + + return &TaskRunCountInfo{ + TaskID: taskID, + TaskRunID: taskRunID, + KeyType: "task", + }, nil + } + + // 解析 taskrun:count:{taskID}:{taskRunID} 格式 + if strings.HasPrefix(key, "taskrun:count:") { + parts := strings.Split(key, ":") + if len(parts) != 4 { + return nil, fmt.Errorf("无效的taskrun键格式: %s", key) + } + + taskID, err := strconv.ParseInt(parts[2], 10, 64) + if err != nil { + return nil, fmt.Errorf("解析taskID失败: %s", parts[2]) + } + + taskRunID, err := strconv.ParseInt(parts[3], 10, 64) + if err != nil { + return nil, fmt.Errorf("解析taskRunID失败: %s", parts[3]) + } + + return &TaskRunCountInfo{ + TaskID: taskID, + TaskRunID: taskRunID, + KeyType: "taskrun", + }, nil + } + + return nil, fmt.Errorf("未知的键格式: %s", key) +} + +// updateTaskRunDirectly 直接更新TaskRun表 +func (h *TraceHubServiceImpl) updateTaskRunDirectly(ctx context.Context, taskID, taskRunID, count int64) bool { + // 1. 先获取现有的TaskRun记录 + taskRun, err := h.taskRunRepo.GetTaskRun(ctx, taskRunID, nil, &taskID) if err != nil { - logs.CtxError(ctx, "获取TaskRunCount失败, taskID=%d, taskRunID=%d, err=%v", taskID, taskRun.ID, err) - return + logs.CtxError(ctx, "获取TaskRun失败", "taskRunID", taskRunID, "err", err) + return false + } + + if taskRun == nil { + logs.CtxWarn(ctx, "TaskRun不存在,跳过更新", "taskRunID", taskRunID, "taskID", taskID) + return false } - - // 构造RunDetail - runDetail := h.buildRunDetail(count, taskRun) - - // 更新TaskRun的RunDetail + + // 2. 构造新的RunDetail + runDetail := h.buildRunDetailWithCount(count, taskRun) + + // 3. 更新TaskRun的RunDetail taskRun.RunDetail = &runDetail if err := h.taskRunRepo.UpdateTaskRun(ctx, taskRun); err != nil { - logs.CtxError(ctx, "更新TaskRun失败, taskRunID=%d, err=%v", taskRun.ID, err) - return + logs.CtxError(ctx, "更新TaskRun失败", "taskRunID", taskRunID, "err", err) + return false } - - logs.CtxInfo(ctx, "成功更新TaskRun, taskRunID=%d, taskID=%d, count=%d", taskRun.ID, taskID, count) + + logs.CtxInfo(ctx, "成功更新TaskRun", "taskRunID", taskRunID, "taskID", taskID, "count", count) + return true } -// buildRunDetail 构造RunDetail JSON字符串 -func (h *TraceHubServiceImpl) buildRunDetail(count int64, taskRun *entity.TaskRun) string { +// buildRunDetailWithCount 构造包含计数的RunDetail +func (h *TraceHubServiceImpl) buildRunDetailWithCount(count int64, taskRun *entity.TaskRun) string { detail := map[string]interface{}{ "task_run_count": count, "updated_at": time.Now().Format(time.RFC3339), "status": taskRun.RunStatus, + "sync_source": "redis_full_sync", // 标识数据来源 } - + // 如果已有RunDetail,尝试合并现有数据 if taskRun.RunDetail != nil && *taskRun.RunDetail != "" { var existing map[string]interface{} if err := json.Unmarshal([]byte(*taskRun.RunDetail), &existing); err == nil { // 保留现有字段,但覆盖关键字段 for k, v := range existing { - if k != "task_run_count" && k != "updated_at" { + if k != "task_run_count" && k != "updated_at" && k != "sync_source" { detail[k] = v } } } } - + jsonData, err := json.Marshal(detail) if err != nil { // 如果JSON序列化失败,返回简单格式 - logs.CtxWarn(context.Background(), "JSON序列化失败,使用简单格式, err=%v", err) - return fmt.Sprintf(`{"task_run_count":%d,"updated_at":"%s"}`, count, time.Now().Format(time.RFC3339)) + logs.CtxWarn(context.Background(), "JSON序列化失败,使用简单格式", "err", err) + return fmt.Sprintf(`{"task_run_count":%d,"updated_at":"%s","sync_source":"redis_full_sync"}`, + count, time.Now().Format(time.RFC3339)) } - + return string(jsonData) } -// isTaskRunFinal 判断TaskRun是否为终态 -func (h *TraceHubServiceImpl) isTaskRunFinal(status string) bool { - finalStatuses := []string{ - "done", - "failed", - "canceled", - } - - for _, finalStatus := range finalStatuses { - if status == finalStatus { - return true - } - } - - return false -} \ No newline at end of file +// recordSyncMetrics 记录同步统计指标 +func (h *TraceHubServiceImpl) recordSyncMetrics(ctx context.Context, metrics *SyncMetrics) { + logs.CtxInfo(ctx, "同步统计", + "totalKeys", metrics.TotalKeys, + "success", metrics.SuccessCount, + "failure", metrics.FailureCount, + "skipped", metrics.SkippedCount, + "duration", metrics.ProcessingTime) +} diff --git a/backend/modules/observability/infra/repo/mysql/convertor/task.go b/backend/modules/observability/infra/repo/mysql/convertor/task.go index 3a5ea3b78..4456d42c7 100644 --- a/backend/modules/observability/infra/repo/mysql/convertor/task.go +++ b/backend/modules/observability/infra/repo/mysql/convertor/task.go @@ -83,3 +83,14 @@ func TaskRunPO2DO(taskRun *model.ObservabilityTaskRun) *entity.TaskRun { UpdatedAt: taskRun.UpdatedAt, } } + +func TaskRunsPO2DO(taskRun []*model.ObservabilityTaskRun) []*entity.TaskRun { + if taskRun == nil { + return nil + } + resp := make([]*entity.TaskRun, len(taskRun)) + for i, tr := range taskRun { + resp[i] = TaskRunPO2DO(tr) + } + return resp +} diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index c8c11f269..2c0cc4251 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -87,13 +87,15 @@ struct AutoEvaluateConfig { struct RunDetail { 1: optional i64 success_count 2: optional i64 failed_count + 3: optional i64 total_count } struct BackfillDetail { 1: optional i64 success_count 2: optional i64 failed_count - 3: optional RunStatus backfill_status - 4: optional string last_span_page_token + 3: optional i64 total_count + 4: optional RunStatus backfill_status + 5: optional string last_span_page_token } struct FieldMapping { From 99492020963179efc83b1876bcf3d0a66f871892 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 15:01:59 +0800 Subject: [PATCH 209/462] feat: [Coda] implement missing TaskRepo methods for observability module (LogID: 20250917144926010091110207895A218) Co-Authored-By: Coda --- backend/infra/redis/commands.go | 3 +- backend/infra/redis/redis.go | 6 +- .../task/taskexe/tracehub/scheduled_task.go | 265 +----------------- .../modules/observability/infra/repo/task.go | 120 ++++++++ 4 files changed, 125 insertions(+), 269 deletions(-) diff --git a/backend/infra/redis/commands.go b/backend/infra/redis/commands.go index e4cb5ceac..2bbfec53d 100644 --- a/backend/infra/redis/commands.go +++ b/backend/infra/redis/commands.go @@ -26,7 +26,6 @@ type SimpleCmdable interface { Eval(ctx context.Context, script string, keys []string, args ...any) *redis.Cmd Expire(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd Exists(ctx context.Context, keys ...string) *redis.IntCmd - Keys(ctx context.Context, pattern string) *redis.StringSliceCmd } // StringCmdable copy methods we need in [redis.StringCmdable] @@ -71,4 +70,4 @@ type Pipeliner interface { Len() int Exec(ctx context.Context) ([]redis.Cmder, error) Discard() -} \ No newline at end of file +} diff --git a/backend/infra/redis/redis.go b/backend/infra/redis/redis.go index f81f7f77d..9dbf8ee41 100644 --- a/backend/infra/redis/redis.go +++ b/backend/infra/redis/redis.go @@ -146,11 +146,7 @@ func (p *provider) Expire(ctx context.Context, key string, expiration time.Durat return p.cli.Expire(ctx, key, expiration) } -func (p *provider) Keys(ctx context.Context, pattern string) *redis.StringSliceCmd { - return p.cli.Keys(ctx, pattern) -} - func (p *provider) Pipeline() Pipeliner { pipe := p.cli.Pipeline() return pipe -} \ No newline at end of file +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 1daf38185..9de6e9a6c 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -5,18 +5,11 @@ package tracehub import ( "context" - "encoding/json" - "fmt" - "strconv" - "strings" "time" - "github.com/coze-dev/coze-loop/backend/infra/redis" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" - "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -45,6 +38,8 @@ func (h *TraceHubServiceImpl) startScheduledTask() { case <-h.ticker.C: // 执行定时任务 h.runScheduledTask() + // TaskRunCount 同步任务 + h.syncTaskRunCounts() case <-h.stopChan: // 停止定时任务 h.ticker.Stop() @@ -122,262 +117,8 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } - - // TaskRunCount 同步任务 - h.syncTaskRunCounts(ctx, taskPOs) } // syncTaskRunCounts 全量同步TaskRunCount到数据库 -func (h *TraceHubServiceImpl) syncTaskRunCounts(ctx context.Context, taskPOs []*entity.ObservabilityTask) { - startTime := time.Now() - logs.CtxInfo(ctx, "开始全量同步TaskRunCount到数据库") - - metrics := &SyncMetrics{} - - // 1. 获取Redis中所有TaskRunCount键 - keys, err := h.getAllTaskRunCountKeys(ctx) - if err != nil { - logs.CtxError(ctx, "获取TaskRunCount键失败", "err", err) - return - } - - metrics.TotalKeys = int64(len(keys)) - logs.CtxInfo(ctx, "发现TaskRunCount键数量", "count", len(keys)) - - // 2. 批量处理键 - batchSize := 100 // 每批处理100个键 - for i := 0; i < len(keys); i += batchSize { - end := i + batchSize - if end > len(keys) { - end = len(keys) - } - - batch := keys[i:end] - batchMetrics := h.processBatchTaskRunCounts(ctx, batch) - - // 累计统计 - metrics.SuccessCount += batchMetrics.SuccessCount - metrics.FailureCount += batchMetrics.FailureCount - metrics.SkippedCount += batchMetrics.SkippedCount - } - - metrics.ProcessingTime = time.Since(startTime) - h.recordSyncMetrics(ctx, metrics) - - logs.CtxInfo(ctx, "TaskRunCount全量同步完成") -} - -// getAllTaskRunCountKeys 获取Redis中所有TaskRunCount键 -func (h *TraceHubServiceImpl) getAllTaskRunCountKeys(ctx context.Context) ([]string, error) { - // 扫描两种键格式 - patterns := []string{ - "count_*_*", // Task模块格式:count_{taskID}_{taskRunID} - "taskrun:count:*:*", // TaskRun模块格式:taskrun:count:{taskID}:{taskRunID} - } - - var allKeys []string - - // 通过类型断言获取TaskRepoImpl来访问TaskRedisDao - taskRepoImpl, ok := h.taskRepo.(*repo.TaskRepoImpl) - if !ok { - return nil, fmt.Errorf("无法获取TaskRepoImpl实例") - } - - // 获取底层的Redis客户端 - rawClient, ok := redis.Unwrap(taskRepoImpl.TaskRedisDao.(redis.Cmdable)) - if !ok { - return nil, fmt.Errorf("无法获取原始Redis客户端") - } - - for _, pattern := range patterns { - keys, err := rawClient.Keys(ctx, pattern).Result() - if err != nil { - logs.CtxError(ctx, "扫描Redis键失败", "pattern", pattern, "err", err) - continue - } - allKeys = append(allKeys, keys...) - logs.CtxDebug(ctx, "扫描到键", "pattern", pattern, "count", len(keys)) - } - - return allKeys, nil -} - -// processBatchTaskRunCounts 批量处理TaskRunCount键 -func (h *TraceHubServiceImpl) processBatchTaskRunCounts(ctx context.Context, keys []string) *SyncMetrics { - metrics := &SyncMetrics{} - - // 使用map去重,避免同一个TaskRun被重复更新 - processedTaskRuns := make(map[int64]bool) - - for _, key := range keys { - // 解析键获取taskID和taskRunID - info, err := h.parseTaskRunCountKey(key) - if err != nil { - logs.CtxError(ctx, "解析键失败", "key", key, "err", err) - metrics.FailureCount++ - continue - } - - // 检查是否已处理过此TaskRun - if processedTaskRuns[info.TaskRunID] { - logs.CtxDebug(ctx, "TaskRun已处理,跳过", "taskRunID", info.TaskRunID, "key", key) - metrics.SkippedCount++ - continue - } - - // 获取Redis中的计数值 - var count int64 - if info.KeyType == "task" { - count, err = h.taskRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) - } else { - count, err = h.taskRunRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) - } - - if err != nil { - logs.CtxError(ctx, "获取TaskRunCount失败", "key", key, "err", err) - metrics.FailureCount++ - continue - } - - // 跳过未缓存的数据(count为-1或0) - if count <= 0 { - logs.CtxDebug(ctx, "跳过无效计数", "key", key, "count", count) - metrics.SkippedCount++ - continue - } - - // 直接更新taskrun表 - if h.updateTaskRunDirectly(ctx, info.TaskID, info.TaskRunID, count) { - metrics.SuccessCount++ - processedTaskRuns[info.TaskRunID] = true - } else { - metrics.FailureCount++ - } - } - - return metrics -} - -// parseTaskRunCountKey 解析TaskRunCount键 -func (h *TraceHubServiceImpl) parseTaskRunCountKey(key string) (*TaskRunCountInfo, error) { - // 解析 count_{taskID}_{taskRunID} 格式 - if strings.HasPrefix(key, "count_") { - parts := strings.Split(key, "_") - if len(parts) != 3 { - return nil, fmt.Errorf("无效的task键格式: %s", key) - } - - taskID, err := strconv.ParseInt(parts[1], 10, 64) - if err != nil { - return nil, fmt.Errorf("解析taskID失败: %s", parts[1]) - } - - taskRunID, err := strconv.ParseInt(parts[2], 10, 64) - if err != nil { - return nil, fmt.Errorf("解析taskRunID失败: %s", parts[2]) - } - - return &TaskRunCountInfo{ - TaskID: taskID, - TaskRunID: taskRunID, - KeyType: "task", - }, nil - } - - // 解析 taskrun:count:{taskID}:{taskRunID} 格式 - if strings.HasPrefix(key, "taskrun:count:") { - parts := strings.Split(key, ":") - if len(parts) != 4 { - return nil, fmt.Errorf("无效的taskrun键格式: %s", key) - } - - taskID, err := strconv.ParseInt(parts[2], 10, 64) - if err != nil { - return nil, fmt.Errorf("解析taskID失败: %s", parts[2]) - } - - taskRunID, err := strconv.ParseInt(parts[3], 10, 64) - if err != nil { - return nil, fmt.Errorf("解析taskRunID失败: %s", parts[3]) - } - - return &TaskRunCountInfo{ - TaskID: taskID, - TaskRunID: taskRunID, - KeyType: "taskrun", - }, nil - } - - return nil, fmt.Errorf("未知的键格式: %s", key) -} - -// updateTaskRunDirectly 直接更新TaskRun表 -func (h *TraceHubServiceImpl) updateTaskRunDirectly(ctx context.Context, taskID, taskRunID, count int64) bool { - // 1. 先获取现有的TaskRun记录 - taskRun, err := h.taskRunRepo.GetTaskRun(ctx, taskRunID, nil, &taskID) - if err != nil { - logs.CtxError(ctx, "获取TaskRun失败", "taskRunID", taskRunID, "err", err) - return false - } - - if taskRun == nil { - logs.CtxWarn(ctx, "TaskRun不存在,跳过更新", "taskRunID", taskRunID, "taskID", taskID) - return false - } - - // 2. 构造新的RunDetail - runDetail := h.buildRunDetailWithCount(count, taskRun) - - // 3. 更新TaskRun的RunDetail - taskRun.RunDetail = &runDetail - if err := h.taskRunRepo.UpdateTaskRun(ctx, taskRun); err != nil { - logs.CtxError(ctx, "更新TaskRun失败", "taskRunID", taskRunID, "err", err) - return false - } - - logs.CtxInfo(ctx, "成功更新TaskRun", "taskRunID", taskRunID, "taskID", taskID, "count", count) - return true -} - -// buildRunDetailWithCount 构造包含计数的RunDetail -func (h *TraceHubServiceImpl) buildRunDetailWithCount(count int64, taskRun *entity.TaskRun) string { - detail := map[string]interface{}{ - "task_run_count": count, - "updated_at": time.Now().Format(time.RFC3339), - "status": taskRun.RunStatus, - "sync_source": "redis_full_sync", // 标识数据来源 - } - - // 如果已有RunDetail,尝试合并现有数据 - if taskRun.RunDetail != nil && *taskRun.RunDetail != "" { - var existing map[string]interface{} - if err := json.Unmarshal([]byte(*taskRun.RunDetail), &existing); err == nil { - // 保留现有字段,但覆盖关键字段 - for k, v := range existing { - if k != "task_run_count" && k != "updated_at" && k != "sync_source" { - detail[k] = v - } - } - } - } - - jsonData, err := json.Marshal(detail) - if err != nil { - // 如果JSON序列化失败,返回简单格式 - logs.CtxWarn(context.Background(), "JSON序列化失败,使用简单格式", "err", err) - return fmt.Sprintf(`{"task_run_count":%d,"updated_at":"%s","sync_source":"redis_full_sync"}`, - count, time.Now().Format(time.RFC3339)) - } - - return string(jsonData) -} - -// recordSyncMetrics 记录同步统计指标 -func (h *TraceHubServiceImpl) recordSyncMetrics(ctx context.Context, metrics *SyncMetrics) { - logs.CtxInfo(ctx, "同步统计", - "totalKeys", metrics.TotalKeys, - "success", metrics.SuccessCount, - "failure", metrics.FailureCount, - "skipped", metrics.SkippedCount, - "duration", metrics.ProcessingTime) +func (h *TraceHubServiceImpl) syncTaskRunCounts() { } diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 25edba367..1ee5095f0 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -333,5 +333,125 @@ func (v *TaskRepoImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID i logs.CtxError(ctx, "failed to decrement task run count", "taskID", taskID, "taskRunID", taskRunID, "err", err) return err } + return nil +} + +func (v *TaskRepoImpl) DeleteTask(ctx context.Context, do *entity.ObservabilityTask) error { + // 先执行数据库删除操作 + err := v.TaskDao.DeleteTask(ctx, do.ID, do.WorkspaceID, do.CreatedBy) + if err != nil { + return err + } + + // 数据库操作成功后,异步清理缓存 + go func() { + // 清理相关列表缓存 + v.clearListCaches(context.Background(), do.WorkspaceID) + + // 如果是非终态任务,需要从非终态任务列表中移除 + if isNonFinalTaskStatus(do.TaskStatus) { + if err := v.TaskRedisDao.RemoveNonFinalTask(context.Background(), do.ID); err != nil { + logs.Error("failed to remove task from non final task list after delete", "id", do.ID, "err", err) + } + } + }() + + return nil +} + +func (v *TaskRepoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.TaskRun, error) { + // 直接查询数据库(TaskRun通常不单独缓存) + taskRunPo, err := v.TaskRunDao.GetTaskRun(ctx, id, workspaceID, nil) + if err != nil { + return nil, err + } + + // 如果需要userID验证,需要通过Task表验证创建者权限 + if userID != nil { + taskPo, err := v.TaskDao.GetTask(ctx, taskRunPo.TaskID, workspaceID, userID) + if err != nil { + return nil, err + } + if taskPo == nil { + return nil, nil // 权限不符,返回空 + } + } + + return convertor.TaskRunPO2DO(taskRunPo), nil +} + +func (v *TaskRepoImpl) ListTaskRuns(ctx context.Context, taskID int64, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) { + // 设置TaskID过滤条件 + param.TaskID = &taskID + + // 查询数据库 + results, total, err := v.TaskRunDao.ListTaskRuns(ctx, param) + if err != nil { + return nil, 0, err + } + + // 转换为DO + taskRuns := convertor.TaskRunsPO2DO(results) + return taskRuns, total, nil +} + +func (v *TaskRepoImpl) CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) { + // 1. 生成ID + id, err := v.idGenerator.GenID(ctx) + if err != nil { + return 0, err + } + + // 2. 转换并设置ID + taskRunPo := convertor.TaskRunDO2PO(do) + taskRunPo.ID = id + + // 3. 数据库创建 + createdID, err := v.TaskRunDao.CreateTaskRun(ctx, taskRunPo) + if err != nil { + return 0, err + } + + // 4. 异步更新缓存 + do.ID = createdID + go func() { + // 清理相关列表缓存(因为TaskRuns列表发生变化,Task的缓存会自然过期) + v.clearListCaches(context.Background(), do.WorkspaceID) + }() + + return createdID, nil +} + +func (v *TaskRepoImpl) UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error { + // 1. 转换并更新数据库 + taskRunPo := convertor.TaskRunDO2PO(do) + err := v.TaskRunDao.UpdateTaskRun(ctx, taskRunPo) + if err != nil { + return err + } + + // 2. 异步清理缓存 + go func() { + // 清理相关列表缓存(因为TaskRuns信息发生变化,Task的缓存会自然过期) + v.clearListCaches(context.Background(), do.WorkspaceID) + }() + + return nil +} + +func (v *TaskRepoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { + // 1. 执行OCC更新 + logs.CtxInfo(ctx, "UpdateTaskRunWithOCC", "id", id, "workspaceID", workspaceID, "updateMap", updateMap) + err := v.TaskRunDao.UpdateTaskRunWithOCC(ctx, id, workspaceID, updateMap) + if err != nil { + return err + } + + // 2. 异步清理缓存 + go func() { + // 清理相关列表缓存(Task的缓存会自然过期) + v.clearListCaches(context.Background(), workspaceID) + }() + return nil } \ No newline at end of file From 03cadb1971a6a44b8086aae9f47f78ced40a1ec3 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 15:02:56 +0800 Subject: [PATCH 210/462] add --- backend/modules/observability/domain/task/repo/task.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index ed82dce23..e604f1a92 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -17,6 +17,7 @@ type ITaskRepo interface { ListTasks(ctx context.Context, param mysql.ListTaskParam) ([]*entity.ObservabilityTask, int64, error) UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) + DeleteTask(ctx context.Context, do *entity.ObservabilityTask) error UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error // task run @@ -40,4 +41,4 @@ type ITaskRepo interface { ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) GetObjListWithTask(ctx context.Context) ([]string, []string) ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask -} \ No newline at end of file +} From e5c7d0df1235f69a41e2292675036a9abe8b7fdf Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 15:04:49 +0800 Subject: [PATCH 211/462] add idl --- .../loop/observability/domain/task/k-task.go | 118 ++++++++++- .../loop/observability/domain/task/task.go | 186 ++++++++++++++++-- .../domain/task/service/task_service.go | 3 + 3 files changed, 285 insertions(+), 22 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index 5b0b704eb..c0d4d39e5 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -2381,6 +2381,20 @@ func (p *RunDetail) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 3: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2427,6 +2441,20 @@ func (p *RunDetail) FastReadField2(buf []byte) (int, error) { return offset, nil } +func (p *RunDetail) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TotalCount = _field + return offset, nil +} + func (p *RunDetail) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -2436,6 +2464,7 @@ func (p *RunDetail) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { if p != nil { offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -2446,6 +2475,7 @@ func (p *RunDetail) BLength() int { if p != nil { l += p.field1Length() l += p.field2Length() + l += p.field3Length() } l += thrift.Binary.FieldStopLength() return l @@ -2469,6 +2499,15 @@ func (p *RunDetail) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { return offset } +func (p *RunDetail) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTotalCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 3) + offset += thrift.Binary.WriteI64(buf[offset:], *p.TotalCount) + } + return offset +} + func (p *RunDetail) field1Length() int { l := 0 if p.IsSetSuccessCount() { @@ -2487,6 +2526,15 @@ func (p *RunDetail) field2Length() int { return l } +func (p *RunDetail) field3Length() int { + l := 0 + if p.IsSetTotalCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + func (p *RunDetail) DeepCopy(s interface{}) error { src, ok := s.(*RunDetail) if !ok { @@ -2503,6 +2551,11 @@ func (p *RunDetail) DeepCopy(s interface{}) error { p.FailedCount = &tmp } + if src.TotalCount != nil { + tmp := *src.TotalCount + p.TotalCount = &tmp + } + return nil } @@ -2552,7 +2605,7 @@ func (p *BackfillDetail) FastRead(buf []byte) (int, error) { } } case 3: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I64 { l, err = p.FastReadField3(buf[offset:]) offset += l if err != nil { @@ -2579,6 +2632,20 @@ func (p *BackfillDetail) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 5: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2628,6 +2695,20 @@ func (p *BackfillDetail) FastReadField2(buf []byte) (int, error) { func (p *BackfillDetail) FastReadField3(buf []byte) (int, error) { offset := 0 + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TotalCount = _field + return offset, nil +} + +func (p *BackfillDetail) FastReadField4(buf []byte) (int, error) { + offset := 0 + var _field *RunStatus if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err @@ -2639,7 +2720,7 @@ func (p *BackfillDetail) FastReadField3(buf []byte) (int, error) { return offset, nil } -func (p *BackfillDetail) FastReadField4(buf []byte) (int, error) { +func (p *BackfillDetail) FastReadField5(buf []byte) (int, error) { offset := 0 var _field *string @@ -2664,6 +2745,7 @@ func (p *BackfillDetail) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -2676,6 +2758,7 @@ func (p *BackfillDetail) BLength() int { l += p.field2Length() l += p.field3Length() l += p.field4Length() + l += p.field5Length() } l += thrift.Binary.FieldStopLength() return l @@ -2700,18 +2783,27 @@ func (p *BackfillDetail) fastWriteField2(buf []byte, w thrift.NocopyWriter) int } func (p *BackfillDetail) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTotalCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 3) + offset += thrift.Binary.WriteI64(buf[offset:], *p.TotalCount) + } + return offset +} + +func (p *BackfillDetail) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetBackfillStatus() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.BackfillStatus) } return offset } -func (p *BackfillDetail) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { +func (p *BackfillDetail) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetLastSpanPageToken() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 5) offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.LastSpanPageToken) } return offset @@ -2736,6 +2828,15 @@ func (p *BackfillDetail) field2Length() int { } func (p *BackfillDetail) field3Length() int { + l := 0 + if p.IsSetTotalCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *BackfillDetail) field4Length() int { l := 0 if p.IsSetBackfillStatus() { l += thrift.Binary.FieldBeginLength() @@ -2744,7 +2845,7 @@ func (p *BackfillDetail) field3Length() int { return l } -func (p *BackfillDetail) field4Length() int { +func (p *BackfillDetail) field5Length() int { l := 0 if p.IsSetLastSpanPageToken() { l += thrift.Binary.FieldBeginLength() @@ -2769,6 +2870,11 @@ func (p *BackfillDetail) DeepCopy(s interface{}) error { p.FailedCount = &tmp } + if src.TotalCount != nil { + tmp := *src.TotalCount + p.TotalCount = &tmp + } + if src.BackfillStatus != nil { tmp := *src.BackfillStatus p.BackfillStatus = &tmp diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 99d042b20..071907c55 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -3240,6 +3240,7 @@ func (p *AutoEvaluateConfig) Field3DeepEqual(src []*FieldMapping) bool { type RunDetail struct { SuccessCount *int64 `thrift:"success_count,1,optional" frugal:"1,optional,i64" form:"success_count" json:"success_count,omitempty" query:"success_count"` FailedCount *int64 `thrift:"failed_count,2,optional" frugal:"2,optional,i64" form:"failed_count" json:"failed_count,omitempty" query:"failed_count"` + TotalCount *int64 `thrift:"total_count,3,optional" frugal:"3,optional,i64" form:"total_count" json:"total_count,omitempty" query:"total_count"` } func NewRunDetail() *RunDetail { @@ -3272,16 +3273,32 @@ func (p *RunDetail) GetFailedCount() (v int64) { } return *p.FailedCount } + +var RunDetail_TotalCount_DEFAULT int64 + +func (p *RunDetail) GetTotalCount() (v int64) { + if p == nil { + return + } + if !p.IsSetTotalCount() { + return RunDetail_TotalCount_DEFAULT + } + return *p.TotalCount +} func (p *RunDetail) SetSuccessCount(val *int64) { p.SuccessCount = val } func (p *RunDetail) SetFailedCount(val *int64) { p.FailedCount = val } +func (p *RunDetail) SetTotalCount(val *int64) { + p.TotalCount = val +} var fieldIDToName_RunDetail = map[int16]string{ 1: "success_count", 2: "failed_count", + 3: "total_count", } func (p *RunDetail) IsSetSuccessCount() bool { @@ -3292,6 +3309,10 @@ func (p *RunDetail) IsSetFailedCount() bool { return p.FailedCount != nil } +func (p *RunDetail) IsSetTotalCount() bool { + return p.TotalCount != nil +} + func (p *RunDetail) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -3326,6 +3347,14 @@ func (p *RunDetail) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 3: + if fieldTypeId == thrift.I64 { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -3377,6 +3406,17 @@ func (p *RunDetail) ReadField2(iprot thrift.TProtocol) error { p.FailedCount = _field return nil } +func (p *RunDetail) ReadField3(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.TotalCount = _field + return nil +} func (p *RunDetail) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -3392,6 +3432,10 @@ func (p *RunDetail) Write(oprot thrift.TProtocol) (err error) { fieldId = 2 goto WriteFieldError } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -3446,6 +3490,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } +func (p *RunDetail) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetTotalCount() { + if err = oprot.WriteFieldBegin("total_count", thrift.I64, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.TotalCount); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} func (p *RunDetail) String() string { if p == nil { @@ -3467,6 +3529,9 @@ func (p *RunDetail) DeepEqual(ano *RunDetail) bool { if !p.Field2DeepEqual(ano.FailedCount) { return false } + if !p.Field3DeepEqual(ano.TotalCount) { + return false + } return true } @@ -3494,12 +3559,25 @@ func (p *RunDetail) Field2DeepEqual(src *int64) bool { } return true } +func (p *RunDetail) Field3DeepEqual(src *int64) bool { + + if p.TotalCount == src { + return true + } else if p.TotalCount == nil || src == nil { + return false + } + if *p.TotalCount != *src { + return false + } + return true +} type BackfillDetail struct { SuccessCount *int64 `thrift:"success_count,1,optional" frugal:"1,optional,i64" form:"success_count" json:"success_count,omitempty" query:"success_count"` FailedCount *int64 `thrift:"failed_count,2,optional" frugal:"2,optional,i64" form:"failed_count" json:"failed_count,omitempty" query:"failed_count"` - BackfillStatus *RunStatus `thrift:"backfill_status,3,optional" frugal:"3,optional,string" form:"backfill_status" json:"backfill_status,omitempty" query:"backfill_status"` - LastSpanPageToken *string `thrift:"last_span_page_token,4,optional" frugal:"4,optional,string" form:"last_span_page_token" json:"last_span_page_token,omitempty" query:"last_span_page_token"` + TotalCount *int64 `thrift:"total_count,3,optional" frugal:"3,optional,i64" form:"total_count" json:"total_count,omitempty" query:"total_count"` + BackfillStatus *RunStatus `thrift:"backfill_status,4,optional" frugal:"4,optional,string" form:"backfill_status" json:"backfill_status,omitempty" query:"backfill_status"` + LastSpanPageToken *string `thrift:"last_span_page_token,5,optional" frugal:"5,optional,string" form:"last_span_page_token" json:"last_span_page_token,omitempty" query:"last_span_page_token"` } func NewBackfillDetail() *BackfillDetail { @@ -3533,6 +3611,18 @@ func (p *BackfillDetail) GetFailedCount() (v int64) { return *p.FailedCount } +var BackfillDetail_TotalCount_DEFAULT int64 + +func (p *BackfillDetail) GetTotalCount() (v int64) { + if p == nil { + return + } + if !p.IsSetTotalCount() { + return BackfillDetail_TotalCount_DEFAULT + } + return *p.TotalCount +} + var BackfillDetail_BackfillStatus_DEFAULT RunStatus func (p *BackfillDetail) GetBackfillStatus() (v RunStatus) { @@ -3562,6 +3652,9 @@ func (p *BackfillDetail) SetSuccessCount(val *int64) { func (p *BackfillDetail) SetFailedCount(val *int64) { p.FailedCount = val } +func (p *BackfillDetail) SetTotalCount(val *int64) { + p.TotalCount = val +} func (p *BackfillDetail) SetBackfillStatus(val *RunStatus) { p.BackfillStatus = val } @@ -3572,8 +3665,9 @@ func (p *BackfillDetail) SetLastSpanPageToken(val *string) { var fieldIDToName_BackfillDetail = map[int16]string{ 1: "success_count", 2: "failed_count", - 3: "backfill_status", - 4: "last_span_page_token", + 3: "total_count", + 4: "backfill_status", + 5: "last_span_page_token", } func (p *BackfillDetail) IsSetSuccessCount() bool { @@ -3584,6 +3678,10 @@ func (p *BackfillDetail) IsSetFailedCount() bool { return p.FailedCount != nil } +func (p *BackfillDetail) IsSetTotalCount() bool { + return p.TotalCount != nil +} + func (p *BackfillDetail) IsSetBackfillStatus() bool { return p.BackfillStatus != nil } @@ -3627,7 +3725,7 @@ func (p *BackfillDetail) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 3: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I64 { if err = p.ReadField3(iprot); err != nil { goto ReadFieldError } @@ -3642,6 +3740,14 @@ func (p *BackfillDetail) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 5: + if fieldTypeId == thrift.STRING { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -3695,6 +3801,17 @@ func (p *BackfillDetail) ReadField2(iprot thrift.TProtocol) error { } func (p *BackfillDetail) ReadField3(iprot thrift.TProtocol) error { + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.TotalCount = _field + return nil +} +func (p *BackfillDetail) ReadField4(iprot thrift.TProtocol) error { + var _field *RunStatus if v, err := iprot.ReadString(); err != nil { return err @@ -3704,7 +3821,7 @@ func (p *BackfillDetail) ReadField3(iprot thrift.TProtocol) error { p.BackfillStatus = _field return nil } -func (p *BackfillDetail) ReadField4(iprot thrift.TProtocol) error { +func (p *BackfillDetail) ReadField5(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -3738,6 +3855,10 @@ func (p *BackfillDetail) Write(oprot thrift.TProtocol) (err error) { fieldId = 4 goto WriteFieldError } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -3793,11 +3914,11 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } func (p *BackfillDetail) writeField3(oprot thrift.TProtocol) (err error) { - if p.IsSetBackfillStatus() { - if err = oprot.WriteFieldBegin("backfill_status", thrift.STRING, 3); err != nil { + if p.IsSetTotalCount() { + if err = oprot.WriteFieldBegin("total_count", thrift.I64, 3); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(*p.BackfillStatus); err != nil { + if err := oprot.WriteI64(*p.TotalCount); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -3811,11 +3932,11 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } func (p *BackfillDetail) writeField4(oprot thrift.TProtocol) (err error) { - if p.IsSetLastSpanPageToken() { - if err = oprot.WriteFieldBegin("last_span_page_token", thrift.STRING, 4); err != nil { + if p.IsSetBackfillStatus() { + if err = oprot.WriteFieldBegin("backfill_status", thrift.STRING, 4); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(*p.LastSpanPageToken); err != nil { + if err := oprot.WriteString(*p.BackfillStatus); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -3828,6 +3949,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } +func (p *BackfillDetail) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetLastSpanPageToken() { + if err = oprot.WriteFieldBegin("last_span_page_token", thrift.STRING, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.LastSpanPageToken); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} func (p *BackfillDetail) String() string { if p == nil { @@ -3849,10 +3988,13 @@ func (p *BackfillDetail) DeepEqual(ano *BackfillDetail) bool { if !p.Field2DeepEqual(ano.FailedCount) { return false } - if !p.Field3DeepEqual(ano.BackfillStatus) { + if !p.Field3DeepEqual(ano.TotalCount) { + return false + } + if !p.Field4DeepEqual(ano.BackfillStatus) { return false } - if !p.Field4DeepEqual(ano.LastSpanPageToken) { + if !p.Field5DeepEqual(ano.LastSpanPageToken) { return false } return true @@ -3882,7 +4024,19 @@ func (p *BackfillDetail) Field2DeepEqual(src *int64) bool { } return true } -func (p *BackfillDetail) Field3DeepEqual(src *RunStatus) bool { +func (p *BackfillDetail) Field3DeepEqual(src *int64) bool { + + if p.TotalCount == src { + return true + } else if p.TotalCount == nil || src == nil { + return false + } + if *p.TotalCount != *src { + return false + } + return true +} +func (p *BackfillDetail) Field4DeepEqual(src *RunStatus) bool { if p.BackfillStatus == src { return true @@ -3894,7 +4048,7 @@ func (p *BackfillDetail) Field3DeepEqual(src *RunStatus) bool { } return true } -func (p *BackfillDetail) Field4DeepEqual(src *string) bool { +func (p *BackfillDetail) Field5DeepEqual(src *string) bool { if p.LastSpanPageToken == src { return true diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 2db566f48..e36ec7c2e 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -149,6 +149,9 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if err = proc.OnChangeProcessor(ctx, taskConfig, taskOp); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) //任务改为禁用? + if err = t.TaskRepo.DeleteTask(ctx, taskPO); err != nil { + logs.CtxError(ctx, "delete task failed, task_id=%d, err=%v", id, err) + } return nil, err } } From 96b32e88ccd8f8742a9eab91efb3f16a222a736f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 15:10:12 +0800 Subject: [PATCH 212/462] fix --- .../modules/observability/domain/task/service/task_service.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index e36ec7c2e..10295c0d6 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -149,8 +149,8 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if err = proc.OnChangeProcessor(ctx, taskConfig, taskOp); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) //任务改为禁用? - if err = t.TaskRepo.DeleteTask(ctx, taskPO); err != nil { - logs.CtxError(ctx, "delete task failed, task_id=%d, err=%v", id, err) + if err1 := t.TaskRepo.DeleteTask(ctx, taskPO); err1 != nil { + logs.CtxError(ctx, "delete task failed, task_id=%d, err=%v", id, err1) } return nil, err } From 42240b1eea365f099cc199039174307af3d5a224 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 17:12:46 +0800 Subject: [PATCH 213/462] fix idl --- .../loop/observability/domain/task/k-task.go | 50 +++++----- .../loop/observability/domain/task/task.go | 94 +++++++++---------- .../domain/task/task_validator.go | 2 +- .../application/convertor/task/task.go | 16 ++++ .../observability/domain/task/repo/task.go | 5 +- .../domain/task/service/task_service.go | 7 ++ .../task/taskexe/processor/auto_evaluate.go | 12 +-- .../task/taskexe/tracehub/scheduled_task.go | 4 +- .../infra/repo/redis/dao/task.go | 16 ++++ .../modules/observability/infra/repo/task.go | 7 +- .../loop/observability/domain/task.thrift | 4 +- 11 files changed, 132 insertions(+), 85 deletions(-) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index c0d4d39e5..6b4b697a6 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -2212,8 +2212,8 @@ func (p *AutoEvaluateConfig) FastReadField3(buf []byte) (int, error) { if err != nil { return offset, err } - _field := make([]*FieldMapping, 0, size) - values := make([]FieldMapping, size) + _field := make([]*EvaluateFieldMapping, 0, size) + values := make([]EvaluateFieldMapping, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -2319,11 +2319,11 @@ func (p *AutoEvaluateConfig) DeepCopy(s interface{}) error { p.EvaluatorID = src.EvaluatorID if src.FieldMappings != nil { - p.FieldMappings = make([]*FieldMapping, 0, len(src.FieldMappings)) + p.FieldMappings = make([]*EvaluateFieldMapping, 0, len(src.FieldMappings)) for _, elem := range src.FieldMappings { - var _elem *FieldMapping + var _elem *EvaluateFieldMapping if elem != nil { - _elem = &FieldMapping{} + _elem = &EvaluateFieldMapping{} if err := _elem.DeepCopy(elem); err != nil { return err } @@ -2891,7 +2891,7 @@ func (p *BackfillDetail) DeepCopy(s interface{}) error { return nil } -func (p *FieldMapping) FastRead(buf []byte) (int, error) { +func (p *EvaluateFieldMapping) FastRead(buf []byte) (int, error) { var err error var offset int @@ -2997,14 +2997,14 @@ func (p *FieldMapping) FastRead(buf []byte) (int, error) { ReadFieldBeginError: return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldMapping[fieldId]), err) + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvaluateFieldMapping[fieldId]), err) SkipFieldError: return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) RequiredFieldNotSetError: - return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_FieldMapping[fieldId])) + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_EvaluateFieldMapping[fieldId])) } -func (p *FieldMapping) FastReadField1(buf []byte) (int, error) { +func (p *EvaluateFieldMapping) FastReadField1(buf []byte) (int, error) { offset := 0 _field := dataset.NewFieldSchema() if l, err := _field.FastRead(buf[offset:]); err != nil { @@ -3016,7 +3016,7 @@ func (p *FieldMapping) FastReadField1(buf []byte) (int, error) { return offset, nil } -func (p *FieldMapping) FastReadField2(buf []byte) (int, error) { +func (p *EvaluateFieldMapping) FastReadField2(buf []byte) (int, error) { offset := 0 var _field string @@ -3030,7 +3030,7 @@ func (p *FieldMapping) FastReadField2(buf []byte) (int, error) { return offset, nil } -func (p *FieldMapping) FastReadField3(buf []byte) (int, error) { +func (p *EvaluateFieldMapping) FastReadField3(buf []byte) (int, error) { offset := 0 var _field string @@ -3044,7 +3044,7 @@ func (p *FieldMapping) FastReadField3(buf []byte) (int, error) { return offset, nil } -func (p *FieldMapping) FastReadField4(buf []byte) (int, error) { +func (p *EvaluateFieldMapping) FastReadField4(buf []byte) (int, error) { offset := 0 var _field *string @@ -3058,11 +3058,11 @@ func (p *FieldMapping) FastReadField4(buf []byte) (int, error) { return offset, nil } -func (p *FieldMapping) FastWrite(buf []byte) int { +func (p *EvaluateFieldMapping) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *FieldMapping) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *EvaluateFieldMapping) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -3074,7 +3074,7 @@ func (p *FieldMapping) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { return offset } -func (p *FieldMapping) BLength() int { +func (p *EvaluateFieldMapping) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -3086,28 +3086,28 @@ func (p *FieldMapping) BLength() int { return l } -func (p *FieldMapping) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *EvaluateFieldMapping) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) offset += p.FieldSchema.FastWriteNocopy(buf[offset:], w) return offset } -func (p *FieldMapping) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { +func (p *EvaluateFieldMapping) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TraceFieldKey) return offset } -func (p *FieldMapping) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { +func (p *EvaluateFieldMapping) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, p.TraceFieldJsonpath) return offset } -func (p *FieldMapping) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { +func (p *EvaluateFieldMapping) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetEvalSetName() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 4) @@ -3116,28 +3116,28 @@ func (p *FieldMapping) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { return offset } -func (p *FieldMapping) field1Length() int { +func (p *EvaluateFieldMapping) field1Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.FieldSchema.BLength() return l } -func (p *FieldMapping) field2Length() int { +func (p *EvaluateFieldMapping) field2Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += thrift.Binary.StringLengthNocopy(p.TraceFieldKey) return l } -func (p *FieldMapping) field3Length() int { +func (p *EvaluateFieldMapping) field3Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += thrift.Binary.StringLengthNocopy(p.TraceFieldJsonpath) return l } -func (p *FieldMapping) field4Length() int { +func (p *EvaluateFieldMapping) field4Length() int { l := 0 if p.IsSetEvalSetName() { l += thrift.Binary.FieldBeginLength() @@ -3146,8 +3146,8 @@ func (p *FieldMapping) field4Length() int { return l } -func (p *FieldMapping) DeepCopy(s interface{}) error { - src, ok := s.(*FieldMapping) +func (p *EvaluateFieldMapping) DeepCopy(s interface{}) error { + src, ok := s.(*EvaluateFieldMapping) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index 071907c55..fd37c38ef 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -2902,9 +2902,9 @@ func (p *DataReflowConfig) Field4DeepEqual(src []*dataset.FieldMapping) bool { } type AutoEvaluateConfig struct { - EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" json:"evaluator_version_id" form:"evaluator_version_id,required" query:"evaluator_version_id,required"` - EvaluatorID int64 `thrift:"evaluator_id,2,required" frugal:"2,required,i64" json:"evaluator_id" form:"evaluator_id,required" query:"evaluator_id,required"` - FieldMappings []*FieldMapping `thrift:"field_mappings,3,required" frugal:"3,required,list" form:"field_mappings,required" json:"field_mappings,required" query:"field_mappings,required"` + EvaluatorVersionID int64 `thrift:"evaluator_version_id,1,required" frugal:"1,required,i64" json:"evaluator_version_id" form:"evaluator_version_id,required" query:"evaluator_version_id,required"` + EvaluatorID int64 `thrift:"evaluator_id,2,required" frugal:"2,required,i64" json:"evaluator_id" form:"evaluator_id,required" query:"evaluator_id,required"` + FieldMappings []*EvaluateFieldMapping `thrift:"field_mappings,3,required" frugal:"3,required,list" form:"field_mappings,required" json:"field_mappings,required" query:"field_mappings,required"` } func NewAutoEvaluateConfig() *AutoEvaluateConfig { @@ -2928,7 +2928,7 @@ func (p *AutoEvaluateConfig) GetEvaluatorID() (v int64) { return } -func (p *AutoEvaluateConfig) GetFieldMappings() (v []*FieldMapping) { +func (p *AutoEvaluateConfig) GetFieldMappings() (v []*EvaluateFieldMapping) { if p != nil { return p.FieldMappings } @@ -2940,7 +2940,7 @@ func (p *AutoEvaluateConfig) SetEvaluatorVersionID(val int64) { func (p *AutoEvaluateConfig) SetEvaluatorID(val int64) { p.EvaluatorID = val } -func (p *AutoEvaluateConfig) SetFieldMappings(val []*FieldMapping) { +func (p *AutoEvaluateConfig) SetFieldMappings(val []*EvaluateFieldMapping) { p.FieldMappings = val } @@ -3070,8 +3070,8 @@ func (p *AutoEvaluateConfig) ReadField3(iprot thrift.TProtocol) error { if err != nil { return err } - _field := make([]*FieldMapping, 0, size) - values := make([]FieldMapping, size) + _field := make([]*EvaluateFieldMapping, 0, size) + values := make([]EvaluateFieldMapping, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -3222,7 +3222,7 @@ func (p *AutoEvaluateConfig) Field2DeepEqual(src int64) bool { } return true } -func (p *AutoEvaluateConfig) Field3DeepEqual(src []*FieldMapping) bool { +func (p *AutoEvaluateConfig) Field3DeepEqual(src []*EvaluateFieldMapping) bool { if len(p.FieldMappings) != len(src) { return false @@ -4061,7 +4061,7 @@ func (p *BackfillDetail) Field5DeepEqual(src *string) bool { return true } -type FieldMapping struct { +type EvaluateFieldMapping struct { // 数据集字段约束 FieldSchema *dataset.FieldSchema `thrift:"field_schema,1,required" frugal:"1,required,dataset.FieldSchema" form:"field_schema,required" json:"field_schema,required" query:"field_schema,required"` TraceFieldKey string `thrift:"trace_field_key,2,required" frugal:"2,required,string" form:"trace_field_key,required" json:"trace_field_key,required" query:"trace_field_key,required"` @@ -4069,79 +4069,79 @@ type FieldMapping struct { EvalSetName *string `thrift:"eval_set_name,4,optional" frugal:"4,optional,string" form:"eval_set_name" json:"eval_set_name,omitempty" query:"eval_set_name"` } -func NewFieldMapping() *FieldMapping { - return &FieldMapping{} +func NewEvaluateFieldMapping() *EvaluateFieldMapping { + return &EvaluateFieldMapping{} } -func (p *FieldMapping) InitDefault() { +func (p *EvaluateFieldMapping) InitDefault() { } -var FieldMapping_FieldSchema_DEFAULT *dataset.FieldSchema +var EvaluateFieldMapping_FieldSchema_DEFAULT *dataset.FieldSchema -func (p *FieldMapping) GetFieldSchema() (v *dataset.FieldSchema) { +func (p *EvaluateFieldMapping) GetFieldSchema() (v *dataset.FieldSchema) { if p == nil { return } if !p.IsSetFieldSchema() { - return FieldMapping_FieldSchema_DEFAULT + return EvaluateFieldMapping_FieldSchema_DEFAULT } return p.FieldSchema } -func (p *FieldMapping) GetTraceFieldKey() (v string) { +func (p *EvaluateFieldMapping) GetTraceFieldKey() (v string) { if p != nil { return p.TraceFieldKey } return } -func (p *FieldMapping) GetTraceFieldJsonpath() (v string) { +func (p *EvaluateFieldMapping) GetTraceFieldJsonpath() (v string) { if p != nil { return p.TraceFieldJsonpath } return } -var FieldMapping_EvalSetName_DEFAULT string +var EvaluateFieldMapping_EvalSetName_DEFAULT string -func (p *FieldMapping) GetEvalSetName() (v string) { +func (p *EvaluateFieldMapping) GetEvalSetName() (v string) { if p == nil { return } if !p.IsSetEvalSetName() { - return FieldMapping_EvalSetName_DEFAULT + return EvaluateFieldMapping_EvalSetName_DEFAULT } return *p.EvalSetName } -func (p *FieldMapping) SetFieldSchema(val *dataset.FieldSchema) { +func (p *EvaluateFieldMapping) SetFieldSchema(val *dataset.FieldSchema) { p.FieldSchema = val } -func (p *FieldMapping) SetTraceFieldKey(val string) { +func (p *EvaluateFieldMapping) SetTraceFieldKey(val string) { p.TraceFieldKey = val } -func (p *FieldMapping) SetTraceFieldJsonpath(val string) { +func (p *EvaluateFieldMapping) SetTraceFieldJsonpath(val string) { p.TraceFieldJsonpath = val } -func (p *FieldMapping) SetEvalSetName(val *string) { +func (p *EvaluateFieldMapping) SetEvalSetName(val *string) { p.EvalSetName = val } -var fieldIDToName_FieldMapping = map[int16]string{ +var fieldIDToName_EvaluateFieldMapping = map[int16]string{ 1: "field_schema", 2: "trace_field_key", 3: "trace_field_jsonpath", 4: "eval_set_name", } -func (p *FieldMapping) IsSetFieldSchema() bool { +func (p *EvaluateFieldMapping) IsSetFieldSchema() bool { return p.FieldSchema != nil } -func (p *FieldMapping) IsSetEvalSetName() bool { +func (p *EvaluateFieldMapping) IsSetEvalSetName() bool { return p.EvalSetName != nil } -func (p *FieldMapping) Read(iprot thrift.TProtocol) (err error) { +func (p *EvaluateFieldMapping) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 var issetFieldSchema bool = false @@ -4230,7 +4230,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FieldMapping[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvaluateFieldMapping[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -4239,10 +4239,10 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_FieldMapping[fieldId])) + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_EvaluateFieldMapping[fieldId])) } -func (p *FieldMapping) ReadField1(iprot thrift.TProtocol) error { +func (p *EvaluateFieldMapping) ReadField1(iprot thrift.TProtocol) error { _field := dataset.NewFieldSchema() if err := _field.Read(iprot); err != nil { return err @@ -4250,7 +4250,7 @@ func (p *FieldMapping) ReadField1(iprot thrift.TProtocol) error { p.FieldSchema = _field return nil } -func (p *FieldMapping) ReadField2(iprot thrift.TProtocol) error { +func (p *EvaluateFieldMapping) ReadField2(iprot thrift.TProtocol) error { var _field string if v, err := iprot.ReadString(); err != nil { @@ -4261,7 +4261,7 @@ func (p *FieldMapping) ReadField2(iprot thrift.TProtocol) error { p.TraceFieldKey = _field return nil } -func (p *FieldMapping) ReadField3(iprot thrift.TProtocol) error { +func (p *EvaluateFieldMapping) ReadField3(iprot thrift.TProtocol) error { var _field string if v, err := iprot.ReadString(); err != nil { @@ -4272,7 +4272,7 @@ func (p *FieldMapping) ReadField3(iprot thrift.TProtocol) error { p.TraceFieldJsonpath = _field return nil } -func (p *FieldMapping) ReadField4(iprot thrift.TProtocol) error { +func (p *EvaluateFieldMapping) ReadField4(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -4284,9 +4284,9 @@ func (p *FieldMapping) ReadField4(iprot thrift.TProtocol) error { return nil } -func (p *FieldMapping) Write(oprot thrift.TProtocol) (err error) { +func (p *EvaluateFieldMapping) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("FieldMapping"); err != nil { + if err = oprot.WriteStructBegin("EvaluateFieldMapping"); err != nil { goto WriteStructBeginError } if p != nil { @@ -4324,7 +4324,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *FieldMapping) writeField1(oprot thrift.TProtocol) (err error) { +func (p *EvaluateFieldMapping) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("field_schema", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -4340,7 +4340,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *FieldMapping) writeField2(oprot thrift.TProtocol) (err error) { +func (p *EvaluateFieldMapping) writeField2(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("trace_field_key", thrift.STRING, 2); err != nil { goto WriteFieldBeginError } @@ -4356,7 +4356,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *FieldMapping) writeField3(oprot thrift.TProtocol) (err error) { +func (p *EvaluateFieldMapping) writeField3(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("trace_field_jsonpath", thrift.STRING, 3); err != nil { goto WriteFieldBeginError } @@ -4372,7 +4372,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } -func (p *FieldMapping) writeField4(oprot thrift.TProtocol) (err error) { +func (p *EvaluateFieldMapping) writeField4(oprot thrift.TProtocol) (err error) { if p.IsSetEvalSetName() { if err = oprot.WriteFieldBegin("eval_set_name", thrift.STRING, 4); err != nil { goto WriteFieldBeginError @@ -4391,15 +4391,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } -func (p *FieldMapping) String() string { +func (p *EvaluateFieldMapping) String() string { if p == nil { return "" } - return fmt.Sprintf("FieldMapping(%+v)", *p) + return fmt.Sprintf("EvaluateFieldMapping(%+v)", *p) } -func (p *FieldMapping) DeepEqual(ano *FieldMapping) bool { +func (p *EvaluateFieldMapping) DeepEqual(ano *EvaluateFieldMapping) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -4420,28 +4420,28 @@ func (p *FieldMapping) DeepEqual(ano *FieldMapping) bool { return true } -func (p *FieldMapping) Field1DeepEqual(src *dataset.FieldSchema) bool { +func (p *EvaluateFieldMapping) Field1DeepEqual(src *dataset.FieldSchema) bool { if !p.FieldSchema.DeepEqual(src) { return false } return true } -func (p *FieldMapping) Field2DeepEqual(src string) bool { +func (p *EvaluateFieldMapping) Field2DeepEqual(src string) bool { if strings.Compare(p.TraceFieldKey, src) != 0 { return false } return true } -func (p *FieldMapping) Field3DeepEqual(src string) bool { +func (p *EvaluateFieldMapping) Field3DeepEqual(src string) bool { if strings.Compare(p.TraceFieldJsonpath, src) != 0 { return false } return true } -func (p *FieldMapping) Field4DeepEqual(src *string) bool { +func (p *EvaluateFieldMapping) Field4DeepEqual(src *string) bool { if p.EvalSetName == src { return true diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go index dd63e4861..c157b3ca8 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task_validator.go @@ -105,7 +105,7 @@ func (p *RunDetail) IsValid() error { func (p *BackfillDetail) IsValid() error { return nil } -func (p *FieldMapping) IsValid() error { +func (p *EvaluateFieldMapping) IsValid() error { if p.FieldSchema != nil { if err := p.FieldSchema.IsValid(); err != nil { return fmt.Errorf("field FieldSchema not valid, %w", err) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index e38ce8582..aafe9393c 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -40,6 +40,21 @@ func TaskPO2DTO(ctx context.Context, v *entity.ObservabilityTask, userMap map[st if v == nil { return nil } + var taskDetail *task.RunDetail + var totalCount, successCount, failedCount int64 + for _, tr := range v.TaskRuns { + trDO := TaskRunPO2DTO(ctx, tr, nil) + if trDO.RunDetail != nil { + totalCount += *trDO.RunDetail.TotalCount + successCount += *trDO.RunDetail.SuccessCount + failedCount += *trDO.RunDetail.FailedCount + } + } + taskDetail = &task.RunDetail{ + TotalCount: gptr.Of(totalCount), + SuccessCount: gptr.Of(successCount), + FailedCount: gptr.Of(failedCount), + } taskInfo := &task.Task{ ID: ptr.Of(v.ID), Name: v.Name, @@ -49,6 +64,7 @@ func TaskPO2DTO(ctx context.Context, v *entity.ObservabilityTask, userMap map[st TaskStatus: ptr.Of(v.TaskStatus), Rule: RulePO2DO(ctx, v.SpanFilter, v.EffectiveTime, v.Sampler, v.BackfillEffectiveTime), TaskConfig: TaskConfigPO2DO(ctx, v.TaskConfig), + TaskDetail: taskDetail, BaseInfo: &common.BaseInfo{ CreatedAt: gptr.Of(v.CreatedAt.UnixMilli()), UpdatedAt: gptr.Of(v.UpdatedAt.UnixMilli()), diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index e604f1a92..ce10b7dc5 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -41,4 +41,7 @@ type ITaskRepo interface { ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) GetObjListWithTask(ctx context.Context) ([]string, []string) ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask -} + + // 获取所有TaskRunCount键 + GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) +} \ No newline at end of file diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 10295c0d6..c6cecb880 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -282,6 +282,13 @@ func (t *TaskServiceImpl) GetTask(ctx context.Context, req *GetTaskReq) (resp *G logs.CtxError(ctx, "GetTasks tasks is nil") return resp, nil } + taskRunPOs, _, err := t.TaskRunRepo.ListTaskRuns(ctx, mysql.ListTaskRunParam{ + WorkspaceID: ptr.Of(req.WorkspaceID), + TaskID: ptr.Of(req.TaskID), + }) + for _, tr := range taskRunPOs { + taskPO.TaskRuns = append(taskPO.TaskRuns, tr) + } _, userInfoMap, err := t.userProvider.GetUserInfo(ctx, []string{taskPO.CreatedBy, taskPO.UpdatedBy}) if err != nil { logs.CtxError(ctx, "MGetUserInfo err:%v", err) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index f49978abe..e352a6fe3 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -45,18 +45,21 @@ type AutoEvaluteProcessor struct { evaluationSvc rpc.IEvaluationRPCAdapter datasetServiceAdaptor *service.DatasetServiceAdaptor taskRepo repo.ITaskRepo + taskRunRepo repo.ITaskRunRepo } func newAutoEvaluteProcessor( datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, - taskRepo repo.ITaskRepo) *AutoEvaluteProcessor { + taskRepo repo.ITaskRepo, + taskRunRepo repo.ITaskRunRepo) *AutoEvaluteProcessor { return &AutoEvaluteProcessor{ datasetServiceAdaptor: datasetServiceProvider, evalSvc: evalService, evaluationSvc: evaluationService, taskRepo: taskRepo, + taskRunRepo: taskRunRepo, } } @@ -330,8 +333,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas Status: task.TaskStatusRunning, }, } - taskConfig.TaskRuns = append(taskConfig.TaskRuns, &task_entity.TaskRun{ - ID: exptID, + taskRun := &task_entity.TaskRun{ TaskID: currentTask.GetID(), WorkspaceID: currentTask.GetWorkspaceID(), TaskType: currentTask.GetTaskType(), @@ -341,13 +343,11 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas CreatedAt: time.Now(), UpdatedAt: time.Now(), RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), - }) - for _, run := range taskConfig.TaskRuns { - logs.CtxInfo(ctx, "taskConfig:%+v", &run) } // 6、更新任务配置 // todo:[xun]改task_run? + _, err = p.taskRunRepo.CreateTaskRun(ctx, taskRun) err = p.taskRepo.UpdateTask(ctx, taskConfig) if err != nil { return err diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 9de6e9a6c..da0e61456 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -38,8 +38,6 @@ func (h *TraceHubServiceImpl) startScheduledTask() { case <-h.ticker.C: // 执行定时任务 h.runScheduledTask() - // TaskRunCount 同步任务 - h.syncTaskRunCounts() case <-h.stopChan: // 停止定时任务 h.ticker.Stop() @@ -117,8 +115,10 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } + h.syncTaskRunCounts() } // syncTaskRunCounts 全量同步TaskRunCount到数据库 func (h *TraceHubServiceImpl) syncTaskRunCounts() { + } diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index f76695042..3486413c7 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -73,6 +73,9 @@ type ITaskDAO interface { GetAppListWithTask(ctx context.Context) ([]string, error) SetAppListWithTask(ctx context.Context, apps []string, ttl time.Duration) error DeleteAppListWithTask(ctx context.Context) error + + // 获取所有TaskRunCount键 + GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) } type TaskDAOImpl struct { @@ -676,4 +679,17 @@ func (p *TaskDAOImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID in } return result, nil +} + +// GetAllTaskRunCountKeys 获取所有TaskRunCount键 +// 注意:由于Cmdable接口限制,这里使用一个简化的实现 +// 在实际生产环境中,应该通过其他方式(如维护键列表)来实现 +func (p *TaskDAOImpl) GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) { + // 由于Cmdable接口没有Keys或Scan方法,这里返回空列表 + // 实际实现中,可能需要: + // 1. 在写入时维护一个键列表 + // 2. 使用更高级的Redis客户端接口 + // 3. 或者通过其他方式来获取键列表 + logs.CtxWarn(ctx, "GetAllTaskRunCountKeys not fully implemented due to Cmdable interface limitations") + return []string{}, nil } \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 1ee5095f0..25aca6d85 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -454,4 +454,9 @@ func (v *TaskRepoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, works }() return nil -} \ No newline at end of file +} + +// GetAllTaskRunCountKeys 获取所有TaskRunCount键 +func (v *TaskRepoImpl) GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) { + return v.TaskRedisDao.GetAllTaskRunCountKeys(ctx) +} diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index 2c0cc4251..c443de1e3 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -80,7 +80,7 @@ struct DataReflowConfig { struct AutoEvaluateConfig { 1: required i64 evaluator_version_id (api.js_conv="true", go.tag='json:"evaluator_version_id"') 2: required i64 evaluator_id (api.js_conv="true", go.tag='json:"evaluator_id"') - 3: required list field_mappings + 3: required list field_mappings } // RunDetail @@ -98,7 +98,7 @@ struct BackfillDetail { 5: optional string last_span_page_token } -struct FieldMapping { +struct EvaluateFieldMapping { 1: required export_dataset.FieldSchema field_schema // 数据集字段约束 2: required string trace_field_key 3: required string trace_field_jsonpath From ab8e7038a3eb52cc2a34a993e9a7baa0d517f7e0 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 17:29:22 +0800 Subject: [PATCH 214/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 6 +++--- .../domain/task/taskexe/tracehub/scheduled_task.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index e352a6fe3..56eac26e3 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -107,7 +107,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) workspaceID := trigger.Task.GetWorkspaceID() session := getSession(ctx, trigger.Task) - var mapping []*task.FieldMapping + var mapping []*task.EvaluateFieldMapping for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { mapping = append(mapping, autoEvaluateConfig.FieldMappings...) } @@ -470,7 +470,7 @@ func getCategory(taskType task.TaskType) entity.DatasetCategory { } // todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*task.FieldMapping, +func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, evaluationSetSchema string) (turns []*eval_set.Turn) { turns = make([]*eval_set.Turn, 0, len(spans)) for _, span := range spans { @@ -535,7 +535,7 @@ func buildDatasetItem(ctx context.Context, span *loop_span.Span, i int, fieldMap } // todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.FieldMapping, +func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, evaluationSetSchema string) []*eval_set.FieldData { var fieldDatas []*eval_set.FieldData fieldDatas = append(fieldDatas, &eval_set.FieldData{ diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index da0e61456..baaeed845 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -118,7 +118,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { h.syncTaskRunCounts() } -// syncTaskRunCounts 全量同步TaskRunCount到数据库 +// syncTaskRunCounts 同步TaskRunCount到数据库 func (h *TraceHubServiceImpl) syncTaskRunCounts() { } From cd06232f320a454370f9193203ce07a87734c7d3 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 17:33:37 +0800 Subject: [PATCH 215/462] add wire --- .../observability/domain/task/taskexe/processor/factory.go | 5 +++-- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/factory.go b/backend/modules/observability/domain/task/taskexe/processor/factory.go index 58bdffcb5..df7b5b067 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/taskexe/processor/factory.go @@ -42,7 +42,8 @@ func InitProcessor( datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, - taskRepo repo.ITaskRepo) { - autoEvaluteProc = newAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo) + taskRepo repo.ITaskRepo, + taskRunRepo repo.ITaskRunRepo) { + autoEvaluteProc = newAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo) dataReflowProc = newDataReflowProcessor(datasetServiceProvider, taskRepo) } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 27f291c80..ffc00d644 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -45,7 +45,7 @@ func NewTraceHubImpl( tenantProvider tenant.ITenantProvider, buildHelper service.TraceFilterProcessorBuilder, ) (ITraceHubService, error) { - processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo) + processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo, tRunRepo) ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, @@ -298,4 +298,4 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S func (h *TraceHubServiceImpl) Close() { close(h.stopChan) -} \ No newline at end of file +} From 05a9c9d85c69b9ec0666ea2ede073bd31037df9f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 17 Sep 2025 18:02:12 +0800 Subject: [PATCH 216/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 8 +++++--- .../domain/task/taskexe/tracehub/callback.go | 7 +++++-- .../modules/observability/domain/task/taskexe/types.go | 10 +++++----- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 56eac26e3..9440bb587 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -132,7 +132,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * AllowPartialAdd: gptr.Of(true), ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), - Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID())}, + Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID()), "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, Session: session, }) if err != nil { @@ -648,6 +648,8 @@ func GetContentInfo(ctx context.Context, contentType common.ContentType, value s } func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, task *task.Task) error { + // 如果是历史回溯,立即创建taskrun + return nil } func (p *AutoEvaluteProcessor) OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error { @@ -657,9 +659,9 @@ func (p *AutoEvaluteProcessor) OnFinishChangeProcessor(ctx context.Context, task return nil } -func (p *AutoEvaluteProcessor) OnCreateTaskRunProcessor(ctx context.Context, task *task.TaskRun) error { +func (p *AutoEvaluteProcessor) OnCreateTaskRunProcessor(ctx context.Context, taskRun *task.TaskRun) error { return nil } -func (p *AutoEvaluteProcessor) OnFinishTaskRunProcessor(ctx context.Context, task *task.TaskRun) error { +func (p *AutoEvaluteProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task.TaskRun) error { return nil } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go index 9bcb2c438..468b4bf0e 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go @@ -62,14 +62,17 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr if event.EvaluatorResult.Correction == nil || event.EvaluatorResult == nil { return err } + if len(spans) == 0 { + return fmt.Errorf("span not found, span_id: %s", spanID) + } span := spans[0] annotations, err := h.traceRepo.ListAnnotations(ctx, &repo.ListAnnotationsParam{ Tenants: tenants, SpanID: spanID, TraceID: traceID, WorkspaceId: workspaceID, - StartAt: startTime - time.Second.Milliseconds(), - EndAt: startTime + time.Second.Milliseconds(), + StartAt: startTime - 5*time.Second.Milliseconds(), + EndAt: startTime + 5*time.Second.Milliseconds(), }) if err != nil { return err diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index a3517aa69..005764ea6 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -37,12 +37,12 @@ type Processor interface { OnChangeProcessor(ctx context.Context, task *task.Task, taskOp TaskOp) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 Finish(ctx context.Context, config any, trigger *Trigger) error //Finish - OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnCreateChangeProcessor 调用 evaluation 接口进行前期物料准备 - OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error //OnUpdateChangeProcessor 调用 evaluation 接口进行前期物料准备 - OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor 调用 evaluation 接口进行前期物料准备 + OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnCreateChangeProcessor + OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error //OnUpdateChangeProcessor + OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor - OnCreateTaskRunProcessor(ctx context.Context, task *task.TaskRun) error //OnCreateTaskRunProcessor 调用 evaluation 接口进行前期物料准备 - OnFinishTaskRunProcessor(ctx context.Context, task *task.TaskRun) error //OnFinishTaskRunProcessor 调用 evaluation 接口进行前期物料准备 + OnCreateTaskRunProcessor(ctx context.Context, task *task.TaskRun) error //OnCreateTaskRunProcessor + OnFinishTaskRunProcessor(ctx context.Context, task *task.TaskRun) error //OnFinishTaskRunProcessor } type ProcessorUnion interface { From 52986c3ef2a87f399925c0188b514f57ecd8d1ca Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 10:52:27 +0800 Subject: [PATCH 217/462] fix --- .../observability/domain/task/taskexe/tracehub/callback.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go index 468b4bf0e..16ed36d26 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go @@ -113,6 +113,7 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResults []*entity.OnlineExptTurnEvalResult, isSync bool) (err error) { for _, turn := range turnEvalResults { spanID := turn.Ext["span_id"] + traceID := turn.Ext["trace_id"] startTimeStr := turn.Ext["start_time"] startTime, err := strconv.ParseInt(startTimeStr, 10, 64) if err != nil { @@ -133,7 +134,7 @@ func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResu spans, err := h.getSpan(ctx, tenants, []string{spanID}, - "", + traceID, workspaceIDStr, startTime/1000-time.Second.Milliseconds(), startTime/1000+time.Second.Milliseconds(), From fa46e19aa1a9c70a42110542734a7ca931da9d4e Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 10:57:08 +0800 Subject: [PATCH 218/462] fix --- .../observability/domain/task/taskexe/tracehub/callback.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go index 16ed36d26..f84fd4cd6 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go @@ -136,9 +136,12 @@ func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResu []string{spanID}, traceID, workspaceIDStr, - startTime/1000-time.Second.Milliseconds(), - startTime/1000+time.Second.Milliseconds(), + startTime/1000-5*time.Second.Milliseconds(), + startTime/1000+5*time.Second.Milliseconds(), ) + if len(spans) == 0 { + return fmt.Errorf("span not found, span_id: %s", spanID) + } span := spans[0] annotation := &loop_span.Annotation{ SpanID: spanID, From b6e59365422dbebaa24380bcc26dc4fb4838c356 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 11:13:04 +0800 Subject: [PATCH 219/462] fix --- .../observability/domain/task/taskexe/tracehub/callback.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go index f84fd4cd6..bad67567e 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go @@ -148,6 +148,7 @@ func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResu TraceID: span.TraceID, WorkspaceID: workspaceIDStr, AnnotationType: loop_span.AnnotationTypeAutoEvaluate, + StartTime: time.UnixMicro(span.StartTime), Key: fmt.Sprintf("%d:%d", taskID, turn.EvaluatorVersionID), Value: loop_span.AnnotationValue{ ValueType: loop_span.AnnotationValueTypeDouble, From abffe671cbfa683593d65fa9c52f9d406fca8e2a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 11:20:09 +0800 Subject: [PATCH 220/462] fix --- .../observability/domain/task/taskexe/tracehub/callback.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go index bad67567e..6fc0a9258 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go @@ -159,6 +159,9 @@ func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResu CreatedAt: time.Now(), UpdatedAt: time.Now(), } + if err = annotation.GenID(); err != nil { + return err + } err = h.traceRepo.InsertAnnotations(ctx, &repo.InsertAnnotationParam{ Tenant: span.GetTenant(), From 1a040c0b904f5a19347c8e0cac623d8f5c7eaa4c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 11:30:49 +0800 Subject: [PATCH 221/462] add --- backend/infra/redis/commands.go | 3 +- backend/infra/redis/redis.go | 6 +- .../task/taskexe/processor/auto_evaluate.go | 2 +- .../task/taskexe/tracehub/scheduled_task.go | 146 ++++++++++++++++++ .../infra/repo/redis/dao/task.go | 44 ++++-- 5 files changed, 189 insertions(+), 12 deletions(-) diff --git a/backend/infra/redis/commands.go b/backend/infra/redis/commands.go index 2bbfec53d..e37913301 100644 --- a/backend/infra/redis/commands.go +++ b/backend/infra/redis/commands.go @@ -26,6 +26,7 @@ type SimpleCmdable interface { Eval(ctx context.Context, script string, keys []string, args ...any) *redis.Cmd Expire(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd Exists(ctx context.Context, keys ...string) *redis.IntCmd + Scan(ctx context.Context, cursor uint64, match string, count int64) *redis.ScanCmd } // StringCmdable copy methods we need in [redis.StringCmdable] @@ -70,4 +71,4 @@ type Pipeliner interface { Len() int Exec(ctx context.Context) ([]redis.Cmder, error) Discard() -} +} \ No newline at end of file diff --git a/backend/infra/redis/redis.go b/backend/infra/redis/redis.go index 9dbf8ee41..1781779c7 100644 --- a/backend/infra/redis/redis.go +++ b/backend/infra/redis/redis.go @@ -146,7 +146,11 @@ func (p *provider) Expire(ctx context.Context, key string, expiration time.Durat return p.cli.Expire(ctx, key, expiration) } +func (p *provider) Scan(ctx context.Context, cursor uint64, match string, count int64) *redis.ScanCmd { + return p.cli.Scan(ctx, cursor, match, count) +} + func (p *provider) Pipeline() Pipeliner { pipe := p.cli.Pipeline() return pipe -} +} \ No newline at end of file diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 9440bb587..954c8072b 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -132,7 +132,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * AllowPartialAdd: gptr.Of(true), ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), - Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID()), "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, + Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID()), "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, Session: session, }) if err != nil { diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index baaeed845..4837c8b48 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -5,6 +5,10 @@ package tracehub import ( "context" + "encoding/json" + "fmt" + "strconv" + "strings" "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" @@ -120,5 +124,147 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // syncTaskRunCounts 同步TaskRunCount到数据库 func (h *TraceHubServiceImpl) syncTaskRunCounts() { + ctx := context.Background() + logs.CtxInfo(ctx, "开始同步TaskRunCount数据到数据库") + + // 1. 获取所有TaskRunCount键 + keys, err := h.taskRepo.GetAllTaskRunCountKeys(ctx) + if err != nil { + logs.CtxError(ctx, "获取TaskRunCount键失败: %v", err) + return + } + + if len(keys) == 0 { + logs.CtxInfo(ctx, "没有找到TaskRunCount键,跳过同步") + return + } + logs.CtxInfo(ctx, "找到%d个TaskRunCount键,开始同步", len(keys)) + + // 2. 批量处理键 + batchSize := 50 // 每批处理50个键 + for i := 0; i < len(keys); i += batchSize { + end := i + batchSize + if end > len(keys) { + end = len(keys) + } + + batch := keys[i:end] + h.processBatch(ctx, batch) + } } + +// processBatch 批量处理TaskRunCount键 +func (h *TraceHubServiceImpl) processBatch(ctx context.Context, keys []string) { + // 1. 解析键并获取计数信息 + var taskRunInfos []*TaskRunCountInfo + + for _, key := range keys { + info, err := h.parseTaskRunCountKey(ctx, key) + if err != nil { + logs.CtxWarn(ctx, "解析键失败: key=%s, err=%v", key, err) + continue + } + + // 获取Redis中的计数值 + count, err := h.taskRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) + if err != nil { + logs.CtxWarn(ctx, "获取TaskRunCount失败: taskID=%d, taskRunID=%d, err=%v", + info.TaskID, info.TaskRunID, err) + continue + } + + // 如果计数为-1,表示Redis中不存在该键,跳过 + if count == -1 { + logs.CtxDebug(ctx, "Redis中不存在键: taskID=%d, taskRunID=%d", info.TaskID, info.TaskRunID) + continue + } + + info.Count = count + taskRunInfos = append(taskRunInfos, info) + } + + // 2. 批量更新数据库 + for _, info := range taskRunInfos { + if err := h.syncSingleTaskRunCount(ctx, info); err != nil { + logs.CtxError(ctx, "同步TaskRunCount失败: taskID=%d, taskRunID=%d, count=%d, err=%v", + info.TaskID, info.TaskRunID, info.Count, err) + } else { + logs.CtxDebug(ctx, "同步TaskRunCount成功: taskID=%d, taskRunID=%d, count=%d", + info.TaskID, info.TaskRunID, info.Count) + } + } +} + +// parseTaskRunCountKey 解析TaskRunCount键获取taskID和taskRunID +func (h *TraceHubServiceImpl) parseTaskRunCountKey(ctx context.Context, key string) (*TaskRunCountInfo, error) { + // 键格式: count_{taskID}_{taskRunID} + parts := strings.Split(key, "_") + if len(parts) != 3 { + return nil, fmt.Errorf("invalid key format: %s", key) + } + + taskID, err := strconv.ParseInt(parts[1], 10, 64) + if err != nil { + return nil, fmt.Errorf("invalid taskID in key %s: %v", key, err) + } + + taskRunID, err := strconv.ParseInt(parts[2], 10, 64) + if err != nil { + return nil, fmt.Errorf("invalid taskRunID in key %s: %v", key, err) + } + + return &TaskRunCountInfo{ + TaskID: taskID, + TaskRunID: taskRunID, + KeyType: "taskrun", + }, nil +} + +// syncSingleTaskRunCount 同步单个TaskRunCount到数据库 +func (h *TraceHubServiceImpl) syncSingleTaskRunCount(ctx context.Context, info *TaskRunCountInfo) error { + // 获取TaskRun记录 + taskRun, err := h.taskRunRepo.GetTaskRun(ctx, info.TaskRunID, nil, nil) + if err != nil { + return fmt.Errorf("获取TaskRun记录失败: taskRunID=%d, err=%v", info.TaskRunID, err) + } + + if taskRun == nil { + return fmt.Errorf("TaskRun记录不存在: taskRunID=%d", info.TaskRunID) + } + + // 处理RunDetail + var runDetail *task.RunDetail + if taskRun.RunDetail != nil && *taskRun.RunDetail != "" { + runDetail = &task.RunDetail{} + if err := json.Unmarshal([]byte(*taskRun.RunDetail), runDetail); err != nil { + logs.CtxWarn(ctx, "反序列化RunDetail失败,创建新的: taskRunID=%d, err=%v", info.TaskRunID, err) + runDetail = &task.RunDetail{} + } + } else { + runDetail = &task.RunDetail{} + } + + // 更新TotalCount + runDetail.TotalCount = &info.Count + + // 序列化RunDetail + runDetailJSON, err := json.Marshal(runDetail) + if err != nil { + return fmt.Errorf("序列化RunDetail失败: taskRunID=%d, err=%v", info.TaskRunID, err) + } + + // 更新数据库 + updateMap := map[string]interface{}{ + "run_detail": string(runDetailJSON), + "updated_at": time.Now(), + } + + err = h.taskRunRepo.UpdateTaskRunWithOCC(ctx, info.TaskRunID, taskRun.WorkspaceID, updateMap) + if err != nil { + return fmt.Errorf("更新TaskRun记录失败: taskRunID=%d, err=%v", info.TaskRunID, err) + } + + logs.CtxInfo(ctx, "成功更新TaskRun的run_detail: taskRunID=%d, totalCount=%d", info.TaskRunID, info.Count) + return nil +} \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 3486413c7..52331dc3b 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -682,14 +682,40 @@ func (p *TaskDAOImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID in } // GetAllTaskRunCountKeys 获取所有TaskRunCount键 -// 注意:由于Cmdable接口限制,这里使用一个简化的实现 -// 在实际生产环境中,应该通过其他方式(如维护键列表)来实现 func (p *TaskDAOImpl) GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) { - // 由于Cmdable接口没有Keys或Scan方法,这里返回空列表 - // 实际实现中,可能需要: - // 1. 在写入时维护一个键列表 - // 2. 使用更高级的Redis客户端接口 - // 3. 或者通过其他方式来获取键列表 - logs.CtxWarn(ctx, "GetAllTaskRunCountKeys not fully implemented due to Cmdable interface limitations") - return []string{}, nil + pattern := "count_*_*" // 匹配 count_{taskID}_{taskRunID} 格式的键 + var allKeys []string + + // 使用SCAN命令遍历匹配的键 + iter := p.cmdable.Scan(ctx, 0, pattern, 100).Iterator() + for iter.Next(ctx) { + key := iter.Val() + // 验证键格式是否为TaskRunCount键(包含两个下划线,表示taskID和taskRunID) + if p.isTaskRunCountKey(key) { + allKeys = append(allKeys, key) + } + } + + if err := iter.Err(); err != nil { + logs.CtxError(ctx, "scan task run count keys failed", "pattern", pattern, "err", err) + return nil, errorx.Wrapf(err, "scan task run count keys with pattern: %s", pattern) + } + + logs.CtxInfo(ctx, "found %d task run count keys", len(allKeys)) + return allKeys, nil +} + +// isTaskRunCountKey 检查键是否为TaskRunCount键格式 +func (p *TaskDAOImpl) isTaskRunCountKey(key string) bool { + // TaskRunCount键格式: count_{taskID}_{taskRunID} + // TaskCount键格式: count_{taskID} + // 通过下划线数量来区分 + underscoreCount := 0 + for _, char := range key { + if char == '_' { + underscoreCount++ + } + } + // TaskRunCount键应该有2个下划线 + return underscoreCount == 2 } \ No newline at end of file From 7e31a4556366ff3ba835d0f319eb94509fb9dd5d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 12:08:28 +0800 Subject: [PATCH 222/462] add --- .../observability/domain/task/repo/task.go | 6 ++ .../task/taskexe/processor/auto_evaluate.go | 2 +- .../task/taskexe/processor/data_reflow.go | 2 +- .../domain/task/taskexe/tracehub/callback.go | 35 +++++++++++ .../task/taskexe/tracehub/scheduled_task.go | 27 +++++++- .../infra/repo/redis/dao/task_run.go | 62 +++++++++++++++++++ .../modules/observability/infra/repo/task.go | 40 +++++++++--- 7 files changed, 162 insertions(+), 12 deletions(-) diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index ce10b7dc5..713805201 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -36,6 +36,12 @@ type ITaskRepo interface { GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error + + // task run success/fail count + IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error + IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error + GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) + GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) // ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 954c8072b..a295bb0ff 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -132,7 +132,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * AllowPartialAdd: gptr.Of(true), ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), - Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID()), "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, + Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID()), "task_run_id": strconvh.FormatInt64(taskRun.ID), "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, Session: session, }) if err != nil { diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 031e8dc5c..6352c5e72 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -73,7 +73,7 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t mapping = ConvertFieldMappingsDTO2DO(dataReflowConfig.FieldMappings) } - category := getCategory(cfg.TaskType) + category := entity.DatasetCategory_General successItems, _, _ := buildDatasetItems(ctx, []*loop_span.Span{trigger.Span}, mapping, workspaceID, *trigger.Task.ID, entity.NewDataset( taskRun.TaskRunConfig.GetDataReflowRunConfig().GetDatasetID(), workspaceID, diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go index 6fc0a9258..6110faf5f 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/callback.go @@ -143,6 +143,15 @@ func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResu return fmt.Errorf("span not found, span_id: %s", spanID) } span := spans[0] + + // 新增:根据Status写Redis计数 + err = h.updateTaskRunStatusCount(ctx, taskID, turn) + if err != nil { + logs.CtxWarn(ctx, "更新TaskRun状态计数失败: taskID=%d, status=%d, err=%v", + taskID, turn.Status, err) + // 不中断流程,继续处理 + } + annotation := &loop_span.Annotation{ SpanID: spanID, TraceID: span.TraceID, @@ -221,3 +230,29 @@ func (h *TraceHubServiceImpl) getSpan(ctx context.Context, tenants []string, spa } return res.Spans, nil } + +// updateTaskRunStatusCount 根据Status更新Redis计数 +func (h *TraceHubServiceImpl) updateTaskRunStatusCount(ctx context.Context, taskID int64, turn *entity.OnlineExptTurnEvalResult) error { + // 从Ext中获取taskRunID + taskRunIDStr := turn.Ext["task_run_id"] + if taskRunIDStr == "" { + return fmt.Errorf("task_run_id not found in ext") + } + + taskRunID, err := strconv.ParseInt(taskRunIDStr, 10, 64) + if err != nil { + return fmt.Errorf("invalid task_run_id: %s, err: %v", taskRunIDStr, err) + } + + // 根据Status增加相应计数 + switch turn.Status { + case entity.EvaluatorRunStatus_Success: + return h.taskRepo.IncrTaskRunSuccessCount(ctx, taskID, taskRunID) + case entity.EvaluatorRunStatus_Fail: + return h.taskRepo.IncrTaskRunFailCount(ctx, taskID, taskRunID) + default: + logs.CtxDebug(ctx, "未知的评估状态,跳过计数: taskID=%d, taskRunID=%d, status=%d", + taskID, taskRunID, turn.Status) + return nil + } +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 4837c8b48..59c160c31 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -248,6 +248,30 @@ func (h *TraceHubServiceImpl) syncSingleTaskRunCount(ctx context.Context, info * // 更新TotalCount runDetail.TotalCount = &info.Count + // 获取并更新成功计数 + successCount, err := h.taskRepo.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) + if err != nil { + logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败: taskID=%d, taskRunID=%d, err=%v", + info.TaskID, info.TaskRunID, err) + } else if successCount >= 0 { + // 只有当获取成功且计数>=0时才更新 + runDetail.SuccessCount = &successCount + logs.CtxDebug(ctx, "成功获取SuccessCount: taskID=%d, taskRunID=%d, count=%d", + info.TaskID, info.TaskRunID, successCount) + } + + // 获取并更新失败计数 + failedCount, err := h.taskRepo.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) + if err != nil { + logs.CtxWarn(ctx, "获取TaskRunFailCount失败: taskID=%d, taskRunID=%d, err=%v", + info.TaskID, info.TaskRunID, err) + } else if failedCount >= 0 { + // 只有当获取成功且计数>=0时才更新 + runDetail.FailedCount = &failedCount + logs.CtxDebug(ctx, "成功获取FailedCount: taskID=%d, taskRunID=%d, count=%d", + info.TaskID, info.TaskRunID, failedCount) + } + // 序列化RunDetail runDetailJSON, err := json.Marshal(runDetail) if err != nil { @@ -265,6 +289,7 @@ func (h *TraceHubServiceImpl) syncSingleTaskRunCount(ctx context.Context, info * return fmt.Errorf("更新TaskRun记录失败: taskRunID=%d, err=%v", info.TaskRunID, err) } - logs.CtxInfo(ctx, "成功更新TaskRun的run_detail: taskRunID=%d, totalCount=%d", info.TaskRunID, info.Count) + logs.CtxInfo(ctx, "成功更新TaskRun的run_detail: taskRunID=%d, totalCount=%d, successCount=%v, failedCount=%v", + info.TaskRunID, info.Count, runDetail.SuccessCount, runDetail.FailedCount) return nil } \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/redis/dao/task_run.go b/backend/modules/observability/infra/repo/redis/dao/task_run.go index ca4428a94..49fec8515 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task_run.go +++ b/backend/modules/observability/infra/repo/redis/dao/task_run.go @@ -38,6 +38,12 @@ type ITaskRunDAO interface { SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error + // 成功/失败计数操作 + IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error + IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error + GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) + GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) + // 对象列表缓存操作 GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) SetObjListWithTaskRun(ctx context.Context, spaceList, botList []string, ttl time.Duration) error @@ -72,6 +78,14 @@ func (q *TaskRunDAOImpl) makeTaskRunCountKey(taskID, taskRunID int64) string { return fmt.Sprintf("taskrun:count:%d:%d", taskID, taskRunID) } +func (q *TaskRunDAOImpl) makeTaskRunSuccessCountKey(taskID, taskRunID int64) string { + return fmt.Sprintf("taskrun:success_count:%d:%d", taskID, taskRunID) +} + +func (q *TaskRunDAOImpl) makeTaskRunFailCountKey(taskID, taskRunID int64) string { + return fmt.Sprintf("taskrun:fail_count:%d:%d", taskID, taskRunID) +} + func (q *TaskRunDAOImpl) makeObjListWithTaskRunKey() string { return "taskrun:obj_list" } @@ -300,4 +314,52 @@ func (p *TaskRunDAOImpl) DeleteObjListWithTaskRun(ctx context.Context) error { return errorx.Wrapf(err, "redis delete obj list with taskrun key: %v", key) } return nil +} + +// 成功/失败计数操作实现 + +// IncrTaskRunSuccessCount 增加成功计数 +func (p *TaskRunDAOImpl) IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error { + key := p.makeTaskRunSuccessCountKey(taskID, taskRunID) + if err := p.cmdable.Incr(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis incr taskrun success count failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis incr taskrun success count key: %v", key) + } + return nil +} + +// IncrTaskRunFailCount 增加失败计数 +func (p *TaskRunDAOImpl) IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error { + key := p.makeTaskRunFailCountKey(taskID, taskRunID) + if err := p.cmdable.Incr(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis incr taskrun fail count failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis incr taskrun fail count key: %v", key) + } + return nil +} + +// GetTaskRunSuccessCount 获取成功计数 +func (p *TaskRunDAOImpl) GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { + key := p.makeTaskRunSuccessCountKey(taskID, taskRunID) + got, err := p.cmdable.Get(ctx, key).Int64() + if err != nil { + if redis.IsNilError(err) { + return 0, nil // 缓存未命中,返回0 + } + return 0, errorx.Wrapf(err, "redis get taskrun success count fail, key: %v", key) + } + return got, nil +} + +// GetTaskRunFailCount 获取失败计数 +func (p *TaskRunDAOImpl) GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { + key := p.makeTaskRunFailCountKey(taskID, taskRunID) + got, err := p.cmdable.Get(ctx, key).Int64() + if err != nil { + if redis.IsNilError(err) { + return 0, nil // 缓存未命中,返回0 + } + return 0, errorx.Wrapf(err, "redis get taskrun fail count fail, key: %v", key) + } + return got, nil } \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 25aca6d85..89de4f81d 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -19,20 +19,22 @@ import ( "github.com/coze-dev/coze-loop/backend/pkg/logs" ) -func NewTaskRepoImpl(TaskDao mysql.ITaskDao, idGenerator idgen.IIDGenerator, taskRedisDao dao.ITaskDAO, taskRunDao mysql.ITaskRunDao) repo.ITaskRepo { +func NewTaskRepoImpl(TaskDao mysql.ITaskDao, idGenerator idgen.IIDGenerator, taskRedisDao dao.ITaskDAO, taskRunDao mysql.ITaskRunDao, taskRunRedisDao dao.ITaskRunDAO) repo.ITaskRepo { return &TaskRepoImpl{ - TaskDao: TaskDao, - idGenerator: idGenerator, - TaskRedisDao: taskRedisDao, - TaskRunDao: taskRunDao, + TaskDao: TaskDao, + idGenerator: idGenerator, + TaskRedisDao: taskRedisDao, + TaskRunDao: taskRunDao, + TaskRunRedisDao: taskRunRedisDao, } } type TaskRepoImpl struct { - TaskDao mysql.ITaskDao - TaskRunDao mysql.ITaskRunDao - TaskRedisDao dao.ITaskDAO - idGenerator idgen.IIDGenerator + TaskDao mysql.ITaskDao + TaskRunDao mysql.ITaskRunDao + TaskRedisDao dao.ITaskDAO + TaskRunRedisDao dao.ITaskRunDAO + idGenerator idgen.IIDGenerator } // 缓存 TTL 常量 @@ -460,3 +462,23 @@ func (v *TaskRepoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, works func (v *TaskRepoImpl) GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) { return v.TaskRedisDao.GetAllTaskRunCountKeys(ctx) } + +// IncrTaskRunSuccessCount 增加TaskRun成功计数 +func (v *TaskRepoImpl) IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error { + return v.TaskRunRedisDao.IncrTaskRunSuccessCount(ctx, taskID, taskRunID) +} + +// IncrTaskRunFailCount 增加TaskRun失败计数 +func (v *TaskRepoImpl) IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error { + return v.TaskRunRedisDao.IncrTaskRunFailCount(ctx, taskID, taskRunID) +} + +// GetTaskRunSuccessCount 获取TaskRun成功计数 +func (v *TaskRepoImpl) GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { + return v.TaskRunRedisDao.GetTaskRunSuccessCount(ctx, taskID, taskRunID) +} + +// GetTaskRunFailCount 获取TaskRun失败计数 +func (v *TaskRepoImpl) GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { + return v.TaskRunRedisDao.GetTaskRunFailCount(ctx, taskID, taskRunID) +} \ No newline at end of file From e084e30e43d57d034c38d66502b155cb0c69140c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 12:11:38 +0800 Subject: [PATCH 223/462] add --- .../observability/domain/task/taskexe/processor/data_reflow.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 6352c5e72..99894146d 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -63,6 +63,7 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.IncrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) return nil } ctx = session.WithCtxUser(ctx, &session.User{ID: *trigger.Task.BaseInfo.CreatedBy.UserID}) From 9fc2494928d51f6dbacc6848886ca3d94b162b18 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 14:02:17 +0800 Subject: [PATCH 224/462] add wire --- backend/modules/observability/application/wire_gen.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index bf1e66076..e107d1059 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -95,7 +95,8 @@ func InitTraceApplication(db2 db.Provider, ckDb ck.Provider, redis2 redis.Cmdabl iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) - iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao) + iTaskRunDAO := dao.NewTaskRunDAO(redis2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao, iTaskRunDAO) iTraceService, err := service.NewTraceServiceImpl(iTraceRepo, iTraceConfig, iTraceProducer, iAnnotationProducer, iTraceMetrics, traceFilterProcessorBuilder, iTenantProvider, iEvaluatorRPCAdapter, iTaskRepo) if err != nil { return nil, err @@ -151,7 +152,8 @@ func InitOpenAPIApplication(mqFactory mq.IFactory, configFactory conf.IConfigLoa iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) - iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao) + iTaskRunDAO := dao.NewTaskRunDAO(redis2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao, iTaskRunDAO) iTraceService, err := service.NewTraceServiceImpl(iTraceRepo, iTraceConfig, iTraceProducer, iAnnotationProducer, iTraceMetrics, traceFilterProcessorBuilder, iTenantProvider, iEvaluatorRPCAdapter, iTaskRepo) if err != nil { return nil, err @@ -196,8 +198,8 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) - iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao) iTaskRunDAO := dao.NewTaskRunDAO(redis2) + iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao, iTaskRunDAO) iTaskRunRepo := repo.NewTaskRunRepoImpl(iTaskRunDao, idgen2, iTaskRunDAO) iUserProvider := user.NewUserRPCProvider(userClient) iConfigLoader, err := NewTraceConfigLoader(configFactory) From 0ba56b004601d7ea001e884b26f9062600ad244b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 14:22:03 +0800 Subject: [PATCH 225/462] add debug log --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index ffc00d644..0d9aacae1 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -244,7 +244,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S //获取对应的taskcount和subtaskcount taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, taskRunConfig.ID) - + logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) if taskRunConfig == nil { logs.CtxWarn(ctx, "task run config not found, task_id=%d", sub.taskID) if err := sub.Creative(ctx); err != nil { From ea14dd47027bd491eecfbab509100551474a56ac Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 14:26:48 +0800 Subject: [PATCH 226/462] fix --- .../domain/task/taskexe/tracehub/scheduled_task.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 59c160c31..527b1f4f1 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -42,6 +42,7 @@ func (h *TraceHubServiceImpl) startScheduledTask() { case <-h.ticker.C: // 执行定时任务 h.runScheduledTask() + //h.syncTaskRunCounts() case <-h.stopChan: // 停止定时任务 h.ticker.Stop() @@ -119,7 +120,6 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } - h.syncTaskRunCounts() } // syncTaskRunCounts 同步TaskRunCount到数据库 @@ -251,24 +251,24 @@ func (h *TraceHubServiceImpl) syncSingleTaskRunCount(ctx context.Context, info * // 获取并更新成功计数 successCount, err := h.taskRepo.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) if err != nil { - logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败: taskID=%d, taskRunID=%d, err=%v", + logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败: taskID=%d, taskRunID=%d, err=%v", info.TaskID, info.TaskRunID, err) } else if successCount >= 0 { // 只有当获取成功且计数>=0时才更新 runDetail.SuccessCount = &successCount - logs.CtxDebug(ctx, "成功获取SuccessCount: taskID=%d, taskRunID=%d, count=%d", + logs.CtxDebug(ctx, "成功获取SuccessCount: taskID=%d, taskRunID=%d, count=%d", info.TaskID, info.TaskRunID, successCount) } // 获取并更新失败计数 failedCount, err := h.taskRepo.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) if err != nil { - logs.CtxWarn(ctx, "获取TaskRunFailCount失败: taskID=%d, taskRunID=%d, err=%v", + logs.CtxWarn(ctx, "获取TaskRunFailCount失败: taskID=%d, taskRunID=%d, err=%v", info.TaskID, info.TaskRunID, err) } else if failedCount >= 0 { // 只有当获取成功且计数>=0时才更新 runDetail.FailedCount = &failedCount - logs.CtxDebug(ctx, "成功获取FailedCount: taskID=%d, taskRunID=%d, count=%d", + logs.CtxDebug(ctx, "成功获取FailedCount: taskID=%d, taskRunID=%d, count=%d", info.TaskID, info.TaskRunID, failedCount) } @@ -289,7 +289,7 @@ func (h *TraceHubServiceImpl) syncSingleTaskRunCount(ctx context.Context, info * return fmt.Errorf("更新TaskRun记录失败: taskRunID=%d, err=%v", info.TaskRunID, err) } - logs.CtxInfo(ctx, "成功更新TaskRun的run_detail: taskRunID=%d, totalCount=%d, successCount=%v, failedCount=%v", + logs.CtxInfo(ctx, "成功更新TaskRun的run_detail: taskRunID=%d, totalCount=%d, successCount=%v, failedCount=%v", info.TaskRunID, info.Count, runDetail.SuccessCount, runDetail.FailedCount) return nil -} \ No newline at end of file +} From 9910971ead0903c3d83f7586ef8548d44bd5795d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 14:31:11 +0800 Subject: [PATCH 227/462] fix --- .../domain/task/taskexe/tracehub/scheduled_task.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 527b1f4f1..62d129ed3 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -42,7 +42,7 @@ func (h *TraceHubServiceImpl) startScheduledTask() { case <-h.ticker.C: // 执行定时任务 h.runScheduledTask() - //h.syncTaskRunCounts() + h.syncTaskRunCounts() case <-h.stopChan: // 停止定时任务 h.ticker.Stop() From f8a95df078a3276e788ff68747bd125b9d97664c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 14:54:43 +0800 Subject: [PATCH 228/462] fix update --- .../domain/task/service/task_service.go | 4 +- .../task/taskexe/tracehub/scheduled_task.go | 175 +----------------- 2 files changed, 5 insertions(+), 174 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index c6cecb880..bc1eae229 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -197,7 +197,9 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e taskPO.EffectiveTime = ptr.Of(tconv.ToJSONString(ctx, validEffectiveTime)) } if req.SampleRate != nil { - taskPO.Sampler = ptr.Of(tconv.ToJSONString(ctx, req.SampleRate)) + sampler := tconv.SamplerPO2DO(ctx, taskPO.Sampler) + sampler.SampleRate = req.SampleRate + taskPO.Sampler = ptr.Of(tconv.ToJSONString(ctx, sampler)) } if req.TaskStatus != nil { validTaskStatus, err := tconv.CheckTaskStatus(ctx, *req.TaskStatus, taskPO.TaskStatus) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 62d129ed3..d97b93a55 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -5,10 +5,6 @@ package tracehub import ( "context" - "encoding/json" - "fmt" - "strconv" - "strings" "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" @@ -42,7 +38,7 @@ func (h *TraceHubServiceImpl) startScheduledTask() { case <-h.ticker.C: // 执行定时任务 h.runScheduledTask() - h.syncTaskRunCounts() + //h.syncTaskRunCounts() case <-h.stopChan: // 停止定时任务 h.ticker.Stop() @@ -124,172 +120,5 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // syncTaskRunCounts 同步TaskRunCount到数据库 func (h *TraceHubServiceImpl) syncTaskRunCounts() { - ctx := context.Background() - logs.CtxInfo(ctx, "开始同步TaskRunCount数据到数据库") - - // 1. 获取所有TaskRunCount键 - keys, err := h.taskRepo.GetAllTaskRunCountKeys(ctx) - if err != nil { - logs.CtxError(ctx, "获取TaskRunCount键失败: %v", err) - return - } - - if len(keys) == 0 { - logs.CtxInfo(ctx, "没有找到TaskRunCount键,跳过同步") - return - } - - logs.CtxInfo(ctx, "找到%d个TaskRunCount键,开始同步", len(keys)) - - // 2. 批量处理键 - batchSize := 50 // 每批处理50个键 - for i := 0; i < len(keys); i += batchSize { - end := i + batchSize - if end > len(keys) { - end = len(keys) - } - - batch := keys[i:end] - h.processBatch(ctx, batch) - } -} - -// processBatch 批量处理TaskRunCount键 -func (h *TraceHubServiceImpl) processBatch(ctx context.Context, keys []string) { - // 1. 解析键并获取计数信息 - var taskRunInfos []*TaskRunCountInfo - - for _, key := range keys { - info, err := h.parseTaskRunCountKey(ctx, key) - if err != nil { - logs.CtxWarn(ctx, "解析键失败: key=%s, err=%v", key, err) - continue - } - - // 获取Redis中的计数值 - count, err := h.taskRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) - if err != nil { - logs.CtxWarn(ctx, "获取TaskRunCount失败: taskID=%d, taskRunID=%d, err=%v", - info.TaskID, info.TaskRunID, err) - continue - } - - // 如果计数为-1,表示Redis中不存在该键,跳过 - if count == -1 { - logs.CtxDebug(ctx, "Redis中不存在键: taskID=%d, taskRunID=%d", info.TaskID, info.TaskRunID) - continue - } - - info.Count = count - taskRunInfos = append(taskRunInfos, info) - } - - // 2. 批量更新数据库 - for _, info := range taskRunInfos { - if err := h.syncSingleTaskRunCount(ctx, info); err != nil { - logs.CtxError(ctx, "同步TaskRunCount失败: taskID=%d, taskRunID=%d, count=%d, err=%v", - info.TaskID, info.TaskRunID, info.Count, err) - } else { - logs.CtxDebug(ctx, "同步TaskRunCount成功: taskID=%d, taskRunID=%d, count=%d", - info.TaskID, info.TaskRunID, info.Count) - } - } -} - -// parseTaskRunCountKey 解析TaskRunCount键获取taskID和taskRunID -func (h *TraceHubServiceImpl) parseTaskRunCountKey(ctx context.Context, key string) (*TaskRunCountInfo, error) { - // 键格式: count_{taskID}_{taskRunID} - parts := strings.Split(key, "_") - if len(parts) != 3 { - return nil, fmt.Errorf("invalid key format: %s", key) - } - - taskID, err := strconv.ParseInt(parts[1], 10, 64) - if err != nil { - return nil, fmt.Errorf("invalid taskID in key %s: %v", key, err) - } - - taskRunID, err := strconv.ParseInt(parts[2], 10, 64) - if err != nil { - return nil, fmt.Errorf("invalid taskRunID in key %s: %v", key, err) - } - - return &TaskRunCountInfo{ - TaskID: taskID, - TaskRunID: taskRunID, - KeyType: "taskrun", - }, nil -} - -// syncSingleTaskRunCount 同步单个TaskRunCount到数据库 -func (h *TraceHubServiceImpl) syncSingleTaskRunCount(ctx context.Context, info *TaskRunCountInfo) error { - // 获取TaskRun记录 - taskRun, err := h.taskRunRepo.GetTaskRun(ctx, info.TaskRunID, nil, nil) - if err != nil { - return fmt.Errorf("获取TaskRun记录失败: taskRunID=%d, err=%v", info.TaskRunID, err) - } - - if taskRun == nil { - return fmt.Errorf("TaskRun记录不存在: taskRunID=%d", info.TaskRunID) - } - - // 处理RunDetail - var runDetail *task.RunDetail - if taskRun.RunDetail != nil && *taskRun.RunDetail != "" { - runDetail = &task.RunDetail{} - if err := json.Unmarshal([]byte(*taskRun.RunDetail), runDetail); err != nil { - logs.CtxWarn(ctx, "反序列化RunDetail失败,创建新的: taskRunID=%d, err=%v", info.TaskRunID, err) - runDetail = &task.RunDetail{} - } - } else { - runDetail = &task.RunDetail{} - } - - // 更新TotalCount - runDetail.TotalCount = &info.Count - - // 获取并更新成功计数 - successCount, err := h.taskRepo.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) - if err != nil { - logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败: taskID=%d, taskRunID=%d, err=%v", - info.TaskID, info.TaskRunID, err) - } else if successCount >= 0 { - // 只有当获取成功且计数>=0时才更新 - runDetail.SuccessCount = &successCount - logs.CtxDebug(ctx, "成功获取SuccessCount: taskID=%d, taskRunID=%d, count=%d", - info.TaskID, info.TaskRunID, successCount) - } - - // 获取并更新失败计数 - failedCount, err := h.taskRepo.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) - if err != nil { - logs.CtxWarn(ctx, "获取TaskRunFailCount失败: taskID=%d, taskRunID=%d, err=%v", - info.TaskID, info.TaskRunID, err) - } else if failedCount >= 0 { - // 只有当获取成功且计数>=0时才更新 - runDetail.FailedCount = &failedCount - logs.CtxDebug(ctx, "成功获取FailedCount: taskID=%d, taskRunID=%d, count=%d", - info.TaskID, info.TaskRunID, failedCount) - } - - // 序列化RunDetail - runDetailJSON, err := json.Marshal(runDetail) - if err != nil { - return fmt.Errorf("序列化RunDetail失败: taskRunID=%d, err=%v", info.TaskRunID, err) - } - - // 更新数据库 - updateMap := map[string]interface{}{ - "run_detail": string(runDetailJSON), - "updated_at": time.Now(), - } - - err = h.taskRunRepo.UpdateTaskRunWithOCC(ctx, info.TaskRunID, taskRun.WorkspaceID, updateMap) - if err != nil { - return fmt.Errorf("更新TaskRun记录失败: taskRunID=%d, err=%v", info.TaskRunID, err) - } - - logs.CtxInfo(ctx, "成功更新TaskRun的run_detail: taskRunID=%d, totalCount=%d, successCount=%v, failedCount=%v", - info.TaskRunID, info.Count, runDetail.SuccessCount, runDetail.FailedCount) - return nil + // 同步非终态任务的taskruncount、taskrunscesscount、taskrunfailcount到数据库 } From 2e4f0c167957026d15d95683f358014fb36b3503 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 15:21:33 +0800 Subject: [PATCH 229/462] add count --- .../task/taskexe/tracehub/scheduled_task.go | 157 +++++++++++++++++- 1 file changed, 151 insertions(+), 6 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index d97b93a55..aad311be3 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -5,20 +5,23 @@ package tracehub import ( "context" + "encoding/json" "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" "github.com/coze-dev/coze-loop/backend/pkg/logs" + "github.com/pkg/errors" ) // TaskRunCountInfo TaskRunCount信息结构 type TaskRunCountInfo struct { - TaskID int64 - TaskRunID int64 - Count int64 - KeyType string // "task" 或 "taskrun" + TaskID int64 + TaskRunID int64 + TaskRunCount int64 + TaskRunSuccCount int64 + TaskRunFailCount int64 } // SyncMetrics 同步统计指标 @@ -38,7 +41,7 @@ func (h *TraceHubServiceImpl) startScheduledTask() { case <-h.ticker.C: // 执行定时任务 h.runScheduledTask() - //h.syncTaskRunCounts() + h.syncTaskRunCounts() case <-h.stopChan: // 停止定时任务 h.ticker.Stop() @@ -120,5 +123,147 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // syncTaskRunCounts 同步TaskRunCount到数据库 func (h *TraceHubServiceImpl) syncTaskRunCounts() { - // 同步非终态任务的taskruncount、taskrunscesscount、taskrunfailcount到数据库 + ctx := context.Background() + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) + ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + + logs.CtxInfo(ctx, "开始同步TaskRunCounts到数据库...") + + // 1. 获取非终态任务列表 + taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) + if err != nil { + logs.CtxError(ctx, "获取非终态任务列表失败", "err", err) + return + } + + if len(taskPOs) == 0 { + logs.CtxInfo(ctx, "没有非终态任务需要同步") + return + } + + logs.CtxInfo(ctx, "获取到非终态任务数量", "count", len(taskPOs)) + + // 2. 收集所有需要同步的TaskRun信息 + var taskRunInfos []*TaskRunCountInfo + for _, taskPO := range taskPOs { + if len(taskPO.TaskRuns) == 0 { + continue + } + + for _, taskRun := range taskPO.TaskRuns { + taskRunInfos = append(taskRunInfos, &TaskRunCountInfo{ + TaskID: taskPO.ID, + TaskRunID: taskRun.ID, + }) + } + } + + if len(taskRunInfos) == 0 { + logs.CtxInfo(ctx, "没有TaskRun需要同步") + return + } + + logs.CtxInfo(ctx, "需要同步的TaskRun数量", "count", len(taskRunInfos)) + + // 3. 批量处理TaskRun,每批50个 + batchSize := 50 + for i := 0; i < len(taskRunInfos); i += batchSize { + end := i + batchSize + if end > len(taskRunInfos) { + end = len(taskRunInfos) + } + + batch := taskRunInfos[i:end] + h.processBatch(ctx, batch) + } +} + +// processBatch 批量处理TaskRun计数同步 +func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRunCountInfo) { + logs.CtxInfo(ctx, "开始处理批次", "batchSize", len(batch)) + + // 1. 批量读取Redis计数数据 + for _, info := range batch { + // 读取taskruncount + count, err := h.taskRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) + if err != nil { + logs.CtxWarn(ctx, "获取TaskRunCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) + count = 0 + } + info.TaskRunCount = count + + // 读取taskrunscesscount + successCount, err := h.taskRepo.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) + if err != nil { + logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) + successCount = 0 + } + info.TaskRunSuccCount = successCount + + // 读取taskrunfailcount + failCount, err := h.taskRepo.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) + if err != nil { + logs.CtxWarn(ctx, "获取TaskRunFailCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) + failCount = 0 + } + info.TaskRunFailCount = failCount + + logs.CtxDebug(ctx, "读取计数数据", + "taskID", info.TaskID, + "taskRunID", info.TaskRunID, + "runCount", info.TaskRunCount, + "successCount", info.TaskRunSuccCount, + "failCount", info.TaskRunFailCount) + } + + // 2. 批量更新数据库 + for _, info := range batch { + err := h.updateTaskRunDetail(ctx, info) + if err != nil { + logs.CtxError(ctx, "更新TaskRun详情失败", + "taskID", info.TaskID, + "taskRunID", info.TaskRunID, + "err", err) + } else { + logs.CtxDebug(ctx, "更新TaskRun详情成功", + "taskID", info.TaskID, + "taskRunID", info.TaskRunID) + } + } + + logs.CtxInfo(ctx, "批次处理完成", + "batchSize", len(batch)) +} + +// updateTaskRunDetail 更新TaskRun的run_detail字段 +func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *TaskRunCountInfo) error { + // 构建run_detail JSON数据 + runDetail := map[string]interface{}{ + "task_run_count": info.TaskRunCount, + "task_run_success_count": info.TaskRunSuccCount, + "task_run_fail_count": info.TaskRunFailCount, + "last_sync_time": time.Now().Format(time.RFC3339), + } + + // 序列化为JSON字符串 + runDetailJSON, err := json.Marshal(runDetail) + if err != nil { + return errors.Wrap(err, "序列化run_detail失败") + } + + runDetailStr := string(runDetailJSON) + + // 构建更新映射 + updateMap := map[string]interface{}{ + "run_detail": &runDetailStr, + } + + // 使用乐观锁更新 + err = h.taskRunRepo.UpdateTaskRunWithOCC(ctx, info.TaskRunID, 0, updateMap) + if err != nil { + return errors.Wrap(err, "更新TaskRun失败") + } + + return nil } From 9d45b06b6218ad061563540b0bc35a128c8d0678 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 15:55:38 +0800 Subject: [PATCH 230/462] fix count --- .../domain/task/taskexe/processor/data_reflow.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 99894146d..01888b0cd 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -58,12 +58,15 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - - if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount > trigger.Task.GetRule().GetSampler().GetCycleCount()) || taskCount > trigger.Task.GetRule().GetSampler().GetSampleSize() { + p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) + p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.IncrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) + + if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount != -1 && taskRunCount > trigger.Task.GetRule().GetSampler().GetCycleCount()) || + (taskCount != -1 && taskCount > trigger.Task.GetRule().GetSampler().GetSampleSize()) { logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) - p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) - p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - p.taskRepo.IncrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) + p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) return nil } ctx = session.WithCtxUser(ctx, &session.User{ID: *trigger.Task.BaseInfo.CreatedBy.UserID}) From aec3c26200d4d4696f71754d84e20d8130afaf6e Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 16:12:28 +0800 Subject: [PATCH 231/462] fix --- .../observability/domain/task/repo/task.go | 5 ++-- .../domain/task/service/task_service.go | 26 +++++++------------ .../task/taskexe/processor/auto_evaluate.go | 7 +++-- .../task/taskexe/processor/data_reflow.go | 14 +++++----- .../domain/task/taskexe/types.go | 8 +++--- .../infra/repo/redis/dao/task_run.go | 21 ++++++++++----- .../modules/observability/infra/repo/task.go | 7 +++-- 7 files changed, 46 insertions(+), 42 deletions(-) diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index 713805201..24efec7b5 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -36,9 +36,10 @@ type ITaskRepo interface { GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error - + // task run success/fail count IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error + DecrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) @@ -50,4 +51,4 @@ type ITaskRepo interface { // 获取所有TaskRunCount键 GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) -} \ No newline at end of file +} diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index bc1eae229..bf9f84fe5 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -19,7 +19,6 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" @@ -137,24 +136,17 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r } // 数据回流任务——创建/更新输出数据集 // 自动评测历史回溯——创建空壳子 - taskOp := taskexe.TaskOpUndefined - if req.Task.GetTaskType() == task.TaskTypeAutoDataReflow { - taskOp = taskexe.TaskOpNewData - } - if t.shouldTriggerBackfill(req.Task) { - taskOp = taskexe.TaskOpCreateBackfill - } - if taskOp != taskexe.TaskOpUndefined { - taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) - if err = proc.OnChangeProcessor(ctx, taskConfig, taskOp); err != nil { - logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) - //任务改为禁用? - if err1 := t.TaskRepo.DeleteTask(ctx, taskPO); err1 != nil { - logs.CtxError(ctx, "delete task failed, task_id=%d, err=%v", id, err1) - } - return nil, err + + taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) + if err = proc.OnChangeProcessor(ctx, taskConfig, task.TaskStatusUnstarted); err != nil { + logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) + //任务改为禁用? + if err1 := t.TaskRepo.DeleteTask(ctx, taskPO); err1 != nil { + logs.CtxError(ctx, "delete task failed, task_id=%d, err=%v", id, err1) } + return nil, err } + // 历史回溯数据发MQ if t.shouldTriggerBackfill(req.Task) { backfillEvent := &entity.BackFillEvent{ diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index a295bb0ff..02a5d3393 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -160,7 +160,7 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * return nil } -func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp taskexe.TaskOp) error { +func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) //todo:[xun]加锁 ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) @@ -284,9 +284,8 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas if err != nil { return err } - if taskOp != taskexe.TaskOpNewData { - taskConfig.TaskStatus = task.TaskStatusRunning - } + taskConfig.TaskStatus = task.TaskStatusRunning + var cycleStartAt, cycleEndAt, endAt int64 currentTime := time.Now().UnixMilli() diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 01888b0cd..d769765d9 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -58,12 +58,13 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) p.taskRepo.IncrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) - - if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount != -1 && taskRunCount > trigger.Task.GetRule().GetSampler().GetCycleCount()) || - (taskCount != -1 && taskCount > trigger.Task.GetRule().GetSampler().GetSampleSize()) { + + if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount > trigger.Task.GetRule().GetSampler().GetCycleCount()) || + (taskCount > trigger.Task.GetRule().GetSampler().GetSampleSize()) { logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) @@ -123,7 +124,7 @@ func (p *DataReflowProcessor) Finish(ctx context.Context, config any, trigger *t return nil } -func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp taskexe.TaskOp) error { +func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { logs.CtxInfo(ctx, "[auto_task] DataReflowProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) session := getSession(ctx, currentTask) category := getCategory(currentTask.TaskType) @@ -158,9 +159,8 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask if err != nil { return err } - if taskOp != taskexe.TaskOpNewData { - taskConfig.TaskStatus = task.TaskStatusRunning - } + taskConfig.TaskStatus = task.TaskStatusRunning + cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() // 5、创建 taskrun diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index 005764ea6..cb8415d1b 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -32,10 +32,10 @@ const ( ) type Processor interface { - ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 - Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 - OnChangeProcessor(ctx context.Context, task *task.Task, taskOp TaskOp) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 - Finish(ctx context.Context, config any, trigger *Trigger) error //Finish + ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 + Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 + OnChangeProcessor(ctx context.Context, task *task.Task, taskOp task.TaskStatus) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 + Finish(ctx context.Context, config any, trigger *Trigger) error //Finish OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnCreateChangeProcessor OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error //OnUpdateChangeProcessor diff --git a/backend/modules/observability/infra/repo/redis/dao/task_run.go b/backend/modules/observability/infra/repo/redis/dao/task_run.go index 49fec8515..e2615026a 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task_run.go +++ b/backend/modules/observability/infra/repo/redis/dao/task_run.go @@ -23,27 +23,28 @@ type ITaskRunDAO interface { GetTaskRun(ctx context.Context, id int64) (*entity.TaskRun, error) SetTaskRun(ctx context.Context, taskRun *entity.TaskRun, ttl time.Duration) error DeleteTaskRun(ctx context.Context, id int64) error - + // 列表缓存操作 GetNonFinalTaskRunList(ctx context.Context) ([]*entity.TaskRun, error) SetNonFinalTaskRunList(ctx context.Context, taskRuns []*entity.TaskRun, ttl time.Duration) error DeleteNonFinalTaskRunList(ctx context.Context) error - + GetTaskRunListByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) SetTaskRunListByTask(ctx context.Context, taskID int64, taskRuns []*entity.TaskRun, ttl time.Duration) error DeleteTaskRunListByTask(ctx context.Context, taskID int64) error - + // 计数缓存操作 GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error - + // 成功/失败计数操作 IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error + DecrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) - + // 对象列表缓存操作 GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) SetObjListWithTaskRun(ctx context.Context, spaceList, botList []string, ttl time.Duration) error @@ -362,4 +363,12 @@ func (p *TaskRunDAOImpl) GetTaskRunFailCount(ctx context.Context, taskID, taskRu return 0, errorx.Wrapf(err, "redis get taskrun fail count fail, key: %v", key) } return got, nil -} \ No newline at end of file +} +func (p *TaskRunDAOImpl) DecrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error { + key := p.makeTaskRunSuccessCountKey(taskID, taskRunID) + if err := p.cmdable.Decr(ctx, key).Err(); err != nil { + logs.CtxError(ctx, "redis decr taskrun success count failed", "key", key, "err", err) + return errorx.Wrapf(err, "redis decr taskrun success count key: %v", key) + } + return nil +} diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 89de4f81d..c21bb29dc 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -349,7 +349,7 @@ func (v *TaskRepoImpl) DeleteTask(ctx context.Context, do *entity.ObservabilityT go func() { // 清理相关列表缓存 v.clearListCaches(context.Background(), do.WorkspaceID) - + // 如果是非终态任务,需要从非终态任务列表中移除 if isNonFinalTaskStatus(do.TaskStatus) { if err := v.TaskRedisDao.RemoveNonFinalTask(context.Background(), do.ID); err != nil { @@ -467,6 +467,9 @@ func (v *TaskRepoImpl) GetAllTaskRunCountKeys(ctx context.Context) ([]string, er func (v *TaskRepoImpl) IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error { return v.TaskRunRedisDao.IncrTaskRunSuccessCount(ctx, taskID, taskRunID) } +func (v *TaskRepoImpl) DecrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error { + return v.TaskRunRedisDao.DecrTaskRunSuccessCount(ctx, taskID, taskRunID) +} // IncrTaskRunFailCount 增加TaskRun失败计数 func (v *TaskRepoImpl) IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error { @@ -481,4 +484,4 @@ func (v *TaskRepoImpl) GetTaskRunSuccessCount(ctx context.Context, taskID, taskR // GetTaskRunFailCount 获取TaskRun失败计数 func (v *TaskRepoImpl) GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { return v.TaskRunRedisDao.GetTaskRunFailCount(ctx, taskID, taskRunID) -} \ No newline at end of file +} From 4a8550afc06c17f1fe32f57241d1c3ab1ab1a76f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 16:17:12 +0800 Subject: [PATCH 232/462] fix idl --- .../modules/observability/domain/task/service/task_service.go | 2 +- .../coze/loop/observability/coze.loop.observability.task.thrift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index bf9f84fe5..a161190a9 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -146,7 +146,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r } return nil, err } - + // 历史回溯数据发MQ if t.shouldTriggerBackfill(req.Task) { backfillEvent := &entity.BackFillEvent{ diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift index b6ae37865..4c887775b 100644 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift +++ b/idl/thrift/coze/loop/observability/coze.loop.observability.task.thrift @@ -75,7 +75,7 @@ struct CheckTaskNameResponse { } service TaskService { - CheckTaskNameResponse CheckTaskName(1: CheckTaskNameRequest req) (api.get = '/api/observability/v1/tasks/check_name') + CheckTaskNameResponse CheckTaskName(1: CheckTaskNameRequest req) (api.post = '/api/observability/v1/tasks/check_name') CreateTaskResponse CreateTask(1: CreateTaskRequest req) (api.post = '/api/observability/v1/tasks') UpdateTaskResponse UpdateTask(1: UpdateTaskRequest req) (api.put = '/api/observability/v1/tasks/:task_id') ListTasksResponse ListTasks(1: ListTasksRequest req) (api.post = '/api/observability/v1/tasks/list') From a5d55721aaa9250b7150b43aa46723395d6f5d6d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 16:23:58 +0800 Subject: [PATCH 233/462] update --- .../task/taskexe/processor/auto_evaluate.go | 4 ++- .../task/taskexe/processor/data_reflow.go | 28 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 02a5d3393..28578b78b 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -284,7 +284,9 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas if err != nil { return err } - taskConfig.TaskStatus = task.TaskStatusRunning + if ShouldTriggerBackfill(currentTask) { + taskConfig.TaskStatus = task.TaskStatusRunning + } var cycleStartAt, cycleEndAt, endAt int64 currentTime := time.Now().UnixMilli() diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index d769765d9..c3c1aa021 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -124,6 +124,30 @@ func (p *DataReflowProcessor) Finish(ctx context.Context, config any, trigger *t return nil } +// shouldTriggerBackfill 判断是否需要发送历史回溯MQ +func ShouldTriggerBackfill(taskDO *task.Task) bool { + // 检查任务类型 + taskType := taskDO.GetTaskType() + if taskType != task.TaskTypeAutoEval && taskType != task.TaskTypeAutoDataReflow { + return false + } + + // 检查回填时间配置 + rule := taskDO.GetRule() + if rule == nil { + return false + } + + backfillTime := rule.GetBackfillEffectiveTime() + if backfillTime == nil { + return false + } + + return backfillTime.GetStartAt() > 0 && + backfillTime.GetEndAt() > 0 && + backfillTime.GetStartAt() < backfillTime.GetEndAt() +} + func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { logs.CtxInfo(ctx, "[auto_task] DataReflowProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) session := getSession(ctx, currentTask) @@ -159,7 +183,9 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask if err != nil { return err } - taskConfig.TaskStatus = task.TaskStatusRunning + if ShouldTriggerBackfill(currentTask) { + taskConfig.TaskStatus = task.TaskStatusRunning + } cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() From 50ca6063c7d2aca78fe7a09b0a873d165fa69c93 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 16:25:31 +0800 Subject: [PATCH 234/462] fix debug log --- .../domain/task/taskexe/tracehub/scheduled_task.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index aad311be3..dbc9d0f17 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -142,7 +142,7 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { return } - logs.CtxInfo(ctx, "获取到非终态任务数量", "count", len(taskPOs)) + logs.CtxInfo(ctx, "获取到非终态任务数量,count:%d", len(taskPOs)) // 2. 收集所有需要同步的TaskRun信息 var taskRunInfos []*TaskRunCountInfo From 35c35454867c5d2f9bfdb8ace67a33c2f2400d23 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 16:32:40 +0800 Subject: [PATCH 235/462] fix --- .../domain/task/taskexe/tracehub/scheduled_task.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index dbc9d0f17..5a9d518e8 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -100,7 +100,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 达到任务时间期限 // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) - if time.Now().After(endTime) && taskRunstat[*taskInfo.ID] { + if time.Now().After(endTime) { updateMap := map[string]interface{}{ "task_status": task.TaskStatusSuccess, } From 69cc4942ce67d8dcfa10294076c86af0e4588c7d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 16:42:17 +0800 Subject: [PATCH 236/462] fix --- .../task/taskexe/processor/data_reflow.go | 72 +++++++++++++++++-- 1 file changed, 68 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index c3c1aa021..4f504b062 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -224,11 +224,75 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask return nil } -func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, task *task.Task) error { +func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { // 1、创建/更新数据集 + session := getSession(ctx, currentTask) + category := getCategory(currentTask.TaskType) + dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() + var err error + // 1、创建数据集 + logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + var datasetID int64 + for _, dataReflowConfig := range dataReflowConfigs { + if dataReflowConfig.DatasetID != nil { + datasetID = *dataReflowConfig.DatasetID + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", dataReflowConfig.DatasetID) + continue + } + schema := convertDatasetSchemaDTO2DO(dataReflowConfig.GetDatasetSchema()) + datasetID, err = p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( + 0, + currentTask.GetWorkspaceID(), + dataReflowConfig.GetDatasetName(), + category, + schema, + session, + )) + if err != nil { + return err + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) + } // 2、更新任务配置 + taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) + if err != nil { + return err + } + if ShouldTriggerBackfill(currentTask) { + taskConfig.TaskStatus = task.TaskStatusRunning + } // 3、创建 taskrun:历史回溯生成一个taskRun,新数据生成一个taskRun - // 4、更新任务配置 + cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() + cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() + var taskRun *task_entity.TaskRun + taskRunConfig := &task.TaskRunConfig{ + DataReflowRunConfig: &task.DataReflowRunConfig{ + DatasetID: datasetID, + EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), + CycleStartAt: cycleStartAt, + CycleEndAt: cycleEndAt, + Status: task.RunStatusRunning, + }, + } + taskRun = &task_entity.TaskRun{ + ID: datasetID, + TaskID: currentTask.GetID(), + WorkspaceID: currentTask.GetWorkspaceID(), + TaskType: currentTask.GetTaskType(), + RunStatus: task.RunStatusRunning, + RunStartAt: time.UnixMilli(cycleStartAt), + RunEndAt: time.UnixMilli(cycleEndAt), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), + } + taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) + err = p.taskRepo.UpdateTask(ctx, taskConfig) + if err != nil { + return err + } + taskRun1 := tconv.TaskRunPO2DTO(ctx, taskRun, nil) + p.OnCreateTaskRunProcessor(ctx, taskRun1) return nil } func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error { @@ -241,9 +305,9 @@ func (p *DataReflowProcessor) OnFinishChangeProcessor(ctx context.Context, task return nil } -func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, task *task.TaskRun) error { +func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, taskRun *task.TaskRun) error { // 创建taskRun - logs.CtxInfo(ctx, "[auto_task] OnCreateTaskRunProcessor, taskID:%d, taskRun:%+v", task.GetTaskID(), task) + logs.CtxInfo(ctx, "[auto_task] OnCreateTaskRunProcessor, taskID:%d, taskRun:%+v", taskRun.GetTaskID(), taskRun) return nil } From 164c77830ca75d53b620f17fefc7b0e209376559 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 16:46:21 +0800 Subject: [PATCH 237/462] fix --- .../modules/observability/domain/task/service/task_service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index a161190a9..5af724de5 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -138,7 +138,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r // 自动评测历史回溯——创建空壳子 taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) - if err = proc.OnChangeProcessor(ctx, taskConfig, task.TaskStatusUnstarted); err != nil { + if err = proc.OnCreateChangeProcessor(ctx, taskConfig); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) //任务改为禁用? if err1 := t.TaskRepo.DeleteTask(ctx, taskPO); err1 != nil { From f129e33094f8fc0ecbbfb902f7d307326e1f0257 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 16:53:15 +0800 Subject: [PATCH 238/462] fix --- .../task/taskexe/processor/auto_evaluate.go | 196 +++++++++++++++++- 1 file changed, 194 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 28578b78b..8994f6155 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -648,9 +648,201 @@ func GetContentInfo(ctx context.Context, contentType common.ContentType, value s return content, nil } -func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, task *task.Task) error { - // 如果是历史回溯,立即创建taskrun +func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) + //todo:[xun]加锁 + if ShouldTriggerBackfill(currentTask) { + ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) + sessionInfo := getSession(ctx, currentTask) + var evaluationSetColumns []string + var evaluatorVersionIds []int64 + var evaluatorFieldMappings []*expt.EvaluatorFieldMapping + evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id") + autoEvaluateConfigs := currentTask.GetTaskConfig().GetAutoEvaluateConfigs() + evaluationSetSchema, fromEvalSet := getBasicEvaluationSetSchema(evaluationSetColumns) + for _, autoEvaluateConfig := range autoEvaluateConfigs { + evaluatorVersionIds = append(evaluatorVersionIds, autoEvaluateConfig.EvaluatorVersionID) + filedMappings := autoEvaluateConfig.GetFieldMappings() + for _, fieldMapping := range filedMappings { + if fieldMapping.GetFieldSchema() == nil { + continue + } + fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ + FieldName: gptr.Of(fieldMapping.GetFieldSchema().GetName()), + FromFieldName: gptr.Of(fieldMapping.GetEvalSetName()), + }) + if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { + continue + } + // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, + evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ + Key: gptr.Of(fieldMapping.GetEvalSetName()), + Name: gptr.Of(fieldMapping.GetEvalSetName()), + Description: gptr.Of(fieldMapping.TraceFieldJsonpath), + ContentType: gptr.Of(fieldMapping.GetFieldSchema().GetContentType()), + //DefaultDisplayFormat: gptr.Of(dataset.FieldDisplayFormat_PlainText), + TextSchema: fieldMapping.GetFieldSchema().TextSchema, + //Hidden: gptr.Of(false), + }) + evaluationSetColumns = append(evaluationSetColumns, fieldMapping.GetEvalSetName()) + } + + evaluatorFieldMappings = append(evaluatorFieldMappings, &expt.EvaluatorFieldMapping{ + EvaluatorVersionID: autoEvaluateConfig.GetEvaluatorVersionID(), + FromEvalSet: fromEvalSet, + }) + } + category := getCategory(currentTask.TaskType) + schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) + // 1、创建评测集 + logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( + 0, + currentTask.GetWorkspaceID(), + fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()), + category, + schema, + sessionInfo, + )) + if err != nil { + logs.CtxError(ctx, "CreateDataset failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) + return err + //datasetID = 7548288691995672577 + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) + // 2、创建实验 + maxAliveTime := currentTask.GetRule().GetEffectiveTime().GetEndAt() - currentTask.GetRule().GetEffectiveTime().GetStartAt() + if currentTask.GetRule().GetSampler().GetIsCycle() { + switch *currentTask.GetRule().GetSampler().CycleTimeUnit { + case task.TimeUnitDay: + maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 24 * time.Hour.Milliseconds() + case task.TimeUnitWeek: + maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 7 * 24 * time.Hour.Milliseconds() + default: + maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 10 * time.Minute.Milliseconds() + } + } + submitExperimentReq := rpc.SubmitExperimentReq{ + WorkspaceID: currentTask.GetWorkspaceID(), + EvalSetVersionID: gptr.Of(datasetID), + EvaluatorVersionIds: evaluatorVersionIds, + Name: gptr.Of(fmt.Sprintf("自动化任务实验_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day())), + Desc: gptr.Of("自动化任务实验"), + EvalSetID: gptr.Of(datasetID), + EvaluatorFieldMapping: evaluatorFieldMappings, + TargetFieldMapping: &expt.TargetFieldMapping{ + FromEvalSet: []*expt.FieldMapping{}, + }, + CreateEvalTargetParam: &eval_target.CreateEvalTargetParam{ + SourceTargetID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), + EvalTargetType: gptr.Of(eval_target_d.EvalTargetType_Trace), + }, + ExptType: gptr.Of(expt.ExptType_Online), + MaxAliveTime: gptr.Of(maxAliveTime), + SourceType: gptr.Of(expt.SourceType_AutoTask), + SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), + Session: sessionInfo, + } + logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) + exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) + if err != nil { + logs.CtxError(ctx, "SubmitExperiment failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) + return err + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) + evaluationSetConfig, err := p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, currentTask.GetWorkspaceID(), datasetID, category) + if err != nil { + logs.CtxError(ctx, "[task-debug] GetEvaluationSet err:%v", err) + return err + } + // 3、更新任务状态 + //if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { + // updateMap := map[string]interface{}{ + // "task_status": task.TaskStatusRunning, + // } + // logs.CtxInfo(ctx, "currentTask.GetID():%d, currentTask.GetWorkspaceID():%d", currentTask.GetID(), currentTask.GetWorkspaceID()) + // err = p.taskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) + // if err != nil { + // return err + // } + //} + // 4、更新任务配置 + effectiveTime := currentTask.GetRule().GetEffectiveTime() + taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) + if err != nil { + return err + } + if ShouldTriggerBackfill(currentTask) { + taskConfig.TaskStatus = task.TaskStatusRunning + } + + var cycleStartAt, cycleEndAt, endAt int64 + currentTime := time.Now().UnixMilli() + + if effectiveTime.StartAt != nil && effectiveTime.EndAt != nil { + endAt = effectiveTime.GetEndAt() + if len(taskConfig.TaskRuns) == 0 { + // 首次创建 taskrun,从任务生效时间开始 + cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) + } else { + // 找到最新的 cycleEndAt 作为新的 cycleStartAt + for _, run := range taskConfig.TaskRuns { + if run.RunStartAt.UnixMilli() > cycleStartAt { + cycleStartAt = run.RunEndAt.UnixMilli() + } + } + cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) + } + cycleEndAt = cycleStartAt + maxAliveTime + + // 确保周期开始时间不早于任务生效时间 + if cycleStartAt < effectiveTime.GetStartAt() { + cycleStartAt = effectiveTime.GetStartAt() + cycleEndAt = cycleStartAt + maxAliveTime + } + + // 确保周期结束时间不晚于任务结束时间 + if cycleEndAt > effectiveTime.GetEndAt() { + cycleEndAt = effectiveTime.GetEndAt() + } + } + + logs.CtxInfo(ctx, "Creating taskrun with cycle: startAt=%d, endAt=%d, currentTime=%d", cycleStartAt, cycleEndAt, currentTime) + // 5、创建 taskrun + taskRunConfig := &task.TaskRunConfig{ + AutoEvaluateRunConfig: &task.AutoEvaluateRunConfig{ + ExptID: exptID, + ExptRunID: exptRunID, + EvalID: datasetID, + SchemaID: evaluationSetConfig.DatasetVersion.DatasetSchema.ID, + Schema: ptr.Of(ToJSONString(ctx, evaluationSetConfig.DatasetVersion.DatasetSchema.FieldSchemas)), + EndAt: endAt, + CycleStartAt: cycleStartAt, + CycleEndAt: cycleEndAt, + Status: task.TaskStatusRunning, + }, + } + taskRun := &task_entity.TaskRun{ + TaskID: currentTask.GetID(), + WorkspaceID: currentTask.GetWorkspaceID(), + TaskType: currentTask.GetTaskType(), + RunStatus: task.RunStatusRunning, + RunStartAt: time.UnixMilli(cycleStartAt), + RunEndAt: time.UnixMilli(cycleEndAt), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), + } + + // 6、更新任务配置 + // todo:[xun]改task_run? + _, err = p.taskRunRepo.CreateTaskRun(ctx, taskRun) + err = p.taskRepo.UpdateTask(ctx, taskConfig) + if err != nil { + return err + } + } return nil } func (p *AutoEvaluteProcessor) OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error { From 38a2b8b51714a367ac6fcaad7b7a67c3ce517b85 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 16:54:09 +0800 Subject: [PATCH 239/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 8994f6155..41eea63dc 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -649,7 +649,7 @@ func GetContentInfo(ctx context.Context, contentType common.ContentType, value s } func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) //todo:[xun]加锁 if ShouldTriggerBackfill(currentTask) { ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) From 1afdd4d8f52207f258e8e1136d14dcc1570731eb Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 17:03:35 +0800 Subject: [PATCH 240/462] fix --- .../router/coze/loop/apis/coze.loop.apis.go | 2 +- .../loop/observability/domain/task/k-task.go | 2 +- .../loop/observability/domain/task/task.go | 16 ++++--- .../task/taskexe/processor/data_reflow.go | 42 ++++++++++--------- .../loop/observability/domain/task.thrift | 6 ++- 5 files changed, 41 insertions(+), 27 deletions(-) diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index 21cea1365..e46acaa5f 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -288,7 +288,7 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { } { _tasks0 := _v14.Group("/tasks", _tasks0Mw(handler)...) - _tasks0.GET("/check_name", append(_checktasknameMw(handler), apis.CheckTaskName)...) + _tasks0.POST("/check_name", append(_checktasknameMw(handler), apis.CheckTaskName)...) } { _trace := _v14.Group("/trace", _traceMw(handler)...) diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go index 6b4b697a6..93b314663 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/k-task.go @@ -3464,7 +3464,7 @@ func (p *TaskRun) FastReadField3(buf []byte) (int, error) { func (p *TaskRun) FastReadField4(buf []byte) (int, error) { offset := 0 - var _field TaskType + var _field TaskRunType if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { diff --git a/backend/kitex_gen/coze/loop/observability/domain/task/task.go b/backend/kitex_gen/coze/loop/observability/domain/task/task.go index fd37c38ef..8f82e0063 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/task/task.go +++ b/backend/kitex_gen/coze/loop/observability/domain/task/task.go @@ -22,6 +22,10 @@ const ( TaskTypeAutoDataReflow = "auto_data_reflow" + TaskRunTypeBackFill = "back_fill" + + TaskRunTypeNewData = "new_data" + TaskStatusUnstarted = "unstarted" TaskStatusRunning = "running" @@ -43,6 +47,8 @@ type TimeUnit = string type TaskType = string +type TaskRunType = string + type TaskStatus = string type RunStatus = string @@ -4463,7 +4469,7 @@ type TaskRun struct { // 任务 id TaskID int64 `thrift:"task_id,3,required" frugal:"3,required,i64" json:"task_id" form:"task_id,required" query:"task_id,required"` // 类型 - TaskType TaskType `thrift:"task_type,4,required" frugal:"4,required,string" form:"task_type,required" json:"task_type,required" query:"task_type,required"` + TaskType TaskRunType `thrift:"task_type,4,required" frugal:"4,required,string" form:"task_type,required" json:"task_type,required" query:"task_type,required"` // 状态 RunStatus RunStatus `thrift:"run_status,5,required" frugal:"5,required,string" form:"run_status,required" json:"run_status,required" query:"run_status,required"` // 任务状态详情 @@ -4506,7 +4512,7 @@ func (p *TaskRun) GetTaskID() (v int64) { return } -func (p *TaskRun) GetTaskType() (v TaskType) { +func (p *TaskRun) GetTaskType() (v TaskRunType) { if p != nil { return p.TaskType } @@ -4590,7 +4596,7 @@ func (p *TaskRun) SetWorkspaceID(val int64) { func (p *TaskRun) SetTaskID(val int64) { p.TaskID = val } -func (p *TaskRun) SetTaskType(val TaskType) { +func (p *TaskRun) SetTaskType(val TaskRunType) { p.TaskType = val } func (p *TaskRun) SetRunStatus(val RunStatus) { @@ -4865,7 +4871,7 @@ func (p *TaskRun) ReadField3(iprot thrift.TProtocol) error { } func (p *TaskRun) ReadField4(iprot thrift.TProtocol) error { - var _field TaskType + var _field TaskRunType if v, err := iprot.ReadString(); err != nil { return err } else { @@ -5264,7 +5270,7 @@ func (p *TaskRun) Field3DeepEqual(src int64) bool { } return true } -func (p *TaskRun) Field4DeepEqual(src TaskType) bool { +func (p *TaskRun) Field4DeepEqual(src TaskRunType) bool { if strings.Compare(p.TaskType, src) != 0 { return false diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 4f504b062..188ea88ce 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -274,42 +274,46 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre Status: task.RunStatusRunning, }, } - taskRun = &task_entity.TaskRun{ - ID: datasetID, - TaskID: currentTask.GetID(), - WorkspaceID: currentTask.GetWorkspaceID(), - TaskType: currentTask.GetTaskType(), - RunStatus: task.RunStatusRunning, - RunStartAt: time.UnixMilli(cycleStartAt), - RunEndAt: time.UnixMilli(cycleEndAt), - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), + taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig) + if err != nil { + return err } taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) err = p.taskRepo.UpdateTask(ctx, taskConfig) if err != nil { return err } - taskRun1 := tconv.TaskRunPO2DTO(ctx, taskRun, nil) - p.OnCreateTaskRunProcessor(ctx, taskRun1) return nil } -func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error { +func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task) error { // return nil } -func (p *DataReflowProcessor) OnFinishChangeProcessor(ctx context.Context, task *task.Task) error { +func (p *DataReflowProcessor) OnFinishChangeProcessor(ctx context.Context, currentTask *task.Task) error { // 更新任务配置 // 更新TaskRun return nil } -func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, taskRun *task.TaskRun) error { +func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig) (*task_entity.TaskRun, error) { // 创建taskRun - logs.CtxInfo(ctx, "[auto_task] OnCreateTaskRunProcessor, taskID:%d, taskRun:%+v", taskRun.GetTaskID(), taskRun) - - return nil + cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() + cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() + var taskRun *task_entity.TaskRun + taskRunConfig := runConfig + taskRun = &task_entity.TaskRun{ + TaskID: currentTask.GetID(), + WorkspaceID: currentTask.GetWorkspaceID(), + TaskType: currentTask.GetTaskType(), + RunStatus: task.RunStatusRunning, + RunStartAt: time.UnixMilli(cycleStartAt), + RunEndAt: time.UnixMilli(cycleEndAt), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), + } + p.taskRepo.CreateTaskRun(ctx, taskRun) + return taskRun, nil } func (p *DataReflowProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task.TaskRun) error { taskRunDo := tconv.TaskRunDO2PO(ctx, taskRun, nil) diff --git a/idl/thrift/coze/loop/observability/domain/task.thrift b/idl/thrift/coze/loop/observability/domain/task.thrift index c443de1e3..ff9df13cd 100644 --- a/idl/thrift/coze/loop/observability/domain/task.thrift +++ b/idl/thrift/coze/loop/observability/domain/task.thrift @@ -13,6 +13,10 @@ typedef string TaskType (ts.enum="true") const TaskType TaskType_AutoEval = "auto_evaluate" // 自动评测 const TaskType TaskType_AutoDataReflow = "auto_data_reflow" // 数据回流 +typedef string TaskRunType (ts.enum="true") +const TaskRunType TaskRunType_BackFill = "back_fill" // 历史数据回填 +const TaskRunType TaskRunType_NewData = "new_data" // 新数据 + typedef string TaskStatus (ts.enum="true") const TaskStatus TaskStatus_Unstarted = "unstarted" // 未启动 const TaskStatus TaskStatus_Running = "running" // 正在运行 @@ -110,7 +114,7 @@ struct TaskRun { 1: required i64 id (api.js_conv="true", go.tag='json:"id"') // 任务 run id 2: required i64 workspace_id (api.js_conv="true", go.tag='json:"workspace_id"') // 所在空间 3: required i64 task_id (api.js_conv="true", go.tag='json:"task_id"') // 任务 id - 4: required TaskType task_type // 类型 + 4: required TaskRunType task_type // 类型 5: required RunStatus run_status // 状态 6: optional RunDetail run_detail // 任务状态详情 7: optional BackfillDetail backfill_run_detail // 任务历史数据执行详情 From fc04fa3970da1b84ea476c2ccfc66f1829453ea0 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 17:13:25 +0800 Subject: [PATCH 241/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 6 +++--- .../domain/task/taskexe/processor/data_reflow.go | 9 ++++----- .../modules/observability/domain/task/taskexe/types.go | 5 +++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 41eea63dc..ba65cca19 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -852,9 +852,9 @@ func (p *AutoEvaluteProcessor) OnFinishChangeProcessor(ctx context.Context, task return nil } -func (p *AutoEvaluteProcessor) OnCreateTaskRunProcessor(ctx context.Context, taskRun *task.TaskRun) error { - return nil +func (p *AutoEvaluteProcessor) OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig) (*task_entity.TaskRun, error) { + return nil, nil } -func (p *AutoEvaluteProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task.TaskRun) error { +func (p *AutoEvaluteProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error { return nil } diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 188ea88ce..e0030428f 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -315,14 +315,13 @@ func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, curr p.taskRepo.CreateTaskRun(ctx, taskRun) return taskRun, nil } -func (p *DataReflowProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task.TaskRun) error { - taskRunDo := tconv.TaskRunDO2PO(ctx, taskRun, nil) +func (p *DataReflowProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error { // 设置taskRun状态为已完成 - taskRunDo.RunStatus = task.RunStatusDone + taskRun.RunStatus = task.RunStatusDone // 更新taskRun - err := p.taskRepo.UpdateTaskRun(ctx, taskRunDo) + err := p.taskRepo.UpdateTaskRun(ctx, taskRun) if err != nil { - logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.GetID(), err) + logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.ID, err) return err } return nil diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index cb8415d1b..bd039bdc4 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -8,6 +8,7 @@ import ( "errors" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" ) @@ -41,8 +42,8 @@ type Processor interface { OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error //OnUpdateChangeProcessor OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor - OnCreateTaskRunProcessor(ctx context.Context, task *task.TaskRun) error //OnCreateTaskRunProcessor - OnFinishTaskRunProcessor(ctx context.Context, task *task.TaskRun) error //OnFinishTaskRunProcessor + OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig) (*task_entity.TaskRun, error) //OnCreateTaskRunProcessor + OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error //OnFinishTaskRunProcessor } type ProcessorUnion interface { From 5c97fde9d49768b24c68a5cbb7180c8013984592 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 17:21:46 +0800 Subject: [PATCH 242/462] fix --- .../task/taskexe/processor/auto_evaluate.go | 48 +++++++++++++------ .../task/taskexe/processor/data_reflow.go | 17 +++++-- .../domain/task/taskexe/types.go | 4 +- 3 files changed, 49 insertions(+), 20 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index ba65cca19..7a8409ce2 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -773,8 +773,10 @@ func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, curr if err != nil { return err } + runType := task.TaskRunTypeNewData if ShouldTriggerBackfill(currentTask) { taskConfig.TaskStatus = task.TaskStatusRunning + runType = task.TaskRunTypeBackFill } var cycleStartAt, cycleEndAt, endAt int64 @@ -823,21 +825,14 @@ func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, curr Status: task.TaskStatusRunning, }, } - taskRun := &task_entity.TaskRun{ - TaskID: currentTask.GetID(), - WorkspaceID: currentTask.GetWorkspaceID(), - TaskType: currentTask.GetTaskType(), - RunStatus: task.RunStatusRunning, - RunStartAt: time.UnixMilli(cycleStartAt), - RunEndAt: time.UnixMilli(cycleEndAt), - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), - } // 6、更新任务配置 // todo:[xun]改task_run? - _, err = p.taskRunRepo.CreateTaskRun(ctx, taskRun) + taskRun, err := p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, runType) + if err != nil { + return err + } + taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) err = p.taskRepo.UpdateTask(ctx, taskConfig) if err != nil { return err @@ -852,9 +847,34 @@ func (p *AutoEvaluteProcessor) OnFinishChangeProcessor(ctx context.Context, task return nil } -func (p *AutoEvaluteProcessor) OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig) (*task_entity.TaskRun, error) { - return nil, nil +func (p *AutoEvaluteProcessor) OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig, runType task.TaskRunType) (*task_entity.TaskRun, error) { + taskRun := &task_entity.TaskRun{ + TaskID: currentTask.GetID(), + WorkspaceID: currentTask.GetWorkspaceID(), + TaskType: runType, + RunStatus: task.RunStatusRunning, + RunStartAt: time.UnixMilli(runConfig.GetAutoEvaluateRunConfig().GetCycleStartAt()), + RunEndAt: time.UnixMilli(runConfig.GetAutoEvaluateRunConfig().GetCycleEndAt()), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + RunConfig: ptr.Of(ToJSONString(ctx, runConfig)), + } + id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) + if err != nil { + logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) + return nil, err + } + taskRun.ID = id + return taskRun, nil } func (p *AutoEvaluteProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error { + // 设置taskRun状态为已完成 + taskRun.RunStatus = task.RunStatusDone + // 更新taskRun + err := p.taskRepo.UpdateTaskRun(ctx, taskRun) + if err != nil { + logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.ID, err) + return err + } return nil } diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index e0030428f..638cefee3 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -274,7 +274,11 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre Status: task.RunStatusRunning, }, } - taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig) + runType := task.TaskRunTypeNewData + if ShouldTriggerBackfill(currentTask) { + runType = task.TaskRunTypeBackFill + } + taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, runType) if err != nil { return err } @@ -295,7 +299,7 @@ func (p *DataReflowProcessor) OnFinishChangeProcessor(ctx context.Context, curre return nil } -func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig) (*task_entity.TaskRun, error) { +func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig, runType task.TaskRunType) (*task_entity.TaskRun, error) { // 创建taskRun cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() @@ -304,7 +308,7 @@ func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, curr taskRun = &task_entity.TaskRun{ TaskID: currentTask.GetID(), WorkspaceID: currentTask.GetWorkspaceID(), - TaskType: currentTask.GetTaskType(), + TaskType: runType, RunStatus: task.RunStatusRunning, RunStartAt: time.UnixMilli(cycleStartAt), RunEndAt: time.UnixMilli(cycleEndAt), @@ -312,7 +316,12 @@ func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, curr UpdatedAt: time.Now(), RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), } - p.taskRepo.CreateTaskRun(ctx, taskRun) + id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) + if err != nil { + logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) + return nil, err + } + taskRun.ID = id return taskRun, nil } func (p *DataReflowProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error { diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index bd039bdc4..6b6431525 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -42,8 +42,8 @@ type Processor interface { OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error //OnUpdateChangeProcessor OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor - OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig) (*task_entity.TaskRun, error) //OnCreateTaskRunProcessor - OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error //OnFinishTaskRunProcessor + OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig, runType task.TaskRunType) (*task_entity.TaskRun, error) //OnCreateTaskRunProcessor + OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error //OnFinishTaskRunProcessor } type ProcessorUnion interface { From a3903f102bec2207bc5b6313bce9c5cf556f1124 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 17:36:46 +0800 Subject: [PATCH 243/462] fix --- .../task/taskexe/processor/data_reflow.go | 4 ++-- .../task/taskexe/tracehub/scheduled_task.go | 21 ++++++++++++++++++- .../modules/observability/infra/repo/task.go | 14 +++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 638cefee3..a9a604bff 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -68,6 +68,7 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.DecrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) return nil } ctx = session.WithCtxUser(ctx, &session.User{ID: *trigger.Task.BaseInfo.CreatedBy.UserID}) @@ -90,8 +91,7 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t _, _, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, taskRun.TaskRunConfig.DataReflowRunConfig.DatasetID, category, successItems) if err != nil { logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor Invoke, AddDatasetItems err, taskID:%d, err:%v", *trigger.Task.ID, err) - p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) + p.taskRepo.IncrTaskRunFailCount(ctx, *trigger.Task.ID, taskRun.ID) return err } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 5a9d518e8..e0ce4bbdc 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -8,9 +8,12 @@ import ( "encoding/json" "time" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" "github.com/pkg/errors" ) @@ -58,7 +61,23 @@ func (h *TraceHubServiceImpl) runScheduledTask() { ctx = logs.SetLogID(ctx, logID) ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") // 读取所有非终态(成功/禁用)任务 - taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) + taskPOs, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ + ReqLimit: 1000, + ReqOffset: 0, + TaskFilters: &filter.TaskFilterFields{ + FilterFields: []*filter.TaskFilterField{ + { + FieldName: ptr.Of(filter.TaskFieldNameTaskStatus), + Values: []string{ + string(task.TaskStatusUnstarted), + string(task.TaskStatusRunning), + }, + QueryType: ptr.Of(filter.QueryTypeIn), + FieldType: ptr.Of(filter.FieldTypeString), + }, + }, + }, + }) if err != nil { logs.CtxError(ctx, "ListNonFinalTask err:%v", err) return diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index c21bb29dc..dee1ed8d0 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -104,6 +104,20 @@ func (v *TaskRepoImpl) ListTasks(ctx context.Context, param mysql.ListTaskParam) for i, result := range results { resp[i] = convertor.TaskPO2DO(result) } + for _, t := range resp { + taskRuns, _, err := v.TaskRunDao.ListTaskRuns(ctx, mysql.ListTaskRunParam{ + WorkspaceID: ptr.Of(t.WorkspaceID), + TaskID: ptr.Of(t.ID), + ReqLimit: 1000, + ReqOffset: 0, + }) + if err != nil { + logs.CtxError(ctx, "ListTaskRuns err, taskID:%d, err:%v", t.ID, err) + continue + } + t.TaskRuns = convertor.TaskRunsPO2DO(taskRuns) + } + return resp, total, nil } From 6f65b1b58e4e9dfd2553f80d1fdeb7d1fb4b6c2d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 17:45:43 +0800 Subject: [PATCH 244/462] fix --- .../task/taskexe/tracehub/scheduled_task.go | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index e0ce4bbdc..a7717b43c 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -61,27 +61,12 @@ func (h *TraceHubServiceImpl) runScheduledTask() { ctx = logs.SetLogID(ctx, logID) ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") // 读取所有非终态(成功/禁用)任务 - taskPOs, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ - ReqLimit: 1000, - ReqOffset: 0, - TaskFilters: &filter.TaskFilterFields{ - FilterFields: []*filter.TaskFilterField{ - { - FieldName: ptr.Of(filter.TaskFieldNameTaskStatus), - Values: []string{ - string(task.TaskStatusUnstarted), - string(task.TaskStatusRunning), - }, - QueryType: ptr.Of(filter.QueryTypeIn), - FieldType: ptr.Of(filter.FieldTypeString), - }, - }, - }, - }) + taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) if err != nil { - logs.CtxError(ctx, "ListNonFinalTask err:%v", err) + logs.CtxError(ctx, "获取非终态任务列表失败", "err", err) return } + var tasks []*task.Task taskRunstat := make(map[int64]bool) logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) @@ -150,12 +135,27 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { logs.CtxInfo(ctx, "开始同步TaskRunCounts到数据库...") // 1. 获取非终态任务列表 - taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) + taskPOs, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ + ReqLimit: 1000, + ReqOffset: 0, + TaskFilters: &filter.TaskFilterFields{ + FilterFields: []*filter.TaskFilterField{ + { + FieldName: ptr.Of(filter.TaskFieldNameTaskStatus), + Values: []string{ + string(task.TaskStatusUnstarted), + string(task.TaskStatusRunning), + }, + QueryType: ptr.Of(filter.QueryTypeIn), + FieldType: ptr.Of(filter.FieldTypeString), + }, + }, + }, + }) if err != nil { - logs.CtxError(ctx, "获取非终态任务列表失败", "err", err) + logs.CtxError(ctx, "ListNonFinalTask err:%v", err) return } - if len(taskPOs) == 0 { logs.CtxInfo(ctx, "没有非终态任务需要同步") return From fac6bde64194f7bcc3159afa311abc93fa2ebb26 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 17:57:14 +0800 Subject: [PATCH 245/462] fix --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 0d9aacae1..cc0f55e11 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -46,7 +46,7 @@ func NewTraceHubImpl( buildHelper service.TraceFilterProcessorBuilder, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo, tRunRepo) - ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, taskRunRepo: tRunRepo, From 74e9ac14ed0e70d3a6e6d360aa14b18cfaed35dd Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 18:06:22 +0800 Subject: [PATCH 246/462] fix --- .../domain/task/taskexe/tracehub/scheduled_task.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index a7717b43c..e4817a23e 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -259,10 +259,9 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *TaskRunCountInfo) error { // 构建run_detail JSON数据 runDetail := map[string]interface{}{ - "task_run_count": info.TaskRunCount, - "task_run_success_count": info.TaskRunSuccCount, - "task_run_fail_count": info.TaskRunFailCount, - "last_sync_time": time.Now().Format(time.RFC3339), + "total_count": info.TaskRunCount, + "success_count": info.TaskRunSuccCount, + "failed_count": info.TaskRunFailCount, } // 序列化为JSON字符串 From ec53df78fa82ff645d8fcade0480229f15458b8f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 19:13:41 +0800 Subject: [PATCH 247/462] fix --- .../infra/repo/mysql/task_run.go | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/backend/modules/observability/infra/repo/mysql/task_run.go b/backend/modules/observability/infra/repo/mysql/task_run.go index d85056bd4..d8a4405a4 100755 --- a/backend/modules/observability/infra/repo/mysql/task_run.go +++ b/backend/modules/observability/infra/repo/mysql/task_run.go @@ -44,7 +44,7 @@ type ITaskRunDao interface { UpdateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) error DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error ListTaskRuns(ctx context.Context, param ListTaskRunParam) ([]*model.ObservabilityTaskRun, int64, error) - + // 业务特定方法 ListNonFinalTaskRun(ctx context.Context) ([]*model.ObservabilityTaskRun, error) ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) @@ -68,16 +68,16 @@ type TaskRunDaoImpl struct { // TaskRun非终态状态定义 var NonFinalTaskRunStatuses = []string{ - "pending", // 等待执行 - "running", // 执行中 - "paused", // 暂停 - "retrying", // 重试中 + "pending", // 等待执行 + "running", // 执行中 + "paused", // 暂停 + "retrying", // 重试中 } // 活跃状态定义(非终态状态的子集) var ActiveTaskRunStatuses = []string{ - "running", // 执行中 - "retrying", // 重试中 + "running", // 执行中 + "retrying", // 重试中 } // 计算分页参数 @@ -210,7 +210,7 @@ func (d *TaskRunDaoImpl) order(q *query.Query, orderBy string, asc bool) field.E func (v *TaskRunDaoImpl) ListNonFinalTaskRun(ctx context.Context) ([]*model.ObservabilityTaskRun, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun qd := q.WithContext(ctx).Where(q.RunStatus.In(NonFinalTaskRunStatuses...)) - + results, err := qd.Find() if err != nil { return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) @@ -222,7 +222,7 @@ func (v *TaskRunDaoImpl) ListNonFinalTaskRun(ctx context.Context) ([]*model.Obse func (v *TaskRunDaoImpl) ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun qd := q.WithContext(ctx).Where(q.TaskID.Eq(taskID)).Where(q.RunStatus.In(NonFinalTaskRunStatuses...)) - + results, err := qd.Find() if err != nil { return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) @@ -234,7 +234,7 @@ func (v *TaskRunDaoImpl) ListNonFinalTaskRunByTaskID(ctx context.Context, taskID func (v *TaskRunDaoImpl) ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID int64) ([]*model.ObservabilityTaskRun, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun qd := q.WithContext(ctx).Where(q.WorkspaceID.Eq(spaceID)).Where(q.RunStatus.In(NonFinalTaskRunStatuses...)) - + results, err := qd.Find() if err != nil { return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) @@ -245,19 +245,22 @@ func (v *TaskRunDaoImpl) ListNonFinalTaskRunBySpaceID(ctx context.Context, space // UpdateTaskRunWithOCC 乐观并发控制更新 func (v *TaskRunDaoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - qd := q.WithContext(ctx).Where(q.ID.Eq(id)).Where(q.WorkspaceID.Eq(workspaceID)) - + qd := q.WithContext(ctx).Where(q.ID.Eq(id)) + if workspaceID != 0 { + qd = qd.Where(q.WorkspaceID.Eq(workspaceID)) + } + // 执行更新操作 info, err := qd.Updates(updateMap) if err != nil { return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) } - + // 检查是否有行被更新(乐观并发控制) if info.RowsAffected == 0 { return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found or version conflict")) } - + logs.CtxInfo(ctx, "TaskRun updated with OCC", "id", id, "workspaceID", workspaceID, "rowsAffected", info.RowsAffected) return nil } @@ -265,17 +268,17 @@ func (v *TaskRunDaoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, wor // GetObjListWithTaskRun 获取有TaskRun的对象列表 func (v *TaskRunDaoImpl) GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - + // 获取不重复的WorkspaceID列表 var spaceList []string err := q.WithContext(ctx).Select(q.WorkspaceID).Distinct().Scan(&spaceList) if err != nil { return nil, nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) } - + // TaskRun表中没有bot相关字段,返回空的bot列表 var botList []string - + return spaceList, botList, nil } @@ -283,7 +286,7 @@ func (v *TaskRunDaoImpl) GetObjListWithTaskRun(ctx context.Context) ([]string, [ func (v *TaskRunDaoImpl) ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun qd := q.WithContext(ctx).Where(q.TaskID.Eq(taskID)).Where(q.RunStatus.In(ActiveTaskRunStatuses...)) - + results, err := qd.Order(q.CreatedAt.Desc()).Find() if err != nil { return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) @@ -295,7 +298,7 @@ func (v *TaskRunDaoImpl) ListActiveTaskRunsByTask(ctx context.Context, taskID in func (v *TaskRunDaoImpl) GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*model.ObservabilityTaskRun, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun qd := q.WithContext(ctx).Where(q.TaskID.Eq(taskID)).Order(q.CreatedAt.Desc()) - + taskRun, err := qd.First() if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { @@ -310,10 +313,10 @@ func (v *TaskRunDaoImpl) GetLatestTaskRunByTask(ctx context.Context, taskID int6 func (v *TaskRunDaoImpl) ListTaskRunsByStatus(ctx context.Context, status string) ([]*model.ObservabilityTaskRun, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun qd := q.WithContext(ctx).Where(q.RunStatus.Eq(status)) - + results, err := qd.Order(q.CreatedAt.Desc()).Find() if err != nil { return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) } return results, nil -} \ No newline at end of file +} From 163dda14b2694d4766c1905d024f88b026c3bda4 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 19:18:37 +0800 Subject: [PATCH 248/462] fix --- .../domain/task/taskexe/tracehub/scheduled_task.go | 6 +++--- .../domain/task/taskexe/tracehub/trace_hub.go | 2 +- .../observability/infra/repo/mysql/task_run.go | 5 ----- backend/modules/observability/infra/repo/task.go | 14 +++++++++++++- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index e4817a23e..60bbc7a62 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -206,7 +206,7 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun for _, info := range batch { // 读取taskruncount count, err := h.taskRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) - if err != nil { + if err != nil || count == -1 { logs.CtxWarn(ctx, "获取TaskRunCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) count = 0 } @@ -214,7 +214,7 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun // 读取taskrunscesscount successCount, err := h.taskRepo.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) - if err != nil { + if err != nil || successCount == -1 { logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) successCount = 0 } @@ -222,7 +222,7 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun // 读取taskrunfailcount failCount, err := h.taskRepo.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) - if err != nil { + if err != nil || failCount == -1 { logs.CtxWarn(ctx, "获取TaskRunFailCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) failCount = 0 } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index cc0f55e11..0d9aacae1 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -46,7 +46,7 @@ func NewTraceHubImpl( buildHelper service.TraceFilterProcessorBuilder, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo, tRunRepo) - ticker := time.NewTicker(1 * time.Minute) // 每x分钟执行一次定时任务 + ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 impl := &TraceHubServiceImpl{ taskRepo: tRepo, taskRunRepo: tRunRepo, diff --git a/backend/modules/observability/infra/repo/mysql/task_run.go b/backend/modules/observability/infra/repo/mysql/task_run.go index d8a4405a4..22b908b5e 100755 --- a/backend/modules/observability/infra/repo/mysql/task_run.go +++ b/backend/modules/observability/infra/repo/mysql/task_run.go @@ -256,11 +256,6 @@ func (v *TaskRunDaoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, wor return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) } - // 检查是否有行被更新(乐观并发控制) - if info.RowsAffected == 0 { - return errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found or version conflict")) - } - logs.CtxInfo(ctx, "TaskRun updated with OCC", "id", id, "workspaceID", workspaceID, "rowsAffected", info.RowsAffected) return nil } diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index dee1ed8d0..a8a8d5a85 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -197,7 +197,19 @@ func (v *TaskRepoImpl) ListNonFinalTask(ctx context.Context) ([]*entity.Observab resp := make([]*entity.ObservabilityTask, len(results)) for i, result := range results { - resp[i] = convertor.TaskPO2DO(result) + taskDO := convertor.TaskPO2DO(result) + taskRuns, _, err := v.TaskRunDao.ListTaskRuns(ctx, mysql.ListTaskRunParam{ + WorkspaceID: ptr.Of(taskDO.WorkspaceID), + TaskID: ptr.Of(taskDO.ID), + ReqLimit: 1000, + ReqOffset: 0, + }) + if err != nil { + logs.CtxError(ctx, "ListTaskRuns err, taskID:%d, err:%v", taskDO.ID, err) + continue + } + taskDO.TaskRuns = convertor.TaskRunsPO2DO(taskRuns) + resp[i] = taskDO } // 异步缓存到 Redis(短TTL,因为非最终状态变化频繁) From 3ea8ef43cc5c2065a0497f74b004ddfd3fd2aba8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 19:20:04 +0800 Subject: [PATCH 249/462] fix --- .../task/taskexe/tracehub/scheduled_task.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 60bbc7a62..f747dbefe 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -61,7 +61,23 @@ func (h *TraceHubServiceImpl) runScheduledTask() { ctx = logs.SetLogID(ctx, logID) ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") // 读取所有非终态(成功/禁用)任务 - taskPOs, err := h.taskRepo.ListNonFinalTask(ctx) + taskPOs, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ + ReqLimit: 1000, + ReqOffset: 0, + TaskFilters: &filter.TaskFilterFields{ + FilterFields: []*filter.TaskFilterField{ + { + FieldName: ptr.Of(filter.TaskFieldNameTaskStatus), + Values: []string{ + string(task.TaskStatusUnstarted), + string(task.TaskStatusRunning), + }, + QueryType: ptr.Of(filter.QueryTypeIn), + FieldType: ptr.Of(filter.FieldTypeString), + }, + }, + }, + }) if err != nil { logs.CtxError(ctx, "获取非终态任务列表失败", "err", err) return From 95ca95d7718c98835e00a7384e13db60e3a921fd Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 19:26:06 +0800 Subject: [PATCH 250/462] fix --- .../observability/domain/task/taskexe/tracehub/backfill.go | 1 + .../observability/domain/task/taskexe/tracehub/subscriber.go | 3 ++- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go index 31be4d234..b1adf1360 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go @@ -101,6 +101,7 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity flushWait: sync.WaitGroup{}, maxFlushInterval: time.Second * 5, taskRepo: h.taskRepo, + runType: task.TaskRunTypeBackFill, } // 解析任务规则 var rule *task.Rule diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index d27a0bfc2..0affa923f 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -28,6 +28,7 @@ type spanSubscriber struct { flushWait sync.WaitGroup maxFlushInterval time.Duration taskRepo repo.ITaskRepo + runType task.TaskRunType } // Sampled 根据采样率计算是否被采样;采样数量将在 flush 时强制校验。 @@ -75,7 +76,7 @@ func (s *spanSubscriber) AddSpan(ctx context.Context, span *loop_span.Span) erro var taskRunConfig *entity.TaskRun if taskConfig != nil { for _, run := range taskConfig.TaskRuns { - if run.RunStatus == task.TaskStatusRunning { + if run.RunStatus == task.TaskStatusRunning && run.TaskType == string(s.runType) { taskRunConfig = run break } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 0d9aacae1..c1441868f 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -166,6 +166,7 @@ func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loo flushWait: sync.WaitGroup{}, maxFlushInterval: time.Second * 5, taskRepo: h.taskRepo, + runType: task.TaskRunTypeNewData, }) } From 9e7132b6f4f08c3b9631c1d987a5b862c9256ea1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 19:49:27 +0800 Subject: [PATCH 251/462] fix dispatch --- .../domain/task/repo/task_run.go | 8 ++-- .../task/taskexe/processor/auto_evaluate.go | 9 ++++- .../task/taskexe/processor/data_reflow.go | 26 +++++++++---- .../domain/task/taskexe/processor/factory.go | 2 +- .../task/taskexe/tracehub/subscriber.go | 28 ++++++++------ .../infra/repo/mysql/task_run.go | 38 +++++++++++++++++++ .../observability/infra/repo/task_run.go | 27 ++++++++++++- 7 files changed, 112 insertions(+), 26 deletions(-) diff --git a/backend/modules/observability/domain/task/repo/task_run.go b/backend/modules/observability/domain/task/repo/task_run.go index bbd6d3c79..56c196f56 100755 --- a/backend/modules/observability/domain/task/repo/task_run.go +++ b/backend/modules/observability/domain/task/repo/task_run.go @@ -14,21 +14,23 @@ import ( type ITaskRunRepo interface { // 基础CRUD操作 GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*entity.TaskRun, error) + GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) + GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) - + // 业务特定操作 ListNonFinalTaskRun(ctx context.Context) ([]*entity.TaskRun, error) ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID string) []*entity.TaskRun UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error GetObjListWithTaskRun(ctx context.Context) ([]string, []string) - + // TaskRun特有操作 ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*entity.TaskRun, error) ListTaskRunsByStatus(ctx context.Context, status string) ([]*entity.TaskRun, error) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) -} \ No newline at end of file +} diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 7a8409ce2..9a4882645 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -649,9 +649,14 @@ func GetContentInfo(ctx context.Context, contentType common.ContentType, value s } func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnCreateChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) //todo:[xun]加锁 - if ShouldTriggerBackfill(currentTask) { + taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) + if err != nil { + logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + if ShouldTriggerBackfill(currentTask) && taskRuns == nil { ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) sessionInfo := getSession(ctx, currentTask) var evaluationSetColumns []string diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index a9a604bff..8ce47496f 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -26,13 +26,16 @@ var _ taskexe.Processor = (*DataReflowProcessor)(nil) type DataReflowProcessor struct { datasetServiceAdaptor *service.DatasetServiceAdaptor taskRepo repo.ITaskRepo + taskRunRepo repo.ITaskRunRepo } func newDataReflowProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, - taskRepo repo.ITaskRepo) *DataReflowProcessor { + taskRepo repo.ITaskRepo, + taskRunRepo repo.ITaskRunRepo) *DataReflowProcessor { return &DataReflowProcessor{ datasetServiceAdaptor: datasetServiceProvider, taskRepo: taskRepo, + taskRunRepo: taskRunRepo, } } @@ -186,7 +189,6 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask if ShouldTriggerBackfill(currentTask) { taskConfig.TaskStatus = task.TaskStatusRunning } - cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() // 5、创建 taskrun @@ -274,15 +276,25 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre Status: task.RunStatusRunning, }, } - runType := task.TaskRunTypeNewData - if ShouldTriggerBackfill(currentTask) { - runType = task.TaskRunTypeBackFill - } - taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, runType) + + taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, task.TaskRunTypeNewData) if err != nil { return err } taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) + backfillTaskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) + if err != nil { + logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + if ShouldTriggerBackfill(currentTask) && backfillTaskRuns == nil { + taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, task.TaskRunTypeBackFill) + if err != nil { + return err + } + taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) + } + err = p.taskRepo.UpdateTask(ctx, taskConfig) if err != nil { return err diff --git a/backend/modules/observability/domain/task/taskexe/processor/factory.go b/backend/modules/observability/domain/task/taskexe/processor/factory.go index df7b5b067..acf05922f 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/taskexe/processor/factory.go @@ -45,5 +45,5 @@ func InitProcessor( taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) { autoEvaluteProc = newAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo) - dataReflowProc = newDataReflowProcessor(datasetServiceProvider, taskRepo) + dataReflowProc = newDataReflowProcessor(datasetServiceProvider, taskRepo, taskRunRepo) } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index 0affa923f..bb1e9883f 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -28,6 +28,7 @@ type spanSubscriber struct { flushWait sync.WaitGroup maxFlushInterval time.Duration taskRepo repo.ITaskRepo + taskRunRepo repo.ITaskRunRepo runType task.TaskRunType } @@ -60,7 +61,7 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, return true, nil } func (s *spanSubscriber) Creative(ctx context.Context) error { - err := s.processor.OnChangeProcessor(ctx, s.t, task.TaskStatusUnstarted) + err := s.processor.OnCreateChangeProcessor(ctx, s.t) if err != nil { return err } @@ -68,24 +69,27 @@ func (s *spanSubscriber) Creative(ctx context.Context) error { } func (s *spanSubscriber) AddSpan(ctx context.Context, span *loop_span.Span) error { - taskConfig, err := s.taskRepo.GetTask(ctx, s.t.GetID(), nil, nil) - if err != nil { - return err - } - var taskRunConfig *entity.TaskRun - if taskConfig != nil { - for _, run := range taskConfig.TaskRuns { - if run.RunStatus == task.TaskStatusRunning && run.TaskType == string(s.runType) { - taskRunConfig = run - break - } + var err error + if s.runType == task.TaskRunTypeNewData { + taskRunConfig, err = s.taskRunRepo.GetLatestNewDataTaskRun(ctx, nil, s.t.GetID()) + if err != nil { + logs.CtxWarn(ctx, "get latest new data task run failed, task_id=%d, err: %v", s.t.GetID(), err) + return err + } + } else { + taskRunConfig, err = s.taskRunRepo.GetBackfillTaskRun(ctx, nil, s.t.GetID()) + if err != nil { + logs.CtxWarn(ctx, "get backfill task run failed, task_id=%d, err: %v", s.t.GetID(), err) + return err } } + if taskRunConfig == nil { logs.CtxWarn(ctx, "no taskRunConfig:%v", taskRunConfig) return nil } + if taskRunConfig.RunEndAt.UnixMilli() < time.Now().UnixMilli() || taskRunConfig.RunStartAt.UnixMilli() > time.Now().UnixMilli() { return nil } diff --git a/backend/modules/observability/infra/repo/mysql/task_run.go b/backend/modules/observability/infra/repo/mysql/task_run.go index 22b908b5e..cec593895 100755 --- a/backend/modules/observability/infra/repo/mysql/task_run.go +++ b/backend/modules/observability/infra/repo/mysql/task_run.go @@ -40,6 +40,8 @@ type ListTaskRunParam struct { type ITaskRunDao interface { // 基础CRUD操作 GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*model.ObservabilityTaskRun, error) + GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*model.ObservabilityTaskRun, error) + GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*model.ObservabilityTaskRun, error) CreateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) (int64, error) UpdateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) error DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error @@ -114,6 +116,42 @@ func (v *TaskRunDaoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID * } return taskRunPo, nil } +func (v *TaskRunDaoImpl) GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*model.ObservabilityTaskRun, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.TaskType.Eq(task.TaskRunTypeBackFill)).Where(q.TaskID.Eq(taskID)) + + if workspaceID != nil { + qd = qd.Where(q.WorkspaceID.Eq(*workspaceID)) + } + taskRunPo, err := qd.First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found")) + } else { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + } + return taskRunPo, nil + +} +func (v *TaskRunDaoImpl) GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*model.ObservabilityTaskRun, error) { + q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun + qd := q.WithContext(ctx).Where(q.TaskType.Eq(task.TaskRunTypeNewData)).Where(q.TaskID.Eq(taskID)) + + if workspaceID != nil { + qd = qd.Where(q.WorkspaceID.Eq(*workspaceID)) + } + taskRunPo, err := qd.Order(q.CreatedAt.Desc()).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found")) + } else { + return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + } + } + return taskRunPo, nil + +} func (v *TaskRunDaoImpl) CreateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) (int64, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun diff --git a/backend/modules/observability/infra/repo/task_run.go b/backend/modules/observability/infra/repo/task_run.go index b740bd472..592b38eb1 100755 --- a/backend/modules/observability/infra/repo/task_run.go +++ b/backend/modules/observability/infra/repo/task_run.go @@ -74,6 +74,31 @@ func (v *TaskRunRepoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID return taskRunDO, nil } +// GetBackfillTaskRun 获取Backfill类型的TaskRun +func (v *TaskRunRepoImpl) GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { + taskRunPo, err := v.TaskRunDao.GetBackfillTaskRun(ctx, workspaceID, taskID) + if err != nil { + return nil, err + } + if taskRunPo == nil { + return nil, nil + } + return convertor.TaskRunPO2DO(taskRunPo), nil +} + +// GetNewDataTaskRun 获取NewData类型的TaskRun + +func (v *TaskRunRepoImpl) GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { + taskRunPo, err := v.TaskRunDao.GetLatestNewDataTaskRun(ctx, workspaceID, taskID) + if err != nil { + return nil, err + } + if taskRunPo == nil { + return nil, nil + } + return convertor.TaskRunPO2DO(taskRunPo), nil +} + // ListTaskRuns 获取TaskRun列表 func (v *TaskRunRepoImpl) ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) { results, total, err := v.TaskRunDao.ListTaskRuns(ctx, param) @@ -429,4 +454,4 @@ func isActiveStatus(status string) bool { } } return false -} \ No newline at end of file +} From f668d37043af3dd4edfd1fdec1a7bd1663feca70 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 19:57:17 +0800 Subject: [PATCH 252/462] fix --- backend/modules/observability/infra/repo/mysql/task_run.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/infra/repo/mysql/task_run.go b/backend/modules/observability/infra/repo/mysql/task_run.go index cec593895..6c9608a7d 100755 --- a/backend/modules/observability/infra/repo/mysql/task_run.go +++ b/backend/modules/observability/infra/repo/mysql/task_run.go @@ -126,7 +126,7 @@ func (v *TaskRunDaoImpl) GetBackfillTaskRun(ctx context.Context, workspaceID *in taskRunPo, err := qd.First() if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found")) + return nil, nil } else { return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) } From 4d46b8ae3bf0e5aba2c938d90c6d06c58e253be9 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 19:57:38 +0800 Subject: [PATCH 253/462] fix --- backend/modules/observability/infra/repo/mysql/task_run.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/infra/repo/mysql/task_run.go b/backend/modules/observability/infra/repo/mysql/task_run.go index 6c9608a7d..8fdcf1de2 100755 --- a/backend/modules/observability/infra/repo/mysql/task_run.go +++ b/backend/modules/observability/infra/repo/mysql/task_run.go @@ -144,7 +144,7 @@ func (v *TaskRunDaoImpl) GetLatestNewDataTaskRun(ctx context.Context, workspaceI taskRunPo, err := qd.Order(q.CreatedAt.Desc()).First() if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found")) + return nil, nil } else { return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) } From 6fb4283a18dbff1f393f7b57e8a8eb2ed20fae03 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 20:29:13 +0800 Subject: [PATCH 254/462] fix --- .../application/convertor/task/task.go | 22 +++++++++++-- .../task/taskexe/processor/auto_evaluate.go | 29 ++++++++++++++++- .../task/taskexe/processor/data_reflow.go | 31 +++++++++++++++++-- .../domain/task/taskexe/types.go | 6 ++-- .../observability/infra/repo/mysql/task.go | 24 ++++++-------- 5 files changed, 90 insertions(+), 22 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index aafe9393c..eef154357 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -25,6 +25,13 @@ import ( "github.com/coze-dev/coze-loop/backend/pkg/logs" ) +func TaskDTO2PO(ctx context.Context, v *task.Task, userMap map[string]*entity_common.UserInfo) *entity.ObservabilityTask { + if v == nil { + return nil + } + taskInfo := &entity.ObservabilityTask{} + return taskInfo +} func TaskPOs2DOs(ctx context.Context, taskPOs []*entity.ObservabilityTask, userInfos map[string]*entity_common.UserInfo) []*task.Task { var taskList []*task.Task if len(taskPOs) == 0 { @@ -239,6 +246,17 @@ func CreateTaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *en if taskDO == nil { return nil } + var createdBy, updatedBy string + if taskDO.GetBaseInfo().GetCreatedBy() != nil { + createdBy = taskDO.GetBaseInfo().GetCreatedBy().GetUserID() + } + if taskDO.GetBaseInfo().GetUpdatedBy() != nil { + updatedBy = taskDO.GetBaseInfo().GetUpdatedBy().GetUserID() + } + if userID != "" { + createdBy = userID + updatedBy = userID + } return &entity.ObservabilityTask{ WorkspaceID: taskDO.GetWorkspaceID(), Name: taskDO.GetName(), @@ -252,8 +270,8 @@ func CreateTaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *en TaskConfig: TaskConfigDTO2PO(ctx, taskDO.GetTaskConfig()), CreatedAt: time.Now(), UpdatedAt: time.Now(), - CreatedBy: userID, - UpdatedBy: userID, + CreatedBy: createdBy, + UpdatedBy: updatedBy, BackfillEffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetBackfillEffectiveTime())), } } diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 9a4882645..2c8e00db4 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -845,7 +845,34 @@ func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, curr } return nil } -func (p *AutoEvaluteProcessor) OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error { +func (p *AutoEvaluteProcessor) OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { + switch taskOp { + case task.TaskStatusSuccess: + if currentTask.GetTaskStatus() != task.TaskStatusDisabled { + currentTask.TaskStatus = ptr.Of(task.TaskStatusSuccess) + } + case task.TaskStatusRunning: + if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { + currentTask.TaskStatus = ptr.Of(task.TaskStatusRunning) + } + case task.TaskStatusDisabled: + if currentTask.GetTaskStatus() != task.TaskStatusDisabled { + currentTask.TaskStatus = ptr.Of(task.TaskStatusDisabled) + } + case task.TaskStatusPending: + if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { + currentTask.TaskStatus = ptr.Of(task.TaskStatusPending) + } + default: + return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) + } + // 2、更新任务 + taskPO := tconv.CreateTaskDTO2PO(ctx, currentTask, "") + err := p.taskRepo.UpdateTask(ctx, taskPO) + if err != nil { + logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } return nil } func (p *AutoEvaluteProcessor) OnFinishChangeProcessor(ctx context.Context, task *task.Task) error { diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 8ce47496f..8259b3bce 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -5,6 +5,7 @@ package processor import ( "context" + "fmt" "time" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" @@ -301,8 +302,34 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre } return nil } -func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task) error { - // +func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { + switch taskOp { + case task.TaskStatusSuccess: + if currentTask.GetTaskStatus() != task.TaskStatusDisabled { + currentTask.TaskStatus = ptr.Of(task.TaskStatusSuccess) + } + case task.TaskStatusRunning: + if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { + currentTask.TaskStatus = ptr.Of(task.TaskStatusRunning) + } + case task.TaskStatusDisabled: + if currentTask.GetTaskStatus() != task.TaskStatusDisabled { + currentTask.TaskStatus = ptr.Of(task.TaskStatusDisabled) + } + case task.TaskStatusPending: + if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { + currentTask.TaskStatus = ptr.Of(task.TaskStatusPending) + } + default: + return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) + } + // 2、更新任务 + taskPO := tconv.CreateTaskDTO2PO(ctx, currentTask, "") + err := p.taskRepo.UpdateTask(ctx, taskPO) + if err != nil { + logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } return nil } func (p *DataReflowProcessor) OnFinishChangeProcessor(ctx context.Context, currentTask *task.Task) error { diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index 6b6431525..4d4d3fed6 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -38,9 +38,9 @@ type Processor interface { OnChangeProcessor(ctx context.Context, task *task.Task, taskOp task.TaskStatus) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 Finish(ctx context.Context, config any, trigger *Trigger) error //Finish - OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnCreateChangeProcessor - OnUpdateChangeProcessor(ctx context.Context, task *task.Task) error //OnUpdateChangeProcessor - OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor + OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnCreateChangeProcessor + OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error //OnUpdateChangeProcessor + OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig, runType task.TaskRunType) (*task_entity.TaskRun, error) //OnCreateTaskRunProcessor OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error //OnFinishTaskRunProcessor diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index 84f9ba162..dbaf00856 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -278,26 +278,22 @@ func (v *TaskDaoImpl) buildSampleRateFilter(q *query.Query, f *filter.TaskFilter return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("no value provided for sample rate")) } - // 暂时保留原有的注释逻辑,等待具体实现 - // sampleRate, err := strconv.ParseFloat(f.Values[0], 64) - // if err != nil { - // return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid sample rate: %v", err.Error())) - // } + // 解析采样率值 + sampleRate, err := strconv.ParseFloat(f.Values[0], 64) + if err != nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithMsgParam("invalid sample rate: %v", err.Error())) + } + // 构建 JSON_EXTRACT 表达式 switch *f.QueryType { case filter.QueryTypeGte: - // filterExpr = q.ObservabilityTask.Sampler.Gte(sampleRate) - // db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') >= ?", sampleRate) - return nil, nil + return field.NewUnsafeFieldRaw("CAST(JSON_EXTRACT(?, '$.sample_rate') AS DECIMAL(10,4)) >= ?", q.ObservabilityTask.Sampler, sampleRate), nil case filter.QueryTypeLte: - // db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') <= ?", sampleRate) - return nil, nil + return field.NewUnsafeFieldRaw("CAST(JSON_EXTRACT(?, '$.sample_rate') AS DECIMAL(10,4)) <= ?", q.ObservabilityTask.Sampler, sampleRate), nil case filter.QueryTypeEq: - // db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') = ?", sampleRate) - return nil, nil + return field.NewUnsafeFieldRaw("CAST(JSON_EXTRACT(?, '$.sample_rate') AS DECIMAL(10,4)) = ?", q.ObservabilityTask.Sampler, sampleRate), nil case filter.QueryTypeNotEq: - // db = db.Where("JSON_EXTRACT(sampler, '$.sample_rate') != ?", sampleRate) - return nil, nil + return field.NewUnsafeFieldRaw("CAST(JSON_EXTRACT(?, '$.sample_rate') AS DECIMAL(10,4)) != ?", q.ObservabilityTask.Sampler, sampleRate), nil default: return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("invalid query type for sample rate")) } From dd94abb55845102ea6c1050c294d42343d4db7e5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 20:32:06 +0800 Subject: [PATCH 255/462] fix --- .../observability/application/convertor/task/task.go | 7 ------- .../domain/task/taskexe/tracehub/scheduled_task.go | 7 ++----- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index eef154357..4d0fa1714 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -25,13 +25,6 @@ import ( "github.com/coze-dev/coze-loop/backend/pkg/logs" ) -func TaskDTO2PO(ctx context.Context, v *task.Task, userMap map[string]*entity_common.UserInfo) *entity.ObservabilityTask { - if v == nil { - return nil - } - taskInfo := &entity.ObservabilityTask{} - return taskInfo -} func TaskPOs2DOs(ctx context.Context, taskPOs []*entity.ObservabilityTask, userInfos map[string]*entity_common.UserInfo) []*task.Task { var taskList []*task.Task if len(taskPOs) == 0 { diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index f747dbefe..2e68869cd 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -121,12 +121,9 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) if time.Now().After(endTime) { - updateMap := map[string]interface{}{ - "task_status": task.TaskStatusSuccess, - } - err = h.taskRepo.UpdateTaskWithOCC(ctx, taskInfo.GetID(), taskInfo.GetWorkspaceID(), updateMap) + err = proc.OnUpdateChangeProcessor(ctx, taskInfo, task.TaskStatusSuccess) if err != nil { - logs.CtxError(ctx, "[auto_task] UpdateTask err:%v", err) + logs.CtxError(ctx, "OnUpdateChangeProcessor err:%v", err) continue } } From f5a188d78f6579eb743730f8058a9e25b26a0067 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 21:05:31 +0800 Subject: [PATCH 256/462] fix --- .../domain/task/service/task_service.go | 2 +- .../task/taskexe/processor/auto_evaluate.go | 226 ++---------------- .../task/taskexe/processor/data_reflow.go | 103 ++------ .../task/taskexe/tracehub/scheduled_task.go | 2 +- .../task/taskexe/tracehub/subscriber.go | 2 +- .../domain/task/taskexe/types.go | 10 +- 6 files changed, 49 insertions(+), 296 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 5af724de5..e3a725dc3 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -138,7 +138,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r // 自动评测历史回溯——创建空壳子 taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) - if err = proc.OnCreateChangeProcessor(ctx, taskConfig); err != nil { + if err = proc.OnChangeProcessor(ctx, taskConfig); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) //任务改为禁用? if err1 := t.TaskRepo.DeleteTask(ctx, taskPO); err1 != nil { diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 2c8e00db4..ff815d450 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -160,8 +160,8 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * return nil } -func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) +func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error { + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) //todo:[xun]加锁 ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) sessionInfo := getSession(ctx, currentTask) @@ -284,8 +284,10 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas if err != nil { return err } - if ShouldTriggerBackfill(currentTask) { + runType := task.TaskRunTypeNewData + if isBackFill { taskConfig.TaskStatus = task.TaskStatusRunning + runType = task.TaskRunTypeBackFill } var cycleStartAt, cycleEndAt, endAt int64 @@ -334,21 +336,13 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas Status: task.TaskStatusRunning, }, } - taskRun := &task_entity.TaskRun{ - TaskID: currentTask.GetID(), - WorkspaceID: currentTask.GetWorkspaceID(), - TaskType: currentTask.GetTaskType(), - RunStatus: task.RunStatusRunning, - RunStartAt: time.UnixMilli(cycleStartAt), - RunEndAt: time.UnixMilli(cycleEndAt), - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), - } // 6、更新任务配置 - // todo:[xun]改task_run? - _, err = p.taskRunRepo.CreateTaskRun(ctx, taskRun) + taskRun, err := p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, runType) + if err != nil { + return err + } + taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) err = p.taskRepo.UpdateTask(ctx, taskConfig) if err != nil { return err @@ -648,7 +642,7 @@ func GetContentInfo(ctx context.Context, contentType common.ContentType, value s return content, nil } -func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { +func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnCreateChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) //todo:[xun]加锁 taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) @@ -656,193 +650,21 @@ func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, curr logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } + var isBackFill bool if ShouldTriggerBackfill(currentTask) && taskRuns == nil { - ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) - sessionInfo := getSession(ctx, currentTask) - var evaluationSetColumns []string - var evaluatorVersionIds []int64 - var evaluatorFieldMappings []*expt.EvaluatorFieldMapping - evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id") - autoEvaluateConfigs := currentTask.GetTaskConfig().GetAutoEvaluateConfigs() - evaluationSetSchema, fromEvalSet := getBasicEvaluationSetSchema(evaluationSetColumns) - for _, autoEvaluateConfig := range autoEvaluateConfigs { - evaluatorVersionIds = append(evaluatorVersionIds, autoEvaluateConfig.EvaluatorVersionID) - filedMappings := autoEvaluateConfig.GetFieldMappings() - for _, fieldMapping := range filedMappings { - if fieldMapping.GetFieldSchema() == nil { - continue - } - fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ - FieldName: gptr.Of(fieldMapping.GetFieldSchema().GetName()), - FromFieldName: gptr.Of(fieldMapping.GetEvalSetName()), - }) - if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { - continue - } - // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, - evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ - Key: gptr.Of(fieldMapping.GetEvalSetName()), - Name: gptr.Of(fieldMapping.GetEvalSetName()), - Description: gptr.Of(fieldMapping.TraceFieldJsonpath), - ContentType: gptr.Of(fieldMapping.GetFieldSchema().GetContentType()), - //DefaultDisplayFormat: gptr.Of(dataset.FieldDisplayFormat_PlainText), - TextSchema: fieldMapping.GetFieldSchema().TextSchema, - //Hidden: gptr.Of(false), - }) - evaluationSetColumns = append(evaluationSetColumns, fieldMapping.GetEvalSetName()) - } - - evaluatorFieldMappings = append(evaluatorFieldMappings, &expt.EvaluatorFieldMapping{ - EvaluatorVersionID: autoEvaluateConfig.GetEvaluatorVersionID(), - FromEvalSet: fromEvalSet, - }) - } - category := getCategory(currentTask.TaskType) - schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) - // 1、创建评测集 - logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) - datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( - 0, - currentTask.GetWorkspaceID(), - fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()), - category, - schema, - sessionInfo, - )) - if err != nil { - logs.CtxError(ctx, "CreateDataset failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) - return err - //datasetID = 7548288691995672577 - } - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) - // 2、创建实验 - maxAliveTime := currentTask.GetRule().GetEffectiveTime().GetEndAt() - currentTask.GetRule().GetEffectiveTime().GetStartAt() - if currentTask.GetRule().GetSampler().GetIsCycle() { - switch *currentTask.GetRule().GetSampler().CycleTimeUnit { - case task.TimeUnitDay: - maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 24 * time.Hour.Milliseconds() - case task.TimeUnitWeek: - maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 7 * 24 * time.Hour.Milliseconds() - default: - maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 10 * time.Minute.Milliseconds() - } - } - submitExperimentReq := rpc.SubmitExperimentReq{ - WorkspaceID: currentTask.GetWorkspaceID(), - EvalSetVersionID: gptr.Of(datasetID), - EvaluatorVersionIds: evaluatorVersionIds, - Name: gptr.Of(fmt.Sprintf("自动化任务实验_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day())), - Desc: gptr.Of("自动化任务实验"), - EvalSetID: gptr.Of(datasetID), - EvaluatorFieldMapping: evaluatorFieldMappings, - TargetFieldMapping: &expt.TargetFieldMapping{ - FromEvalSet: []*expt.FieldMapping{}, - }, - CreateEvalTargetParam: &eval_target.CreateEvalTargetParam{ - SourceTargetID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), - EvalTargetType: gptr.Of(eval_target_d.EvalTargetType_Trace), - }, - ExptType: gptr.Of(expt.ExptType_Online), - MaxAliveTime: gptr.Of(maxAliveTime), - SourceType: gptr.Of(expt.SourceType_AutoTask), - SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), - Session: sessionInfo, - } - logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) - exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) - if err != nil { - logs.CtxError(ctx, "SubmitExperiment failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) - return err - } - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) - - evaluationSetConfig, err := p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, currentTask.GetWorkspaceID(), datasetID, category) - if err != nil { - logs.CtxError(ctx, "[task-debug] GetEvaluationSet err:%v", err) - return err - } - // 3、更新任务状态 - //if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { - // updateMap := map[string]interface{}{ - // "task_status": task.TaskStatusRunning, - // } - // logs.CtxInfo(ctx, "currentTask.GetID():%d, currentTask.GetWorkspaceID():%d", currentTask.GetID(), currentTask.GetWorkspaceID()) - // err = p.taskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) - // if err != nil { - // return err - // } - //} - // 4、更新任务配置 - effectiveTime := currentTask.GetRule().GetEffectiveTime() - taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) - if err != nil { - return err - } - runType := task.TaskRunTypeNewData - if ShouldTriggerBackfill(currentTask) { - taskConfig.TaskStatus = task.TaskStatusRunning - runType = task.TaskRunTypeBackFill - } - - var cycleStartAt, cycleEndAt, endAt int64 - currentTime := time.Now().UnixMilli() - - if effectiveTime.StartAt != nil && effectiveTime.EndAt != nil { - endAt = effectiveTime.GetEndAt() - if len(taskConfig.TaskRuns) == 0 { - // 首次创建 taskrun,从任务生效时间开始 - cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) - } else { - // 找到最新的 cycleEndAt 作为新的 cycleStartAt - for _, run := range taskConfig.TaskRuns { - if run.RunStartAt.UnixMilli() > cycleStartAt { - cycleStartAt = run.RunEndAt.UnixMilli() - } - } - cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) - } - cycleEndAt = cycleStartAt + maxAliveTime - - // 确保周期开始时间不早于任务生效时间 - if cycleStartAt < effectiveTime.GetStartAt() { - cycleStartAt = effectiveTime.GetStartAt() - cycleEndAt = cycleStartAt + maxAliveTime - } - - // 确保周期结束时间不晚于任务结束时间 - if cycleEndAt > effectiveTime.GetEndAt() { - cycleEndAt = effectiveTime.GetEndAt() - } - } - - logs.CtxInfo(ctx, "Creating taskrun with cycle: startAt=%d, endAt=%d, currentTime=%d", cycleStartAt, cycleEndAt, currentTime) - // 5、创建 taskrun - taskRunConfig := &task.TaskRunConfig{ - AutoEvaluateRunConfig: &task.AutoEvaluateRunConfig{ - ExptID: exptID, - ExptRunID: exptRunID, - EvalID: datasetID, - SchemaID: evaluationSetConfig.DatasetVersion.DatasetSchema.ID, - Schema: ptr.Of(ToJSONString(ctx, evaluationSetConfig.DatasetVersion.DatasetSchema.FieldSchemas)), - EndAt: endAt, - CycleStartAt: cycleStartAt, - CycleEndAt: cycleEndAt, - Status: task.TaskStatusRunning, - }, - } - - // 6、更新任务配置 - // todo:[xun]改task_run? - taskRun, err := p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, runType) - if err != nil { - return err - } - taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) - err = p.taskRepo.UpdateTask(ctx, taskConfig) - if err != nil { - return err - } + isBackFill = true } + err = p.OnCreateChangeProcessor(ctx, currentTask, isBackFill) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + return nil } func (p *AutoEvaluteProcessor) OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 8259b3bce..c57c4ce30 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -152,82 +152,21 @@ func ShouldTriggerBackfill(taskDO *task.Task) bool { backfillTime.GetStartAt() < backfillTime.GetEndAt() } -func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { - logs.CtxInfo(ctx, "[auto_task] DataReflowProcessor OnChangeProcessor, taskID:%d, taskOp:%s, task:%+v", currentTask.GetID(), taskOp, currentTask) - session := getSession(ctx, currentTask) - category := getCategory(currentTask.TaskType) - dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() - var err error - // 1、创建数据集 - logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) - var datasetID int64 - for _, dataReflowConfig := range dataReflowConfigs { - if dataReflowConfig.DatasetID != nil { - datasetID = *dataReflowConfig.DatasetID - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", dataReflowConfig.DatasetID) - continue - } - schema := convertDatasetSchemaDTO2DO(dataReflowConfig.GetDatasetSchema()) - datasetID, err = p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( - 0, - currentTask.GetWorkspaceID(), - dataReflowConfig.GetDatasetName(), - category, - schema, - session, - )) - if err != nil { - return err - } - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) - } - - // 4、更新任务配置 - taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) +func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task) error { + logs.CtxInfo(ctx, "[auto_task] DataReflowProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) + taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { + logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } - if ShouldTriggerBackfill(currentTask) { - taskConfig.TaskStatus = task.TaskStatusRunning - } - cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() - cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() - // 5、创建 taskrun - taskRunConfig := &task.TaskRunConfig{ - DataReflowRunConfig: &task.DataReflowRunConfig{ - DatasetID: datasetID, - EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), - CycleStartAt: cycleStartAt, - CycleEndAt: cycleEndAt, - Status: task.RunStatusRunning, - }, - } - taskConfig.TaskRuns = append(taskConfig.TaskRuns, &task_entity.TaskRun{ - ID: datasetID, - TaskID: currentTask.GetID(), - WorkspaceID: currentTask.GetWorkspaceID(), - TaskType: currentTask.GetTaskType(), - RunStatus: task.RunStatusRunning, - RunStartAt: time.UnixMilli(cycleStartAt), - RunEndAt: time.UnixMilli(cycleEndAt), - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), - }) - for _, run := range taskConfig.TaskRuns { - logs.CtxInfo(ctx, "taskConfig:%+v", &run) - } - - // 6、更新任务配置 - // todo:[xun]改task_run? - err = p.taskRepo.UpdateTask(ctx, taskConfig) - if err != nil { - return err + if ShouldTriggerBackfill(currentTask) && taskRuns == nil { + err = p.OnCreateChangeProcessor(ctx, currentTask, true) } + err = p.OnCreateChangeProcessor(ctx, currentTask, false) return nil } -func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { +func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error { // 1、创建/更新数据集 session := getSession(ctx, currentTask) category := getCategory(currentTask.TaskType) @@ -261,9 +200,8 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre if err != nil { return err } - if ShouldTriggerBackfill(currentTask) { - taskConfig.TaskStatus = task.TaskStatusRunning - } + taskConfig.TaskStatus = task.TaskStatusRunning + // 3、创建 taskrun:历史回溯生成一个taskRun,新数据生成一个taskRun cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() @@ -277,24 +215,17 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre Status: task.RunStatusRunning, }, } - - taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, task.TaskRunTypeNewData) - if err != nil { - return err + var runType task.TaskRunType + if isBackFill { + runType = task.TaskRunTypeBackFill + } else { + runType = task.TaskRunTypeNewData } - taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) - backfillTaskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) + taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, runType) if err != nil { - logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } - if ShouldTriggerBackfill(currentTask) && backfillTaskRuns == nil { - taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, task.TaskRunTypeBackFill) - if err != nil { - return err - } - taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) - } + taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) err = p.taskRepo.UpdateTask(ctx, taskConfig) if err != nil { diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 2e68869cd..0adc59d20 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -129,7 +129,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } // 如果任务状态为unstarted,到任务开始时间就开始create if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { - err = proc.OnChangeProcessor(ctx, taskInfo, task.TaskStatusUnstarted) + err = proc.OnChangeProcessor(ctx, taskInfo) if err != nil { logs.CtxError(ctx, "OnChangeProcessor err:%v", err) continue diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index bb1e9883f..b8d1fa6f9 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -61,7 +61,7 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, return true, nil } func (s *spanSubscriber) Creative(ctx context.Context) error { - err := s.processor.OnCreateChangeProcessor(ctx, s.t) + err := s.processor.OnChangeProcessor(ctx, s.t) if err != nil { return err } diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index 4d4d3fed6..bae64ac52 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -33,12 +33,12 @@ const ( ) type Processor interface { - ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 - Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 - OnChangeProcessor(ctx context.Context, task *task.Task, taskOp task.TaskStatus) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 - Finish(ctx context.Context, config any, trigger *Trigger) error //Finish + ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 + Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 + OnChangeProcessor(ctx context.Context, task *task.Task) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 + Finish(ctx context.Context, config any, trigger *Trigger) error //Finish - OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnCreateChangeProcessor + OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error //OnCreateChangeProcessor OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error //OnUpdateChangeProcessor OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor From 7309a6e2dd35ec2a40a752537229628f37668373 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 21:27:46 +0800 Subject: [PATCH 257/462] fix --- .../domain/task/service/task_service.go | 2 +- .../domain/task/taskexe/processor/auto_evaluate.go | 11 +++-------- .../domain/task/taskexe/processor/data_reflow.go | 14 ++++++++------ .../domain/task/taskexe/tracehub/scheduled_task.go | 5 +++++ .../domain/task/taskexe/tracehub/subscriber.go | 2 +- .../observability/domain/task/taskexe/types.go | 4 ++-- 6 files changed, 20 insertions(+), 18 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index e3a725dc3..5af724de5 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -138,7 +138,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r // 自动评测历史回溯——创建空壳子 taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) - if err = proc.OnChangeProcessor(ctx, taskConfig); err != nil { + if err = proc.OnCreateChangeProcessor(ctx, taskConfig); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) //任务改为禁用? if err1 := t.TaskRepo.DeleteTask(ctx, taskPO); err1 != nil { diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index ff815d450..a1f4d98b8 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -160,7 +160,7 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * return nil } -func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error { +func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) //todo:[xun]加锁 ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) @@ -642,7 +642,7 @@ func GetContentInfo(ctx context.Context, contentType common.ContentType, value s return content, nil } -func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task) error { +func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnCreateChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) //todo:[xun]加锁 taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) @@ -654,16 +654,11 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas if ShouldTriggerBackfill(currentTask) && taskRuns == nil { isBackFill = true } - err = p.OnCreateChangeProcessor(ctx, currentTask, isBackFill) + err = p.OnChangeProcessor(ctx, currentTask, isBackFill) if err != nil { logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } - err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) - if err != nil { - logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } return nil } diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index c57c4ce30..6b1afa0cc 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -152,7 +152,7 @@ func ShouldTriggerBackfill(taskDO *task.Task) bool { backfillTime.GetStartAt() < backfillTime.GetEndAt() } -func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task) error { +func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { logs.CtxInfo(ctx, "[auto_task] DataReflowProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { @@ -160,13 +160,17 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask return err } if ShouldTriggerBackfill(currentTask) && taskRuns == nil { - err = p.OnCreateChangeProcessor(ctx, currentTask, true) + err = p.OnChangeProcessor(ctx, currentTask, true) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } } - err = p.OnCreateChangeProcessor(ctx, currentTask, false) + err = p.OnChangeProcessor(ctx, currentTask, false) return nil } -func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error { +func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error { // 1、创建/更新数据集 session := getSession(ctx, currentTask) category := getCategory(currentTask.TaskType) @@ -200,8 +204,6 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre if err != nil { return err } - taskConfig.TaskStatus = task.TaskStatusRunning - // 3、创建 taskrun:历史回溯生成一个taskRun,新数据生成一个taskRun cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 0adc59d20..d7483488e 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -134,6 +134,11 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxError(ctx, "OnChangeProcessor err:%v", err) continue } + err = proc.OnUpdateChangeProcessor(ctx, taskInfo, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnUpdateChangeProcessor err:%v", err) + continue + } } } } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index b8d1fa6f9..bb1e9883f 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -61,7 +61,7 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, return true, nil } func (s *spanSubscriber) Creative(ctx context.Context) error { - err := s.processor.OnChangeProcessor(ctx, s.t) + err := s.processor.OnCreateChangeProcessor(ctx, s.t) if err != nil { return err } diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index bae64ac52..2f2838f7b 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -35,10 +35,10 @@ const ( type Processor interface { ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 - OnChangeProcessor(ctx context.Context, task *task.Task) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 + OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 Finish(ctx context.Context, config any, trigger *Trigger) error //Finish - OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error //OnCreateChangeProcessor + OnChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error //OnCreateChangeProcessor OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error //OnUpdateChangeProcessor OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor From db7879f36775342081e1220a0a148f974d535b7f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 18 Sep 2025 21:35:16 +0800 Subject: [PATCH 258/462] fix --- .../domain/task/taskexe/tracehub/scheduled_task.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index d7483488e..6d78a9114 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -129,7 +129,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } // 如果任务状态为unstarted,到任务开始时间就开始create if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { - err = proc.OnChangeProcessor(ctx, taskInfo) + err = proc.OnChangeProcessor(ctx, taskInfo, false) if err != nil { logs.CtxError(ctx, "OnChangeProcessor err:%v", err) continue From c0502b6468c0f9b7aacf64183a95cfcaa8f11798 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 10:51:50 +0800 Subject: [PATCH 259/462] fix --- .../domain/task/taskexe/tracehub/scheduled_task.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 6d78a9114..eaad36cbb 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -226,7 +226,7 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun count, err := h.taskRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) if err != nil || count == -1 { logs.CtxWarn(ctx, "获取TaskRunCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) - count = 0 + return } info.TaskRunCount = count @@ -234,7 +234,7 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun successCount, err := h.taskRepo.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) if err != nil || successCount == -1 { logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) - successCount = 0 + return } info.TaskRunSuccCount = successCount @@ -242,7 +242,7 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun failCount, err := h.taskRepo.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) if err != nil || failCount == -1 { logs.CtxWarn(ctx, "获取TaskRunFailCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) - failCount = 0 + return } info.TaskRunFailCount = failCount From c800d08d1ddb9a33edc8431ff89aa0005a0b999f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 11:18:58 +0800 Subject: [PATCH 260/462] fix --- .../task/taskexe/processor/auto_evaluate.go | 27 ++++++++++--- .../task/taskexe/processor/data_reflow.go | 40 ++++++++++++++++++- .../task/taskexe/tracehub/scheduled_task.go | 8 +--- .../task/taskexe/tracehub/subscriber.go | 2 +- 4 files changed, 63 insertions(+), 14 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index a1f4d98b8..bd7fad479 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -650,14 +650,29 @@ func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, curr logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } - var isBackFill bool if ShouldTriggerBackfill(currentTask) && taskRuns == nil { - isBackFill = true + err = p.OnChangeProcessor(ctx, currentTask, true) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } } - err = p.OnChangeProcessor(ctx, currentTask, isBackFill) - if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err + if ShouldTriggerNewData(currentTask) { + err = p.OnChangeProcessor(ctx, currentTask, false) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } } return nil diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 6b1afa0cc..a9cbdff88 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -152,6 +152,27 @@ func ShouldTriggerBackfill(taskDO *task.Task) bool { backfillTime.GetStartAt() < backfillTime.GetEndAt() } +func ShouldTriggerNewData(taskDO *task.Task) bool { + // 检查任务类型 + taskType := taskDO.GetTaskType() + if taskType != task.TaskTypeAutoEval && taskType != task.TaskTypeAutoDataReflow { + return false + } + rule := taskDO.GetRule() + if rule == nil { + return false + } + + effectiveTime := rule.GetEffectiveTime() + if effectiveTime == nil { + return false + } + + return effectiveTime.GetEndAt() > 0 && + effectiveTime.GetStartAt() > 0 && + time.Now().Before(time.Unix(effectiveTime.GetStartAt(), 0)) +} + func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { logs.CtxInfo(ctx, "[auto_task] DataReflowProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) @@ -165,8 +186,25 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } + err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + } + + if ShouldTriggerNewData(currentTask) { + err = p.OnChangeProcessor(ctx, currentTask, false) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } } - err = p.OnChangeProcessor(ctx, currentTask, false) return nil } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index eaad36cbb..cc511f464 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -121,6 +121,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) if time.Now().After(endTime) { + //OnFinishChangeProcessor err = proc.OnUpdateChangeProcessor(ctx, taskInfo, task.TaskStatusSuccess) if err != nil { logs.CtxError(ctx, "OnUpdateChangeProcessor err:%v", err) @@ -129,16 +130,11 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } // 如果任务状态为unstarted,到任务开始时间就开始create if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { - err = proc.OnChangeProcessor(ctx, taskInfo, false) + err = proc.OnCreateChangeProcessor(ctx, taskInfo) if err != nil { logs.CtxError(ctx, "OnChangeProcessor err:%v", err) continue } - err = proc.OnUpdateChangeProcessor(ctx, taskInfo, task.TaskStatusRunning) - if err != nil { - logs.CtxError(ctx, "OnUpdateChangeProcessor err:%v", err) - continue - } } } } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index bb1e9883f..6a4ad120a 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -61,7 +61,7 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, return true, nil } func (s *spanSubscriber) Creative(ctx context.Context) error { - err := s.processor.OnCreateChangeProcessor(ctx, s.t) + err := s.processor.OnChangeProcessor(ctx, s.t, false) if err != nil { return err } From ba9208c818c3d45d7d1d743fca9887090abf325c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 11:27:23 +0800 Subject: [PATCH 261/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 8 ++++---- .../domain/task/taskexe/processor/data_reflow.go | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index bd7fad479..b3016d17e 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -681,19 +681,19 @@ func (p *AutoEvaluteProcessor) OnUpdateChangeProcessor(ctx context.Context, curr switch taskOp { case task.TaskStatusSuccess: if currentTask.GetTaskStatus() != task.TaskStatusDisabled { - currentTask.TaskStatus = ptr.Of(task.TaskStatusSuccess) + *currentTask.TaskStatus = task.TaskStatusSuccess } case task.TaskStatusRunning: if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { - currentTask.TaskStatus = ptr.Of(task.TaskStatusRunning) + *currentTask.TaskStatus = task.TaskStatusRunning } case task.TaskStatusDisabled: if currentTask.GetTaskStatus() != task.TaskStatusDisabled { - currentTask.TaskStatus = ptr.Of(task.TaskStatusDisabled) + *currentTask.TaskStatus = task.TaskStatusDisabled } case task.TaskStatusPending: if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { - currentTask.TaskStatus = ptr.Of(task.TaskStatusPending) + *currentTask.TaskStatus = task.TaskStatusPending } default: return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index a9cbdff88..3dcd17272 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -277,19 +277,19 @@ func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, curre switch taskOp { case task.TaskStatusSuccess: if currentTask.GetTaskStatus() != task.TaskStatusDisabled { - currentTask.TaskStatus = ptr.Of(task.TaskStatusSuccess) + *currentTask.TaskStatus = task.TaskStatusSuccess } case task.TaskStatusRunning: if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { - currentTask.TaskStatus = ptr.Of(task.TaskStatusRunning) + *currentTask.TaskStatus = task.TaskStatusRunning } case task.TaskStatusDisabled: if currentTask.GetTaskStatus() != task.TaskStatusDisabled { - currentTask.TaskStatus = ptr.Of(task.TaskStatusDisabled) + *currentTask.TaskStatus = task.TaskStatusDisabled } case task.TaskStatusPending: if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { - currentTask.TaskStatus = ptr.Of(task.TaskStatusPending) + *currentTask.TaskStatus = task.TaskStatusPending } default: return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) From 17d592b52d9991a6964bc6f1a6694413ff5af442 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 11:39:44 +0800 Subject: [PATCH 262/462] fix --- .../modules/observability/application/convertor/task/task.go | 4 ++-- .../modules/observability/domain/task/service/task_service.go | 3 ++- .../domain/task/taskexe/processor/auto_evaluate.go | 2 +- .../domain/task/taskexe/processor/data_reflow.go | 3 ++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 4d0fa1714..074f1a155 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -235,7 +235,7 @@ func CheckTaskStatus(ctx context.Context, taskStatus task.TaskStatus, currentTas return validTaskStatus, nil } -func CreateTaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.ObservabilityTask { +func TaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.ObservabilityTask { if taskDO == nil { return nil } @@ -255,7 +255,7 @@ func CreateTaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *en Name: taskDO.GetName(), Description: ptr.Of(taskDO.GetDescription()), TaskType: taskDO.GetTaskType(), - TaskStatus: task.TaskStatusUnstarted, + TaskStatus: taskDO.GetTaskType(), TaskDetail: ptr.Of(ToJSONString(ctx, taskDO.GetTaskDetail())), SpanFilter: SpanFilterDTO2PO(ctx, taskDO.GetRule().GetSpanFilters(), taskDO.GetWorkspaceID()), EffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetEffectiveTime())), diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 5af724de5..77e6d4d81 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -129,7 +129,8 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r return nil, errorx.NewByCode(obErrorx.UserParseFailedCode) } // 创建task - taskPO := tconv.CreateTaskDTO2PO(ctx, req.Task, userID) + req.Task.TaskStatus = ptr.Of(task.TaskStatusUnstarted) + taskPO := tconv.TaskDTO2PO(ctx, req.Task, userID) id, err := t.TaskRepo.CreateTask(ctx, taskPO) if err != nil { return nil, err diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index b3016d17e..8f72a6b44 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -699,7 +699,7 @@ func (p *AutoEvaluteProcessor) OnUpdateChangeProcessor(ctx context.Context, curr return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) } // 2、更新任务 - taskPO := tconv.CreateTaskDTO2PO(ctx, currentTask, "") + taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") err := p.taskRepo.UpdateTask(ctx, taskPO) if err != nil { logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 3dcd17272..2202c948f 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -170,6 +170,7 @@ func ShouldTriggerNewData(taskDO *task.Task) bool { return effectiveTime.GetEndAt() > 0 && effectiveTime.GetStartAt() > 0 && + effectiveTime.GetStartAt() < effectiveTime.GetEndAt() && time.Now().Before(time.Unix(effectiveTime.GetStartAt(), 0)) } @@ -295,7 +296,7 @@ func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, curre return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) } // 2、更新任务 - taskPO := tconv.CreateTaskDTO2PO(ctx, currentTask, "") + taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") err := p.taskRepo.UpdateTask(ctx, taskPO) if err != nil { logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) From 47512f7bd021d20202ae846f50081826ff84d90d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 11:46:19 +0800 Subject: [PATCH 263/462] fix --- .../modules/observability/application/convertor/task/task.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 074f1a155..2c045280c 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -255,7 +255,7 @@ func TaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.O Name: taskDO.GetName(), Description: ptr.Of(taskDO.GetDescription()), TaskType: taskDO.GetTaskType(), - TaskStatus: taskDO.GetTaskType(), + TaskStatus: taskDO.GetTaskStatus(), TaskDetail: ptr.Of(ToJSONString(ctx, taskDO.GetTaskDetail())), SpanFilter: SpanFilterDTO2PO(ctx, taskDO.GetRule().GetSpanFilters(), taskDO.GetWorkspaceID()), EffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetEffectiveTime())), From 4d194ee4510c668984c2ebd71c2a1062a58c53f4 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 12:01:17 +0800 Subject: [PATCH 264/462] fix --- .../modules/observability/domain/task/service/task_service.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 77e6d4d81..7cc1afbe2 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -138,8 +138,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r // 数据回流任务——创建/更新输出数据集 // 自动评测历史回溯——创建空壳子 - taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) - if err = proc.OnCreateChangeProcessor(ctx, taskConfig); err != nil { + if err = proc.OnCreateChangeProcessor(ctx, req.Task); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) //任务改为禁用? if err1 := t.TaskRepo.DeleteTask(ctx, taskPO); err1 != nil { From 88e71ba23bf83eeaf1c554335032e550dc7eb7cd Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 12:09:08 +0800 Subject: [PATCH 265/462] fix ctx --- .../domain/task/taskexe/processor/auto_evaluate.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 8f72a6b44..04b6bde6b 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -377,7 +377,11 @@ func resetStartTime(currentTime int64, originalStartTime int64, maxAliveTime int } func getSession(ctx context.Context, task *task.Task) *common.Session { - userID, err := strconv.ParseInt(task.BaseInfo.CreatedBy.GetUserID(), 10, 64) + userIDStr := session.UserIDInCtxOrEmpty(ctx) + if userIDStr == "" { + userIDStr = task.GetBaseInfo().GetCreatedBy().GetUserID() + } + userID, err := strconv.ParseInt(userIDStr, 10, 64) if err != nil { logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor OnChangeProcessor, ParseInt err:%v", err) } From 685285310ee19f27b7de1698bafcc0db233cc339 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 12:16:04 +0800 Subject: [PATCH 266/462] fix --- .../observability/domain/task/service/task_service.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 7cc1afbe2..d8771cfd2 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -137,8 +137,9 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r } // 数据回流任务——创建/更新输出数据集 // 自动评测历史回溯——创建空壳子 - - if err = proc.OnCreateChangeProcessor(ctx, req.Task); err != nil { + taskConfig := req.Task + taskConfig.ID = ptr.Of(id) + if err = proc.OnCreateChangeProcessor(ctx, taskConfig); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) //任务改为禁用? if err1 := t.TaskRepo.DeleteTask(ctx, taskPO); err1 != nil { From 170dd592344de4ad8cea2e6ea4118036fd3990df Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 13:18:36 +0800 Subject: [PATCH 267/462] fix --- backend/modules/observability/application/convertor/task/task.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 2c045280c..97bac2ef3 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -251,6 +251,7 @@ func TaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.O updatedBy = userID } return &entity.ObservabilityTask{ + ID: taskDO.GetID(), WorkspaceID: taskDO.GetWorkspaceID(), Name: taskDO.GetName(), Description: ptr.Of(taskDO.GetDescription()), From be746a8101b89142de44d759578d870ac4717d90 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 13:34:48 +0800 Subject: [PATCH 268/462] fix --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index c1441868f..d9c2bb684 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -167,6 +167,7 @@ func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loo maxFlushInterval: time.Second * 5, taskRepo: h.taskRepo, runType: task.TaskRunTypeNewData, + taskRunRepo: h.taskRunRepo, }) } From fde4c69b7cf61f392f8f80502f8b08ab25df624f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 13:48:16 +0800 Subject: [PATCH 269/462] fix --- .../domain/task/taskexe/tracehub/scheduled_task.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index cc511f464..d9e817a13 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -222,25 +222,27 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun count, err := h.taskRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) if err != nil || count == -1 { logs.CtxWarn(ctx, "获取TaskRunCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) - return + } else { + info.TaskRunCount = count } - info.TaskRunCount = count // 读取taskrunscesscount successCount, err := h.taskRepo.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) if err != nil || successCount == -1 { logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) - return + successCount = 0 + } else { + info.TaskRunSuccCount = successCount } - info.TaskRunSuccCount = successCount // 读取taskrunfailcount failCount, err := h.taskRepo.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) if err != nil || failCount == -1 { logs.CtxWarn(ctx, "获取TaskRunFailCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) - return + failCount = 0 + } else { + info.TaskRunFailCount = failCount } - info.TaskRunFailCount = failCount logs.CtxDebug(ctx, "读取计数数据", "taskID", info.TaskID, From c5a5a0208fdd398da67bb69bdf4c4eb7a2bd8f7c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 14:00:05 +0800 Subject: [PATCH 270/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 04b6bde6b..397ad4d09 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -157,6 +157,10 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * return err } //todo:[xun]根据是否是真的结束实验做处理 + if trigger.IsFinish { + if err := p.OnUpdateChangeProcessor(ctx, trigger.Task, task.TaskStatusSuccess); err != nil { + } + } return nil } From 2033691e760bb19b4e47f512c701f8b8683d1765 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 14:02:05 +0800 Subject: [PATCH 271/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 2 ++ .../domain/task/taskexe/processor/data_reflow.go | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 397ad4d09..71b623f36 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -148,6 +148,8 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * if !ok { return taskexe.ErrInvalidConfig } + taskRun := tconv.TaskRunDO2PO(ctx, cfg, nil) + p.OnFinishTaskRunProcessor(ctx, taskRun) if err := p.evaluationSvc.FinishExperiment(ctx, &rpc.FinishExperimentReq{ WorkspaceID: trigger.Task.GetWorkspaceID(), ExperimentID: cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID(), diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 2202c948f..1d954bdfc 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -125,6 +125,18 @@ func ConvertFieldMappingsDTO2DO(mappings []*dataset0.FieldMapping) []entity.Fiel return result } func (p *DataReflowProcessor) Finish(ctx context.Context, config any, trigger *taskexe.Trigger) error { + cfg, ok := config.(*task.TaskRun) + if !ok { + return taskexe.ErrInvalidConfig + } + taskRun := tconv.TaskRunDO2PO(ctx, cfg, nil) + p.OnFinishTaskRunProcessor(ctx, taskRun) + if trigger.IsFinish { + if err := p.OnUpdateChangeProcessor(ctx, trigger.Task, task.TaskStatusSuccess); err != nil { + logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", trigger.Task.GetID(), err) + return err + } + } return nil } From 513e8ef4005d44fba0a813508c71444a18446ad3 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 14:03:42 +0800 Subject: [PATCH 272/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 71b623f36..6218e2fb2 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -116,6 +116,17 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") return nil } + taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) + taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) + p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount > trigger.Task.GetRule().GetSampler().GetCycleCount()) || + (taskCount > trigger.Task.GetRule().GetSampler().GetSampleSize()) { + logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) + p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) + p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + return nil + } _, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ WorkspaceID: workspaceID, EvaluationSetID: taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), @@ -136,6 +147,8 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * Session: session, }) if err != nil { + p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) + p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) return err } return nil From 28e418574a1820ded0e15e8f585ca8ca0303f263 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 14:27:16 +0800 Subject: [PATCH 273/462] fix --- .../modules/observability/infra/repo/task.go | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index a8a8d5a85..d5a832213 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -51,19 +51,19 @@ const ( func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityTask, error) { // 先查 Redis 缓存 - cachedTask, err := v.TaskRedisDao.GetTask(ctx, id) - if err != nil { - logs.CtxWarn(ctx, "failed to get task from redis cache", "id", id, "err", err) - } else if cachedTask != nil { - // 验证权限(workspaceID 和 userID) - if workspaceID != nil && cachedTask.WorkspaceID != *workspaceID { - return nil, nil // 权限不符,返回空 - } - if userID != nil && cachedTask.CreatedBy != *userID { - return nil, nil // 权限不符,返回空 - } - return cachedTask, nil - } + //cachedTask, err := v.TaskRedisDao.GetTask(ctx, id) + //if err != nil { + // logs.CtxWarn(ctx, "failed to get task from redis cache", "id", id, "err", err) + //} else if cachedTask != nil { + // // 验证权限(workspaceID 和 userID) + // if workspaceID != nil && cachedTask.WorkspaceID != *workspaceID { + // return nil, nil // 权限不符,返回空 + // } + // if userID != nil && cachedTask.CreatedBy != *userID { + // return nil, nil // 权限不符,返回空 + // } + // return cachedTask, nil + //} // 缓存未命中,查询数据库 TaskPo, err := v.TaskDao.GetTask(ctx, id, workspaceID, userID) From aedc8106f3abb14122fee77121ba0ab050f02ebf Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 14:34:12 +0800 Subject: [PATCH 274/462] fix --- .../observability/application/convertor/task/task.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index 97bac2ef3..ed447a8d9 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -249,6 +249,13 @@ func TaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.O if userID != "" { createdBy = userID updatedBy = userID + } else { + if taskDO.GetBaseInfo().GetCreatedBy() != nil { + createdBy = taskDO.GetBaseInfo().GetCreatedBy().GetUserID() + } + if taskDO.GetBaseInfo().GetUpdatedBy() != nil { + updatedBy = taskDO.GetBaseInfo().GetUpdatedBy().GetUserID() + } } return &entity.ObservabilityTask{ ID: taskDO.GetID(), From e7e697b99c898a88b52897717a630a057ccdd5ff Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 14:43:29 +0800 Subject: [PATCH 275/462] fix --- .../modules/observability/domain/task/service/task_service.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index d8771cfd2..f5a7e2bbb 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -137,8 +137,8 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r } // 数据回流任务——创建/更新输出数据集 // 自动评测历史回溯——创建空壳子 - taskConfig := req.Task - taskConfig.ID = ptr.Of(id) + taskPO.ID = id + taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) if err = proc.OnCreateChangeProcessor(ctx, taskConfig); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) //任务改为禁用? From 3f2647c93815221af4623b1d9c6157f057cd96c5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 16:40:16 +0800 Subject: [PATCH 276/462] feat: [Coda] implement separate timers for TraceHub tasks (LogID: 20250919162737010091110207145C672) Co-Authored-By: Coda --- .../task/taskexe/tracehub/scheduled_task.go | 24 ++++++++++-- .../domain/task/taskexe/tracehub/trace_hub.go | 37 +++++++++++-------- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index d9e817a13..f763b72b5 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -36,18 +36,34 @@ type SyncMetrics struct { ProcessingTime time.Duration } -// startScheduledTask 启动定时任务goroutine +// startScheduledTask 启动定时任务goroutine - 使用5分钟间隔的定时器 func (h *TraceHubServiceImpl) startScheduledTask() { go func() { for { select { - case <-h.ticker.C: + case <-h.scheduledTaskTicker.C: // 执行定时任务 h.runScheduledTask() + case <-h.stopChan: + // 停止定时任务 + h.scheduledTaskTicker.Stop() + return + } + } + }() +} + +// startSyncTaskRunCounts 启动数据同步定时任务goroutine - 使用1分钟间隔的定时器 +func (h *TraceHubServiceImpl) startSyncTaskRunCounts() { + go func() { + for { + select { + case <-h.syncTaskTicker.C: + // 执行定时任务 h.syncTaskRunCounts() case <-h.stopChan: // 停止定时任务 - h.ticker.Stop() + h.syncTaskTicker.Stop() return } } @@ -300,4 +316,4 @@ func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *Tas } return nil -} +} \ No newline at end of file diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index d9c2bb684..f8541767d 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -46,30 +46,35 @@ func NewTraceHubImpl( buildHelper service.TraceFilterProcessorBuilder, ) (ITraceHubService, error) { processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo, tRunRepo) - ticker := time.NewTicker(5 * time.Minute) // 每x分钟执行一次定时任务 + // 创建两个不同间隔的独立定时器 + scheduledTaskTicker := time.NewTicker(5 * time.Minute) // 任务状态生命周期管理 - 5分钟间隔 + syncTaskTicker := time.NewTicker(1 * time.Minute) // 数据同步 - 1分钟间隔 impl := &TraceHubServiceImpl{ - taskRepo: tRepo, - taskRunRepo: tRunRepo, - ticker: ticker, - stopChan: make(chan struct{}), - traceRepo: traceRepo, - tenantProvider: tenantProvider, - buildHelper: buildHelper, + taskRepo: tRepo, + taskRunRepo: tRunRepo, + scheduledTaskTicker: scheduledTaskTicker, + syncTaskTicker: syncTaskTicker, + stopChan: make(chan struct{}), + traceRepo: traceRepo, + tenantProvider: tenantProvider, + buildHelper: buildHelper, } // 立即启动定时任务 impl.startScheduledTask() + impl.startSyncTaskRunCounts() return impl, nil } type TraceHubServiceImpl struct { - ticker *time.Ticker - stopChan chan struct{} - taskRepo repo.ITaskRepo - taskRunRepo repo.ITaskRunRepo - traceRepo trace_repo.ITraceRepo - tenantProvider tenant.ITenantProvider + scheduledTaskTicker *time.Ticker // 任务状态生命周期管理定时器 - 5分钟间隔 + syncTaskTicker *time.Ticker // 数据同步定时器 - 1分钟间隔 + stopChan chan struct{} + taskRepo repo.ITaskRepo + taskRunRepo repo.ITaskRunRepo + traceRepo trace_repo.ITraceRepo + tenantProvider tenant.ITenantProvider buildHelper service.TraceFilterProcessorBuilder task *task.Task @@ -193,7 +198,7 @@ func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loo func (h *TraceHubServiceImpl) dispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { merr := &multierror.Error{} for _, sub := range subs { - if sub.t.GetTaskStatus() == task.TaskStatusSuccess { + if sub.t.GetTaskStatus() != task.TaskStatusRunning { continue } logs.CtxInfo(ctx, " sub.AddSpan: %v", sub) @@ -300,4 +305,4 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S func (h *TraceHubServiceImpl) Close() { close(h.stopChan) -} +} \ No newline at end of file From 179c11923fefd9c2812180bdb3f8c4fa05d57941 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 16:45:04 +0800 Subject: [PATCH 277/462] =?UTF-8?q?fix=20=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/task/taskexe/processor/auto_evaluate.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 6218e2fb2..3d78dd2d3 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -226,10 +226,18 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) // 1、创建评测集 logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + var datasetName, exptName string + if isBackFill { + datasetName = fmt.Sprintf("自动化任务评测集_历史回溯_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()) + exptName = fmt.Sprintf("自动化任务实验_历史回溯_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()) + } else { + datasetName = fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()) + exptName = fmt.Sprintf("自动化任务实验_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()) + } datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( 0, currentTask.GetWorkspaceID(), - fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()), + datasetName, category, schema, sessionInfo, @@ -256,7 +264,7 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTas WorkspaceID: currentTask.GetWorkspaceID(), EvalSetVersionID: gptr.Of(datasetID), EvaluatorVersionIds: evaluatorVersionIds, - Name: gptr.Of(fmt.Sprintf("自动化任务实验_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day())), + Name: ptr.Of(exptName), Desc: gptr.Of("自动化任务实验"), EvalSetID: gptr.Of(datasetID), EvaluatorFieldMapping: evaluatorFieldMappings, From e2e3850ea168bd54cf4bbe0c9063b6c50a950f46 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Fri, 19 Sep 2025 16:52:37 +0800 Subject: [PATCH 278/462] fix --- .../task/taskexe/processor/auto_evaluate.go | 14 +++- .../task/taskexe/processor/data_reflow.go | 73 +++++++++++-------- .../task/taskexe/tracehub/subscriber.go | 4 +- .../domain/task/taskexe/types.go | 14 ++-- 4 files changed, 65 insertions(+), 40 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 3d78dd2d3..d2ff2b1f3 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -179,7 +179,11 @@ func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger * return nil } -func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error { +func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, config *taskexe.Config, isBackFill bool) error { + if config.Task == nil { + return taskexe.ErrInvalidConfig + } + currentTask := config.Task logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) //todo:[xun]加锁 ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) @@ -682,7 +686,9 @@ func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, curr return err } if ShouldTriggerBackfill(currentTask) && taskRuns == nil { - err = p.OnChangeProcessor(ctx, currentTask, true) + err = p.OnChangeProcessor(ctx, &taskexe.Config{ + Task: currentTask, + }, true) if err != nil { logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err @@ -694,7 +700,9 @@ func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, curr } } if ShouldTriggerNewData(currentTask) { - err = p.OnChangeProcessor(ctx, currentTask, false) + err = p.OnChangeProcessor(ctx, &taskexe.Config{ + Task: currentTask, + }, false) if err != nil { logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 1d954bdfc..d225c441a 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -188,13 +188,45 @@ func ShouldTriggerNewData(taskDO *task.Task) bool { func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { logs.CtxInfo(ctx, "[auto_task] DataReflowProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) + // 1、创建/更新数据集 + session := getSession(ctx, currentTask) + category := getCategory(currentTask.TaskType) + dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() + var err error + // 1、创建数据集 + logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + var datasetID int64 + for _, dataReflowConfig := range dataReflowConfigs { + if dataReflowConfig.DatasetID != nil { + datasetID = *dataReflowConfig.DatasetID + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", dataReflowConfig.DatasetID) + continue + } + schema := convertDatasetSchemaDTO2DO(dataReflowConfig.GetDatasetSchema()) + datasetID, err = p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( + 0, + currentTask.GetWorkspaceID(), + dataReflowConfig.GetDatasetName(), + category, + schema, + session, + )) + if err != nil { + return err + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) + } + taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } if ShouldTriggerBackfill(currentTask) && taskRuns == nil { - err = p.OnChangeProcessor(ctx, currentTask, true) + err = p.OnChangeProcessor(ctx, &taskexe.Config{ + Task: currentTask, + DatasetID: &datasetID, + }, true) if err != nil { logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err @@ -207,7 +239,10 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre } if ShouldTriggerNewData(currentTask) { - err = p.OnChangeProcessor(ctx, currentTask, false) + err = p.OnChangeProcessor(ctx, &taskexe.Config{ + Task: currentTask, + DatasetID: &datasetID, + }, false) if err != nil { logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err @@ -221,35 +256,11 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre return nil } -func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error { - // 1、创建/更新数据集 - session := getSession(ctx, currentTask) - category := getCategory(currentTask.TaskType) - dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() - var err error - // 1、创建数据集 - logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) - var datasetID int64 - for _, dataReflowConfig := range dataReflowConfigs { - if dataReflowConfig.DatasetID != nil { - datasetID = *dataReflowConfig.DatasetID - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", dataReflowConfig.DatasetID) - continue - } - schema := convertDatasetSchemaDTO2DO(dataReflowConfig.GetDatasetSchema()) - datasetID, err = p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( - 0, - currentTask.GetWorkspaceID(), - dataReflowConfig.GetDatasetName(), - category, - schema, - session, - )) - if err != nil { - return err - } - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) +func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, config *taskexe.Config, isBackFill bool) error { + if config.Task == nil { + return taskexe.ErrInvalidConfig } + currentTask := config.Task // 2、更新任务配置 taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) if err != nil { @@ -261,7 +272,7 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, currentTask var taskRun *task_entity.TaskRun taskRunConfig := &task.TaskRunConfig{ DataReflowRunConfig: &task.DataReflowRunConfig{ - DatasetID: datasetID, + DatasetID: *config.DatasetID, EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), CycleStartAt: cycleStartAt, CycleEndAt: cycleEndAt, diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index 6a4ad120a..62c48861a 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -61,7 +61,9 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, return true, nil } func (s *spanSubscriber) Creative(ctx context.Context) error { - err := s.processor.OnChangeProcessor(ctx, s.t, false) + err := s.processor.OnChangeProcessor(ctx, &taskexe.Config{ + Task: s.t, + }, false) if err != nil { return err } diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index 2f2838f7b..2e15c1221 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -17,6 +17,10 @@ type Trigger struct { Span *loop_span.Span IsFinish bool } +type Config struct { + DatasetID *int64 `json:"dataset_id"` + Task *task.Task +} var ( ErrInvalidConfig = errors.New("invalid config") @@ -33,12 +37,12 @@ const ( ) type Processor interface { - ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 - Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 - OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 - Finish(ctx context.Context, config any, trigger *Trigger) error //Finish + ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 + Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 + OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 + Finish(ctx context.Context, config any, trigger *Trigger) error //Finish - OnChangeProcessor(ctx context.Context, currentTask *task.Task, isBackFill bool) error //OnCreateChangeProcessor + OnChangeProcessor(ctx context.Context, config *Config, isBackFill bool) error //OnCreateChangeProcessor OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error //OnUpdateChangeProcessor OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor From 15c6f85b626c21b13aeb88f4e145f9e7d3906391 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 07:46:10 +0800 Subject: [PATCH 279/462] fix --- .../observability/domain/task/entity/event.go | 15 +++++++- .../task/taskexe/processor/data_reflow.go | 1 + .../domain/task/taskexe/tracehub/backfill.go | 38 ++++++++++--------- 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go index bdd21063f..0c622ff32 100644 --- a/backend/modules/observability/domain/task/entity/event.go +++ b/backend/modules/observability/domain/task/entity/event.go @@ -116,6 +116,17 @@ func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { tagsLong["input_tokens"] = s.SensitiveTags.InputTokens tagsLong["output_tokens"] = s.SensitiveTags.OutputTokens tagsLong["tokens"] = s.SensitiveTags.Tokens + if s.Tags == nil { + s.Tags = make(map[string]any) + } + if s.Tags["call_type"] == nil { + s.Tags["call_type"] = "" + } + callType := s.Tags["call_type"].(string) + if s.Tags["fornax_space_id"] == nil { + s.Tags["fornax_space_id"] = "" + } + spaceID := s.Tags["fornax_space_id"].(string) result := &loop_span.Span{ StartTime: s.StartTimeInUs / 1000, @@ -125,8 +136,8 @@ func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { TraceID: s.TraceID, DurationMicros: s.DurationInUs / 1000, PSM: s.ServerEnv.PSM, - CallType: s.Tags["call_type"].(string), - WorkspaceID: s.Tags["fornax_space_id"].(string), + CallType: callType, + WorkspaceID: spaceID, SpanName: s.SpanName, SpanType: s.SpanType, Method: s.Method, diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index d225c441a..71242376e 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -297,6 +297,7 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, config *tas } return nil } + func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { switch taskOp { case task.TaskStatusSuccess: diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go index b1adf1360..3d898b61e 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go @@ -27,6 +27,7 @@ import ( func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 设置当前任务上下文 + // 不 sub, err := h.setBackfillTask(ctx, event) if err != nil { return err @@ -200,24 +201,25 @@ func (h *TraceHubServiceImpl) parseBackfillTime(ctx context.Context, taskConfig return &backfillTime, nil } } - - // 使用任务的有效时间 - if taskConfig.EffectiveTime != nil && *taskConfig.EffectiveTime != "" { - var effectiveTime task.EffectiveTime - if err := json.Unmarshal([]byte(*taskConfig.EffectiveTime), &effectiveTime); err != nil { - logs.CtxWarn(ctx, "parse effective time failed, use default, task_id=%d, err=%v", h.task.GetID(), err) - } else { - return &effectiveTime, nil - } - } - - // 使用默认时间窗口:过去24小时 - now := time.Now().UnixMilli() - startTime := now - 24*60*60*1000 // 24小时前 - return &task.EffectiveTime{ - StartAt: &startTime, - EndAt: &now, - }, nil + return nil, errors.New("backfill effective time not found") + + //// 使用任务的有效时间 + //if taskConfig.EffectiveTime != nil && *taskConfig.EffectiveTime != "" { + // var effectiveTime task.EffectiveTime + // if err := json.Unmarshal([]byte(*taskConfig.EffectiveTime), &effectiveTime); err != nil { + // logs.CtxWarn(ctx, "parse effective time failed, use default, task_id=%d, err=%v", h.task.GetID(), err) + // } else { + // return &effectiveTime, nil + // } + //} + // + //// 使用默认时间窗口:过去24小时 + //now := time.Now().UnixMilli() + //startTime := now - 24*60*60*1000 // 24小时前 + //return &task.EffectiveTime{ + // StartAt: &startTime, + // EndAt: &now, + //}, nil } // getTenantsForTask 获取任务的租户信息 From 2770b928e93a7dac6b2853ddcd62f5bf2642173e Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 08:19:44 +0800 Subject: [PATCH 280/462] fix --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index f8541767d..fea25bd5e 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -260,7 +260,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S continue } } - endTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()) + endTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) // 达到任务时间期限 if time.Now().After(endTime) { if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { @@ -269,7 +269,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } } if sampler.GetIsCycle() { - cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()) + cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) // 达到单次任务时间期限 if time.Now().After(cycleEndTime) { logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") @@ -305,4 +305,4 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S func (h *TraceHubServiceImpl) Close() { close(h.stopChan) -} \ No newline at end of file +} From 3f93e855daa2d3cd2e8d05653c3298c1557ecf95 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 08:33:54 +0800 Subject: [PATCH 281/462] fix --- .../domain/task/taskexe/tracehub/trace_hub.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index fea25bd5e..1f51c230e 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -268,6 +268,13 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S continue } } + // 达到任务上限 + if taskCount+1 > sampler.GetSampleSize() { + if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID)) + continue + } + } if sampler.GetIsCycle() { cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) // 达到单次任务时间期限 @@ -290,14 +297,6 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } } } - - // 达到任务上限 - if taskCount+1 > sampler.GetSampleSize() { - if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID)) - continue - } - } } subs = needDispatchSubs return merr.ErrorOrNil() From c7df3e48c41e1c382c0a22f36b8debe50286f741 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 08:40:34 +0800 Subject: [PATCH 282/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 8 ++++---- .../domain/task/taskexe/processor/data_reflow.go | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index d2ff2b1f3..4279cf0dc 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -157,16 +157,16 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger *taskexe.Trigger) error { //todo:[xun]加锁 session := getSession(ctx, trigger.Task) - cfg, ok := config.(*task.TaskRun) + taskRun, ok := config.(*task_entity.TaskRun) if !ok { return taskexe.ErrInvalidConfig } - taskRun := tconv.TaskRunDO2PO(ctx, cfg, nil) + taskRunPO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) p.OnFinishTaskRunProcessor(ctx, taskRun) if err := p.evaluationSvc.FinishExperiment(ctx, &rpc.FinishExperimentReq{ WorkspaceID: trigger.Task.GetWorkspaceID(), - ExperimentID: cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID(), - ExperimentRunID: cfg.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID(), + ExperimentID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID(), + ExperimentRunID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID(), Session: session, }); err != nil { return err diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 71242376e..872513567 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -125,11 +125,10 @@ func ConvertFieldMappingsDTO2DO(mappings []*dataset0.FieldMapping) []entity.Fiel return result } func (p *DataReflowProcessor) Finish(ctx context.Context, config any, trigger *taskexe.Trigger) error { - cfg, ok := config.(*task.TaskRun) + taskRun, ok := config.(*task_entity.TaskRun) if !ok { return taskexe.ErrInvalidConfig } - taskRun := tconv.TaskRunDO2PO(ctx, cfg, nil) p.OnFinishTaskRunProcessor(ctx, taskRun) if trigger.IsFinish { if err := p.OnUpdateChangeProcessor(ctx, trigger.Task, task.TaskStatusSuccess); err != nil { From 44ad98bdc6a0955727c32545e72f9eab0fb6d37a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 09:18:44 +0800 Subject: [PATCH 283/462] fix --- .../observability/domain/task/taskexe/processor/auto_evaluate.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 4279cf0dc..f5405d793 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -127,6 +127,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) return nil } + ctx = context.WithValue(ctx, "K_ENV", "prod") _, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ WorkspaceID: workspaceID, EvaluationSetID: taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), From 0ba7de4a25249e05a094a0aa4b27cb8f33f85c0d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 09:41:18 +0800 Subject: [PATCH 284/462] fix --- .../observability/domain/task/taskexe/processor/auto_evaluate.go | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index f5405d793..4279cf0dc 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -127,7 +127,6 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) return nil } - ctx = context.WithValue(ctx, "K_ENV", "prod") _, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ WorkspaceID: workspaceID, EvaluationSetID: taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), From 42c0e4e47cf67a0d0225b18ae6fb1f3d5978eeb1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 09:48:38 +0800 Subject: [PATCH 285/462] fix --- .../domain/task/taskexe/tracehub/scheduled_task.go | 5 +++-- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index f763b72b5..0bb222b1e 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -173,8 +173,9 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { { FieldName: ptr.Of(filter.TaskFieldNameTaskStatus), Values: []string{ - string(task.TaskStatusUnstarted), + string(task.TaskStatusPending), string(task.TaskStatusRunning), + string(task.TaskStatusSuccess), }, QueryType: ptr.Of(filter.QueryTypeIn), FieldType: ptr.Of(filter.FieldTypeString), @@ -316,4 +317,4 @@ func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *Tas } return nil -} \ No newline at end of file +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 1f51c230e..92689000a 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -48,7 +48,7 @@ func NewTraceHubImpl( processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo, tRunRepo) // 创建两个不同间隔的独立定时器 scheduledTaskTicker := time.NewTicker(5 * time.Minute) // 任务状态生命周期管理 - 5分钟间隔 - syncTaskTicker := time.NewTicker(1 * time.Minute) // 数据同步 - 1分钟间隔 + syncTaskTicker := time.NewTicker(2 * time.Minute) // 数据同步 - 1分钟间隔 impl := &TraceHubServiceImpl{ taskRepo: tRepo, taskRunRepo: tRunRepo, From 4a1bf871965354966e2302daead047c7c4d297c9 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 10:54:26 +0800 Subject: [PATCH 286/462] add cfg --- backend/infra/mq/factory.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/infra/mq/factory.go b/backend/infra/mq/factory.go index c6866455f..1518edf47 100644 --- a/backend/infra/mq/factory.go +++ b/backend/infra/mq/factory.go @@ -41,6 +41,7 @@ type ConsumerConfig struct { ConsumeGoroutineNums int // Timeout for consumer one message ConsumeTimeout time.Duration + EnablePPE bool } type CompressionCodec int From 3fd4e667bf4868ce723a0c0e6096bd20d0a0c50d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 10:56:51 +0800 Subject: [PATCH 287/462] add cfg --- backend/modules/data/domain/component/conf/conf.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/data/domain/component/conf/conf.go b/backend/modules/data/domain/component/conf/conf.go index ceaec66d3..11c62eea8 100644 --- a/backend/modules/data/domain/component/conf/conf.go +++ b/backend/modules/data/domain/component/conf/conf.go @@ -69,6 +69,7 @@ type ConsumerConfig struct { ConsumeGoroutineNums int `mapstructure:"consume_goroutine_nums"` // Timeout for consumer one message ConsumeTimeout time.Duration `mapstructure:"consume_timeout"` + EnablePPE bool `mapstructure:"enable_ppe"` } type TagSpec struct { From eee68bda4d2dafb42584c281fbfbc6b2168a06ed Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 10:58:50 +0800 Subject: [PATCH 288/462] fix --- backend/infra/mq/factory.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/infra/mq/factory.go b/backend/infra/mq/factory.go index 1518edf47..9da66b0b7 100644 --- a/backend/infra/mq/factory.go +++ b/backend/infra/mq/factory.go @@ -41,7 +41,7 @@ type ConsumerConfig struct { ConsumeGoroutineNums int // Timeout for consumer one message ConsumeTimeout time.Duration - EnablePPE bool + EnablePPE *bool } type CompressionCodec int From 8d425c293ee9a178af99c204fe09165774c4cc0c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 11:17:23 +0800 Subject: [PATCH 289/462] fix --- .../domain/task/taskexe/tracehub/scheduled_task.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 0bb222b1e..4fedd2a67 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -126,6 +126,10 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "taskRunstat:%v", taskRunstat) // 遍历任务 for _, taskInfo := range tasks { + if taskInfo.GetRule().GetEffectiveTime().GetEndAt() == 0 { + // 历史回溯任务待处理 + continue + } endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()*int64(time.Millisecond)) proc, err := processor.NewProcessor(ctx, taskInfo.TaskType) From ce4b2d17501f7d21ed16047a3a440cf34bbb3f13 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 11:18:25 +0800 Subject: [PATCH 290/462] add cfg --- backend/modules/data/infra/mq/consumer/dataset_job_comsumer.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/modules/data/infra/mq/consumer/dataset_job_comsumer.go b/backend/modules/data/infra/mq/consumer/dataset_job_comsumer.go index d5f603404..b2256803e 100644 --- a/backend/modules/data/infra/mq/consumer/dataset_job_comsumer.go +++ b/backend/modules/data/infra/mq/consumer/dataset_job_comsumer.go @@ -7,6 +7,7 @@ import ( "context" json "github.com/bytedance/sonic" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/infra/mq" "github.com/coze-dev/coze-loop/backend/modules/data/application" @@ -45,6 +46,7 @@ func (e *DatasetJobConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfi ConsumeTimeout: cfg.ConsumeTimeout, TagExpression: cfg.TagExpression, ConsumeGoroutineNums: cfg.ConsumeGoroutineNums, + EnablePPE: ptr.Of(cfg.EnablePPE), } return res, nil } From 417acf9391398835083c634e5aa9a9f6b81008fa Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 11:27:21 +0800 Subject: [PATCH 291/462] fix --- backend/modules/data/domain/component/conf/conf.go | 2 +- .../modules/data/infra/mq/consumer/dataset_job_comsumer.go | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/backend/modules/data/domain/component/conf/conf.go b/backend/modules/data/domain/component/conf/conf.go index 11c62eea8..11d43bc42 100644 --- a/backend/modules/data/domain/component/conf/conf.go +++ b/backend/modules/data/domain/component/conf/conf.go @@ -69,7 +69,7 @@ type ConsumerConfig struct { ConsumeGoroutineNums int `mapstructure:"consume_goroutine_nums"` // Timeout for consumer one message ConsumeTimeout time.Duration `mapstructure:"consume_timeout"` - EnablePPE bool `mapstructure:"enable_ppe"` + EnablePPE *bool `mapstructure:"enable_ppe"` } type TagSpec struct { diff --git a/backend/modules/data/infra/mq/consumer/dataset_job_comsumer.go b/backend/modules/data/infra/mq/consumer/dataset_job_comsumer.go index b2256803e..f770b2892 100644 --- a/backend/modules/data/infra/mq/consumer/dataset_job_comsumer.go +++ b/backend/modules/data/infra/mq/consumer/dataset_job_comsumer.go @@ -7,8 +7,6 @@ import ( "context" json "github.com/bytedance/sonic" - "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" - "github.com/coze-dev/coze-loop/backend/infra/mq" "github.com/coze-dev/coze-loop/backend/modules/data/application" dataset_conf "github.com/coze-dev/coze-loop/backend/modules/data/domain/component/conf" @@ -46,7 +44,7 @@ func (e *DatasetJobConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfi ConsumeTimeout: cfg.ConsumeTimeout, TagExpression: cfg.TagExpression, ConsumeGoroutineNums: cfg.ConsumeGoroutineNums, - EnablePPE: ptr.Of(cfg.EnablePPE), + EnablePPE: cfg.EnablePPE, } return res, nil } From 7cc16c4225b840d8998ee0db9ff13f72faa333ed Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 11:44:05 +0800 Subject: [PATCH 292/462] add cfg --- backend/modules/evaluation/infra/mq/rocket/conf.go | 2 ++ backend/modules/observability/domain/component/config/config.go | 1 + .../infra/mq/consumer/autotask_callback_consumer.go | 1 + .../observability/infra/mq/consumer/backfill_consumer.go | 1 + .../observability/infra/mq/consumer/correction_consumer.go | 1 + .../modules/observability/infra/mq/consumer/task_consumer.go | 1 + 6 files changed, 7 insertions(+) diff --git a/backend/modules/evaluation/infra/mq/rocket/conf.go b/backend/modules/evaluation/infra/mq/rocket/conf.go index 282d6c753..b174f470f 100644 --- a/backend/modules/evaluation/infra/mq/rocket/conf.go +++ b/backend/modules/evaluation/infra/mq/rocket/conf.go @@ -33,6 +33,7 @@ type RMQConf struct { ConsumerGroup string `mapstructure:"consumer_group"` WorkerNum int `mapstructure:"worker_num"` ConsumeTimeout time.Duration `mapstructure:"consume_timeout"` + EnablePPE *bool `mapstructure:"enable_ppe"` } func (c *RMQConf) Valid() bool { @@ -57,5 +58,6 @@ func (c *RMQConf) ToConsumerCfg() mq.ConsumerConfig { ConsumerGroup: c.ConsumerGroup, ConsumeGoroutineNums: c.WorkerNum, ConsumeTimeout: c.ConsumeTimeout, + EnablePPE: c.EnablePPE, } } diff --git a/backend/modules/observability/domain/component/config/config.go b/backend/modules/observability/domain/component/config/config.go index d7ea870df..af6e01e5b 100644 --- a/backend/modules/observability/domain/component/config/config.go +++ b/backend/modules/observability/domain/component/config/config.go @@ -45,6 +45,7 @@ type MqConsumerCfg struct { Topic string `mapstructure:"topic" json:"topic"` ConsumerGroup string `mapstructure:"consumer_group" json:"consumer_group"` WorkerNum int `mapstructure:"worker_num" json:"worker_num"` + EnablePPE *bool `mapstructure:"enable_ppe" json:"enable_ppe"` } type TraceCKCfg struct { diff --git a/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go b/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go index 56fb8e94d..4c4b5b2c3 100644 --- a/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go @@ -41,6 +41,7 @@ func (e *CallbackConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, ConsumerGroup: cfg.ConsumerGroup, ConsumeTimeout: time.Duration(cfg.Timeout) * time.Millisecond, ConsumeGoroutineNums: cfg.WorkerNum, + EnablePPE: cfg.EnablePPE, } return res, nil } diff --git a/backend/modules/observability/infra/mq/consumer/backfill_consumer.go b/backend/modules/observability/infra/mq/consumer/backfill_consumer.go index e208d8f29..a334d7690 100644 --- a/backend/modules/observability/infra/mq/consumer/backfill_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/backfill_consumer.go @@ -41,6 +41,7 @@ func (e *BackFillConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, ConsumerGroup: cfg.ConsumerGroup, ConsumeTimeout: time.Duration(cfg.Timeout) * time.Millisecond, ConsumeGoroutineNums: cfg.WorkerNum, + EnablePPE: cfg.EnablePPE, } return res, nil } diff --git a/backend/modules/observability/infra/mq/consumer/correction_consumer.go b/backend/modules/observability/infra/mq/consumer/correction_consumer.go index 6b750368c..0ec2a32a5 100644 --- a/backend/modules/observability/infra/mq/consumer/correction_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/correction_consumer.go @@ -40,6 +40,7 @@ func (e *CorrectionConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfi ConsumerGroup: cfg.ConsumerGroup, ConsumeTimeout: time.Duration(cfg.Timeout) * time.Millisecond, ConsumeGoroutineNums: cfg.WorkerNum, + EnablePPE: cfg.EnablePPE, } return res, nil } diff --git a/backend/modules/observability/infra/mq/consumer/task_consumer.go b/backend/modules/observability/infra/mq/consumer/task_consumer.go index a4b2bf353..dda99e606 100644 --- a/backend/modules/observability/infra/mq/consumer/task_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/task_consumer.go @@ -41,6 +41,7 @@ func (e *TaskConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, err ConsumerGroup: cfg.ConsumerGroup, ConsumeTimeout: time.Duration(cfg.Timeout) * time.Millisecond, ConsumeGoroutineNums: cfg.WorkerNum, + EnablePPE: cfg.EnablePPE, } return res, nil } From 40b5e01013b84168b6826d50b71d4c2352d66e0a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 11:55:47 +0800 Subject: [PATCH 293/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 4279cf0dc..8bbe9f5a5 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -232,11 +232,11 @@ func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, config *ta logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) var datasetName, exptName string if isBackFill { - datasetName = fmt.Sprintf("自动化任务评测集_历史回溯_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()) - exptName = fmt.Sprintf("自动化任务实验_历史回溯_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()) + datasetName = fmt.Sprintf("自动化任务评测集_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("自动化任务实验_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) } else { - datasetName = fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()) - exptName = fmt.Sprintf("自动化任务实验_%s_%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day()) + datasetName = fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("自动化任务实验_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) } datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( 0, From 3b8306392a41780406418ae2e9cb29ba55d754de Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 13:22:54 +0800 Subject: [PATCH 294/462] add debug log --- .../domain/task/taskexe/processor/auto_evaluate.go | 9 +++++++-- .../observability/infra/mq/producer/backfill_producer.go | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 8bbe9f5a5..46a71be3e 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -143,8 +143,13 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * AllowPartialAdd: gptr.Of(true), ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), - Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, "start_time": strconvh.FormatInt64(trigger.Span.StartTime), "task_id": strconvh.FormatInt64(trigger.Task.GetID()), "task_run_id": strconvh.FormatInt64(taskRun.ID), "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, - Session: session, + Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), + "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, + "start_time": strconvh.FormatInt64(trigger.Span.StartTime), + "task_id": strconvh.FormatInt64(trigger.Task.GetID()), + "task_run_id": strconvh.FormatInt64(taskRun.ID), + "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, + Session: session, }) if err != nil { p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) diff --git a/backend/modules/observability/infra/mq/producer/backfill_producer.go b/backend/modules/observability/infra/mq/producer/backfill_producer.go index 66f8cb74d..2ac8858a6 100644 --- a/backend/modules/observability/infra/mq/producer/backfill_producer.go +++ b/backend/modules/observability/infra/mq/producer/backfill_producer.go @@ -36,12 +36,12 @@ func (b *BackfillProducerImpl) SendBackfill(ctx context.Context, message *entity return errorx.WrapByCode(err, obErrorx.CommercialCommonInternalErrorCodeCode) } msg := mq.NewDeferMessage(b.topic, 10*time.Second, bytes) - _, err = b.mqProducer.Send(ctx, msg) + sendMsg, err := b.mqProducer.Send(ctx, msg) if err != nil { logs.CtxWarn(ctx, "send annotation msg err: %v", err) return errorx.WrapByCode(err, obErrorx.CommercialCommonRPCErrorCodeCode) } - logs.CtxInfo(ctx, "send annotation msg %s successfully", string(bytes)) + logs.CtxInfo(ctx, "send annotation msg %s successfully, msgId: %s", string(bytes), sendMsg.MessageID) return nil } From 5fafde95eb5b32f08764d22a3b56e4cbcaffe5db Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 14:45:59 +0800 Subject: [PATCH 295/462] add debug log --- .../observability/domain/task/taskexe/tracehub/trace_hub.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 92689000a..3c7d4a38c 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -264,6 +264,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S // 达到任务时间期限 if time.Now().After(endTime) { if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { + logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } @@ -271,6 +272,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S // 达到任务上限 if taskCount+1 > sampler.GetSampleSize() { if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { + logs.CtxWarn(ctx, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID) merr = multierror.Append(merr, errors.WithMessagef(err, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID)) continue } From 54a6826f626e0a5dd9df72038d2f7770b9344ce2 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 15:05:13 +0800 Subject: [PATCH 296/462] fix --- .../task/taskexe/tracehub/subscriber.go | 92 +++++++++++++++++++ .../domain/task/taskexe/tracehub/trace_hub.go | 1 + 2 files changed, 93 insertions(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index 62c48861a..ee5dbe45e 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -9,11 +9,17 @@ import ( "sync" "time" + "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service/trace/span_filter" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -30,6 +36,7 @@ type spanSubscriber struct { taskRepo repo.ITaskRepo taskRunRepo repo.ITaskRunRepo runType task.TaskRunType + buildHelper service.TraceFilterProcessorBuilder } // Sampled 根据采样率计算是否被采样;采样数量将在 flush 时强制校验。 @@ -57,9 +64,94 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, if task == nil || task.Rule == nil { return false, nil } + var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField + platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) + if err != nil { + return false, err + } + builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ + WorkspaceID: task.GetWorkspaceID(), + SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), + }) + if err != nil { + return false, err + } + if builtinFilter == nil { + return false, err + } + for _, v := range builtinFilter.FilterFields { + obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ + FieldName: v.FieldName, + FieldType: v.FieldType, + Values: v.Values, + QueryType: v.QueryType, + QueryAndOr: v.QueryAndOr, + SubFilter: v.SubFilter, + }) + } + filterFields = append(filterFields, obsFilterFields...) + for _, v := range task.Rule.SpanFilters.Filters.FilterFields { + customFilterFields = append(customFilterFields, &loop_span.FilterField{ + FieldName: v.GetFieldName(), + FieldType: loop_span.FieldType(v.GetFieldType()), + Values: v.Values, + QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), + QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), + }) + } + filterFields = append(filterFields, customFilterFields...) + filter := &loop_span.FilterFields{ + FilterFields: filterFields, + QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), + } + if !filter.Satisfied(span) { + return false, nil + } return true, nil } +func buildBuiltinFilters(ctx context.Context, f span_filter.Filter, req *ListSpansReq) (*loop_span.FilterFields, error) { + filters := make([]*loop_span.FilterField, 0) + env := &span_filter.SpanEnv{ + WorkspaceID: req.WorkspaceID, + ThirdPartyWorkspaceID: req.ThirdPartyWorkspaceID, + } + basicFilter, forceQuery, err := f.BuildBasicSpanFilter(ctx, env) + if err != nil { + return nil, err + } else if len(basicFilter) == 0 && !forceQuery { // if it's null, no need to query from ck + return nil, nil + } + filters = append(filters, basicFilter...) + switch req.SpanListType { + case loop_span.SpanListTypeRootSpan: + subFilter, err := f.BuildRootSpanFilter(ctx, env) + if err != nil { + return nil, err + } + filters = append(filters, subFilter...) + case loop_span.SpanListTypeLLMSpan: + subFilter, err := f.BuildLLMSpanFilter(ctx, env) + if err != nil { + return nil, err + } + filters = append(filters, subFilter...) + case loop_span.SpanListTypeAllSpan: + subFilter, err := f.BuildALLSpanFilter(ctx, env) + if err != nil { + return nil, err + } + filters = append(filters, subFilter...) + default: + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid span list type: %s")) + } + filterAggr := &loop_span.FilterFields{ + QueryAndOr: ptr.Of(loop_span.QueryAndOrEnumAnd), + FilterFields: filters, + } + return filterAggr, nil +} + func (s *spanSubscriber) Creative(ctx context.Context) error { err := s.processor.OnChangeProcessor(ctx, &taskexe.Config{ Task: s.t, diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 3c7d4a38c..ece08d607 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -173,6 +173,7 @@ func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loo taskRepo: h.taskRepo, runType: task.TaskRunTypeNewData, taskRunRepo: h.taskRunRepo, + buildHelper: h.buildHelper, }) } From 42420e234bb506b814c6cd9e60ee4f3bf0cd4cc9 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 15:09:43 +0800 Subject: [PATCH 297/462] add debug log --- .../infra/mq/consumer/autotask_callback_consumer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go b/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go index 4c4b5b2c3..5ae8ceee6 100644 --- a/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/autotask_callback_consumer.go @@ -54,6 +54,6 @@ func (e *CallbackConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt logs.CtxError(ctx, "Callback msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) return nil } - logs.CtxInfo(ctx, "Callback msg, event: %v", event) + logs.CtxInfo(ctx, "Callback msg, event: %v,msgID: %s", event, ext.MsgID) return e.handler.CallBack(ctx, event) } From 12673ad0163f72e859cd485e589d428d0ca019d7 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 16:03:41 +0800 Subject: [PATCH 298/462] fix --- .../task/taskexe/tracehub/subscriber.go | 73 ++++++++++++------- .../domain/task/taskexe/tracehub/trace_hub.go | 1 + 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index ee5dbe45e..15ea7421b 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -9,8 +9,8 @@ import ( "sync" "time" - "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" @@ -56,6 +56,21 @@ func (s *spanSubscriber) getTask() *task.Task { defer s.RUnlock() return s.t } +func combineFilters(filters ...*loop_span.FilterFields) *loop_span.FilterFields { + filterAggr := &loop_span.FilterFields{ + QueryAndOr: ptr.Of(loop_span.QueryAndOrEnumAnd), + } + for _, f := range filters { + if f == nil { + continue + } + filterAggr.FilterFields = append(filterAggr.FilterFields, &loop_span.FilterField{ + QueryAndOr: ptr.Of(loop_span.QueryAndOrEnumAnd), + SubFilter: f, + }) + } + return filterAggr +} // Match 检查 span 是否与 task 的 filter 匹配。 func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, error) { @@ -64,7 +79,7 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, if task == nil || task.Rule == nil { return false, nil } - var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField + //var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) if err != nil { return false, err @@ -79,32 +94,34 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, if builtinFilter == nil { return false, err } - for _, v := range builtinFilter.FilterFields { - obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ - FieldName: v.FieldName, - FieldType: v.FieldType, - Values: v.Values, - QueryType: v.QueryType, - QueryAndOr: v.QueryAndOr, - SubFilter: v.SubFilter, - }) - } - filterFields = append(filterFields, obsFilterFields...) - for _, v := range task.Rule.SpanFilters.Filters.FilterFields { - customFilterFields = append(customFilterFields, &loop_span.FilterField{ - FieldName: v.GetFieldName(), - FieldType: loop_span.FieldType(v.GetFieldType()), - Values: v.Values, - QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), - QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), - }) - } - filterFields = append(filterFields, customFilterFields...) - filter := &loop_span.FilterFields{ - FilterFields: filterFields, - QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), - } - if !filter.Satisfied(span) { + filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(task.GetRule().GetSpanFilters().GetFilters())) + + //for _, v := range builtinFilter.FilterFields { + // obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ + // FieldName: v.FieldName, + // FieldType: v.FieldType, + // Values: v.Values, + // QueryType: v.QueryType, + // QueryAndOr: v.QueryAndOr, + // SubFilter: v.SubFilter, + // }) + //} + //filterFields = append(filterFields, obsFilterFields...) + //for _, v := range task.Rule.SpanFilters.Filters.FilterFields { + // customFilterFields = append(customFilterFields, &loop_span.FilterField{ + // FieldName: v.GetFieldName(), + // FieldType: loop_span.FieldType(v.GetFieldType()), + // Values: v.Values, + // QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), + // QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), + // }) + //} + //filterFields = append(filterFields, customFilterFields...) + //filter := &loop_span.FilterFields{ + // FilterFields: filterFields, + // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), + //} + if !filters.Satisfied(span) { return false, nil } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index ece08d607..6de7d64de 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -184,6 +184,7 @@ func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loo // 按照详细的filter规则匹配数据 for _, s := range subscribers { ok, err := s.Match(ctx, span) + logs.CtxInfo(ctx, "Match span, task_id=%d, trace_id=%s, span_id=%s, ok=%v, err=%v", s.taskID, span.TraceID, span.SpanID, ok, err) if err != nil { merr = multierror.Append(merr, errors.WithMessagef(err, "match span,task_id=%d, trace_id=%s, span_id=%s", s.taskID, span.TraceID, span.SpanID)) continue From 997a9ce8adfc8c6ae15a51d11785a5e01aedca79 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 16:13:27 +0800 Subject: [PATCH 299/462] fix --- .../task/taskexe/tracehub/subscriber.go | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index 15ea7421b..4e2fe1b39 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -80,21 +80,21 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, return false, nil } //var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField - platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) - if err != nil { - return false, err - } - builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ - WorkspaceID: task.GetWorkspaceID(), - SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), - }) - if err != nil { - return false, err - } - if builtinFilter == nil { - return false, err - } - filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(task.GetRule().GetSpanFilters().GetFilters())) + //platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) + //if err != nil { + // return false, err + //} + //builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ + // WorkspaceID: task.GetWorkspaceID(), + // SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), + //}) + //if err != nil { + // return false, err + //} + //if builtinFilter == nil { + // return false, err + //} + //filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(task.GetRule().GetSpanFilters().GetFilters())) //for _, v := range builtinFilter.FilterFields { // obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ @@ -121,12 +121,32 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, // FilterFields: filterFields, // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), //} + filters := s.buildSpanFilters(ctx, task) if !filters.Satisfied(span) { return false, nil } return true, nil } +func (s *spanSubscriber) buildSpanFilters(ctx context.Context, taskConfig *task.Task) *loop_span.FilterFields { + // 可以根据任务配置构建更复杂的过滤条件 + // 这里简化处理,返回 nil 表示不添加额外过滤 + + platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(ctx, loop_span.PlatformType(taskConfig.GetRule().GetSpanFilters().GetPlatformType())) + if err != nil { + return nil + } + builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ + WorkspaceID: taskConfig.GetWorkspaceID(), + SpanListType: loop_span.SpanListType(taskConfig.GetRule().GetSpanFilters().GetSpanListType()), + }) + if err != nil { + return nil + } + filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(taskConfig.GetRule().GetSpanFilters().GetFilters())) + + return filters +} func buildBuiltinFilters(ctx context.Context, f span_filter.Filter, req *ListSpansReq) (*loop_span.FilterFields, error) { filters := make([]*loop_span.FilterField, 0) env := &span_filter.SpanEnv{ From e6c18703ba26babe64eb8eee780e537316d25cec Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 16:18:32 +0800 Subject: [PATCH 300/462] fix --- .../task/taskexe/tracehub/subscriber.go | 85 ++++++++++--------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index 4e2fe1b39..1c0aca4dd 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -9,6 +9,7 @@ import ( "sync" "time" + "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" @@ -79,50 +80,50 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, if task == nil || task.Rule == nil { return false, nil } - //var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField - //platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) - //if err != nil { - // return false, err - //} - //builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ - // WorkspaceID: task.GetWorkspaceID(), - // SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), - //}) - //if err != nil { - // return false, err - //} - //if builtinFilter == nil { - // return false, err - //} + var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField + platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) + if err != nil { + return false, err + } + builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ + WorkspaceID: task.GetWorkspaceID(), + SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), + }) + if err != nil { + return false, err + } + if builtinFilter == nil { + return false, err + } //filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(task.GetRule().GetSpanFilters().GetFilters())) - //for _, v := range builtinFilter.FilterFields { - // obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ - // FieldName: v.FieldName, - // FieldType: v.FieldType, - // Values: v.Values, - // QueryType: v.QueryType, - // QueryAndOr: v.QueryAndOr, - // SubFilter: v.SubFilter, - // }) - //} - //filterFields = append(filterFields, obsFilterFields...) - //for _, v := range task.Rule.SpanFilters.Filters.FilterFields { - // customFilterFields = append(customFilterFields, &loop_span.FilterField{ - // FieldName: v.GetFieldName(), - // FieldType: loop_span.FieldType(v.GetFieldType()), - // Values: v.Values, - // QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), - // QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), - // }) - //} - //filterFields = append(filterFields, customFilterFields...) - //filter := &loop_span.FilterFields{ - // FilterFields: filterFields, - // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), - //} - filters := s.buildSpanFilters(ctx, task) - if !filters.Satisfied(span) { + for _, v := range builtinFilter.FilterFields { + obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ + FieldName: v.FieldName, + FieldType: v.FieldType, + Values: v.Values, + QueryType: v.QueryType, + QueryAndOr: v.QueryAndOr, + SubFilter: v.SubFilter, + }) + } + filterFields = append(filterFields, obsFilterFields...) + for _, v := range task.Rule.SpanFilters.Filters.FilterFields { + customFilterFields = append(customFilterFields, &loop_span.FilterField{ + FieldName: v.GetFieldName(), + FieldType: loop_span.FieldType(v.GetFieldType()), + Values: v.Values, + QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), + QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), + }) + } + filterFields = append(filterFields, customFilterFields...) + filter := &loop_span.FilterFields{ + FilterFields: filterFields, + QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), + } + //filters := s.buildSpanFilters(ctx, task) + if !filter.Satisfied(span) { return false, nil } From 67389f4aa3e5bbdb3ef8af82bdd59b8a579c525e Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 16:27:26 +0800 Subject: [PATCH 301/462] fix match --- .../task/taskexe/tracehub/subscriber.go | 85 +++++++++---------- 1 file changed, 42 insertions(+), 43 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index 1c0aca4dd..4e2fe1b39 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -9,7 +9,6 @@ import ( "sync" "time" - "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" @@ -80,50 +79,50 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, if task == nil || task.Rule == nil { return false, nil } - var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField - platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) - if err != nil { - return false, err - } - builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ - WorkspaceID: task.GetWorkspaceID(), - SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), - }) - if err != nil { - return false, err - } - if builtinFilter == nil { - return false, err - } + //var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField + //platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) + //if err != nil { + // return false, err + //} + //builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ + // WorkspaceID: task.GetWorkspaceID(), + // SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), + //}) + //if err != nil { + // return false, err + //} + //if builtinFilter == nil { + // return false, err + //} //filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(task.GetRule().GetSpanFilters().GetFilters())) - for _, v := range builtinFilter.FilterFields { - obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ - FieldName: v.FieldName, - FieldType: v.FieldType, - Values: v.Values, - QueryType: v.QueryType, - QueryAndOr: v.QueryAndOr, - SubFilter: v.SubFilter, - }) - } - filterFields = append(filterFields, obsFilterFields...) - for _, v := range task.Rule.SpanFilters.Filters.FilterFields { - customFilterFields = append(customFilterFields, &loop_span.FilterField{ - FieldName: v.GetFieldName(), - FieldType: loop_span.FieldType(v.GetFieldType()), - Values: v.Values, - QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), - QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), - }) - } - filterFields = append(filterFields, customFilterFields...) - filter := &loop_span.FilterFields{ - FilterFields: filterFields, - QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), - } - //filters := s.buildSpanFilters(ctx, task) - if !filter.Satisfied(span) { + //for _, v := range builtinFilter.FilterFields { + // obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ + // FieldName: v.FieldName, + // FieldType: v.FieldType, + // Values: v.Values, + // QueryType: v.QueryType, + // QueryAndOr: v.QueryAndOr, + // SubFilter: v.SubFilter, + // }) + //} + //filterFields = append(filterFields, obsFilterFields...) + //for _, v := range task.Rule.SpanFilters.Filters.FilterFields { + // customFilterFields = append(customFilterFields, &loop_span.FilterField{ + // FieldName: v.GetFieldName(), + // FieldType: loop_span.FieldType(v.GetFieldType()), + // Values: v.Values, + // QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), + // QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), + // }) + //} + //filterFields = append(filterFields, customFilterFields...) + //filter := &loop_span.FilterFields{ + // FilterFields: filterFields, + // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), + //} + filters := s.buildSpanFilters(ctx, task) + if !filters.Satisfied(span) { return false, nil } From df3bb70ec5d3d0febd7848a089d26c6c69178b2a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 16:46:11 +0800 Subject: [PATCH 302/462] fix --- .../task/taskexe/tracehub/subscriber.go | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index 4e2fe1b39..a968f6188 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -9,6 +9,7 @@ import ( "sync" "time" + "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" @@ -79,50 +80,49 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, if task == nil || task.Rule == nil { return false, nil } - //var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField - //platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) - //if err != nil { - // return false, err - //} - //builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ - // WorkspaceID: task.GetWorkspaceID(), - // SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), - //}) - //if err != nil { - // return false, err - //} - //if builtinFilter == nil { - // return false, err - //} - //filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(task.GetRule().GetSpanFilters().GetFilters())) - - //for _, v := range builtinFilter.FilterFields { - // obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ - // FieldName: v.FieldName, - // FieldType: v.FieldType, - // Values: v.Values, - // QueryType: v.QueryType, - // QueryAndOr: v.QueryAndOr, - // SubFilter: v.SubFilter, - // }) - //} - //filterFields = append(filterFields, obsFilterFields...) - //for _, v := range task.Rule.SpanFilters.Filters.FilterFields { - // customFilterFields = append(customFilterFields, &loop_span.FilterField{ - // FieldName: v.GetFieldName(), - // FieldType: loop_span.FieldType(v.GetFieldType()), - // Values: v.Values, - // QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), - // QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), - // }) - //} - //filterFields = append(filterFields, customFilterFields...) - //filter := &loop_span.FilterFields{ - // FilterFields: filterFields, - // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), - //} - filters := s.buildSpanFilters(ctx, task) - if !filters.Satisfied(span) { + var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField + platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) + if err != nil { + return false, err + } + builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ + WorkspaceID: task.GetWorkspaceID(), + SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), + }) + if err != nil { + return false, err + } + if builtinFilter == nil { + return false, err + } + + for _, v := range builtinFilter.FilterFields { + obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ + FieldName: v.FieldName, + FieldType: v.FieldType, + Values: v.Values, + QueryType: v.QueryType, + QueryAndOr: v.QueryAndOr, + SubFilter: v.SubFilter, + }) + } + filterFields = append(filterFields, obsFilterFields...) + for _, v := range task.Rule.SpanFilters.Filters.FilterFields { + customFilterFields = append(customFilterFields, &loop_span.FilterField{ + FieldName: v.GetFieldName(), + FieldType: loop_span.FieldType(v.GetFieldType()), + Values: v.Values, + QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), + QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), + }) + } + filterFields = append(filterFields, customFilterFields...) + filter := &loop_span.FilterFields{ + FilterFields: filterFields, + QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), + } + //filters := s.buildSpanFilters(ctx, task) + if !filter.Satisfied(span) { return false, nil } From bb8c35f22d9c392cd873d1f9a7ab0fd7d232ad47 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 17:05:28 +0800 Subject: [PATCH 303/462] fix --- .../task/taskexe/tracehub/subscriber.go | 87 +++++++++---------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index a968f6188..86b45ede4 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -9,7 +9,6 @@ import ( "sync" "time" - "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" @@ -80,49 +79,49 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, if task == nil || task.Rule == nil { return false, nil } - var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField - platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) - if err != nil { - return false, err - } - builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ - WorkspaceID: task.GetWorkspaceID(), - SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), - }) - if err != nil { - return false, err - } - if builtinFilter == nil { - return false, err - } - - for _, v := range builtinFilter.FilterFields { - obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ - FieldName: v.FieldName, - FieldType: v.FieldType, - Values: v.Values, - QueryType: v.QueryType, - QueryAndOr: v.QueryAndOr, - SubFilter: v.SubFilter, - }) - } - filterFields = append(filterFields, obsFilterFields...) - for _, v := range task.Rule.SpanFilters.Filters.FilterFields { - customFilterFields = append(customFilterFields, &loop_span.FilterField{ - FieldName: v.GetFieldName(), - FieldType: loop_span.FieldType(v.GetFieldType()), - Values: v.Values, - QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), - QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), - }) - } - filterFields = append(filterFields, customFilterFields...) - filter := &loop_span.FilterFields{ - FilterFields: filterFields, - QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), - } - //filters := s.buildSpanFilters(ctx, task) - if !filter.Satisfied(span) { + //var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField + //platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) + //if err != nil { + // return false, err + //} + //builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ + // WorkspaceID: task.GetWorkspaceID(), + // SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), + //}) + //if err != nil { + // return false, err + //} + //if builtinFilter == nil { + // return false, err + //} + // + //for _, v := range builtinFilter.FilterFields { + // obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ + // FieldName: v.FieldName, + // FieldType: v.FieldType, + // Values: v.Values, + // QueryType: v.QueryType, + // QueryAndOr: v.QueryAndOr, + // SubFilter: v.SubFilter, + // }) + //} + //filterFields = append(filterFields, obsFilterFields...) + //for _, v := range task.Rule.SpanFilters.Filters.FilterFields { + // customFilterFields = append(customFilterFields, &loop_span.FilterField{ + // FieldName: v.GetFieldName(), + // FieldType: loop_span.FieldType(v.GetFieldType()), + // Values: v.Values, + // QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), + // QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), + // }) + //} + //filterFields = append(filterFields, customFilterFields...) + //filter := &loop_span.FilterFields{ + // FilterFields: filterFields, + // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), + //} + filters := s.buildSpanFilters(ctx, task) + if !filters.Satisfied(span) { return false, nil } From 1a6be6260710f90eeb3d8d42e3023121d40c1e72 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 17:33:10 +0800 Subject: [PATCH 304/462] add debug log --- .../modules/observability/infra/mq/consumer/task_consumer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/infra/mq/consumer/task_consumer.go b/backend/modules/observability/infra/mq/consumer/task_consumer.go index dda99e606..f59c62033 100644 --- a/backend/modules/observability/infra/mq/consumer/task_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/task_consumer.go @@ -54,6 +54,6 @@ func (e *TaskConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) er logs.CtxError(ctx, "Task msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) return nil } - logs.CtxInfo(ctx, "Handle Task message %+v,log_id=%s, trace_id=%s, span_id=%s", event, event.LogID, event.TraceID, event.SpanID) + logs.CtxInfo(ctx, "Handle Task message %+v,log_id=%s, trace_id=%s, span_id=%s,msgID=%s", event, event.LogID, event.TraceID, event.SpanID, ext.MsgID) return e.handler.TraceHub(ctx, event) } From 46177fe382e15f2f8ea0725c2b73c2743eff6f8f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 17:43:02 +0800 Subject: [PATCH 305/462] fix --- .../observability/domain/task/taskexe/tracehub/backfill.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go index 3d898b61e..a687caec0 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go @@ -103,6 +103,7 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity maxFlushInterval: time.Second * 5, taskRepo: h.taskRepo, runType: task.TaskRunTypeBackFill, + taskRunRepo: h.taskRunRepo, } // 解析任务规则 var rule *task.Rule From 0fb3712bd15181f243ddba6f7fb5fcb803dbd0ba Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 17:55:33 +0800 Subject: [PATCH 306/462] 1 --- .../task/taskexe/processor/data_reflow.go | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 872513567..ab722e4fb 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -266,23 +266,31 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, config *tas return err } // 3、创建 taskrun:历史回溯生成一个taskRun,新数据生成一个taskRun - cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() - cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() var taskRun *task_entity.TaskRun - taskRunConfig := &task.TaskRunConfig{ - DataReflowRunConfig: &task.DataReflowRunConfig{ - DatasetID: *config.DatasetID, - EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), - CycleStartAt: cycleStartAt, - CycleEndAt: cycleEndAt, - Status: task.RunStatusRunning, - }, - } + var taskRunConfig *task.TaskRunConfig var runType task.TaskRunType if isBackFill { runType = task.TaskRunTypeBackFill + taskRunConfig = &task.TaskRunConfig{ + DataReflowRunConfig: &task.DataReflowRunConfig{ + DatasetID: *config.DatasetID, + EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), + CycleStartAt: time.Now().UnixMilli(), + CycleEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetEffectiveTime().GetEndAt() - currentTask.GetRule().GetEffectiveTime().GetStartAt()), + Status: task.RunStatusRunning, + }, + } } else { runType = task.TaskRunTypeNewData + taskRunConfig = &task.TaskRunConfig{ + DataReflowRunConfig: &task.DataReflowRunConfig{ + DatasetID: *config.DatasetID, + EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), + CycleStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), + CycleEndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), + Status: task.RunStatusRunning, + }, + } } taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, runType) if err != nil { From ba2d0f638ed04e095e99069d4a7bda875bf6b2c1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 18:04:34 +0800 Subject: [PATCH 307/462] fix --- .../domain/task/taskexe/processor/data_reflow.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index ab722e4fb..75aa6bfa1 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -343,8 +343,8 @@ func (p *DataReflowProcessor) OnFinishChangeProcessor(ctx context.Context, curre func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig, runType task.TaskRunType) (*task_entity.TaskRun, error) { // 创建taskRun - cycleStartAt := currentTask.GetRule().GetEffectiveTime().GetStartAt() - cycleEndAt := currentTask.GetRule().GetEffectiveTime().GetEndAt() + cycleStartAt := runConfig.DataReflowRunConfig.CycleStartAt + cycleEndAt := runConfig.DataReflowRunConfig.CycleEndAt var taskRun *task_entity.TaskRun taskRunConfig := runConfig taskRun = &task_entity.TaskRun{ From 3f14574379da48fa6584eaa1e689229966fed225 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 18:08:17 +0800 Subject: [PATCH 308/462] fix --- .../observability/domain/task/taskexe/processor/data_reflow.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 75aa6bfa1..08a4dc756 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -276,7 +276,7 @@ func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, config *tas DatasetID: *config.DatasetID, EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), CycleStartAt: time.Now().UnixMilli(), - CycleEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetEffectiveTime().GetEndAt() - currentTask.GetRule().GetEffectiveTime().GetStartAt()), + CycleEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), Status: task.RunStatusRunning, }, } From 892696656354d3e2eba6f18fd3505c187fbc0f2a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 22 Sep 2025 18:47:28 +0800 Subject: [PATCH 309/462] fix --- .../domain/task/taskexe/tracehub/subscriber.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index 86b45ede4..a911e8add 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -120,10 +120,11 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, // FilterFields: filterFields, // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), //} - filters := s.buildSpanFilters(ctx, task) - if !filters.Satisfied(span) { - return false, nil - } + + //filters := s.buildSpanFilters(ctx, task) + //if !filters.Satisfied(span) { + // return false, nil + //} return true, nil } From a442079928d3a23adb29e21415e02e73269bcc82 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 09:35:21 +0800 Subject: [PATCH 310/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 10 +++++----- .../domain/task/taskexe/processor/data_reflow.go | 10 +++++----- .../domain/task/taskexe/tracehub/scheduled_task.go | 5 +++++ .../domain/task/taskexe/tracehub/subscriber.go | 8 ++++---- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 46a71be3e..957c4a175 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -712,11 +712,11 @@ func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, curr logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } - err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) - if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } + //err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + //if err != nil { + // logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + // return err + //} } return nil diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 08a4dc756..3bc69d66d 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -246,11 +246,11 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } - err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) - if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } + //err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + //if err != nil { + // logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + // return err + //} } return nil } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 4fedd2a67..de817d658 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -155,6 +155,11 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxError(ctx, "OnChangeProcessor err:%v", err) continue } + err = proc.OnUpdateChangeProcessor(ctx, taskInfo, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnUpdateChangeProcessor err:%v", err) + continue + } } } } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index a911e8add..e2a0a4525 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -121,10 +121,10 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), //} - //filters := s.buildSpanFilters(ctx, task) - //if !filters.Satisfied(span) { - // return false, nil - //} + filters := s.buildSpanFilters(ctx, task) + if !filters.Satisfied(span) { + return false, nil + } return true, nil } From f86275201f1fb97f8cb6d7aac543d472718e5838 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 09:47:42 +0800 Subject: [PATCH 311/462] fix --- .../domain/task/taskexe/processor/auto_evaluate.go | 10 +++++----- .../domain/task/taskexe/processor/data_reflow.go | 12 ++++++------ .../domain/task/taskexe/tracehub/scheduled_task.go | 5 ----- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 957c4a175..46a71be3e 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -712,11 +712,11 @@ func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, curr logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } - //err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) - //if err != nil { - // logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - // return err - //} + err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } } return nil diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 3bc69d66d..e20001e89 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -182,7 +182,7 @@ func ShouldTriggerNewData(taskDO *task.Task) bool { return effectiveTime.GetEndAt() > 0 && effectiveTime.GetStartAt() > 0 && effectiveTime.GetStartAt() < effectiveTime.GetEndAt() && - time.Now().Before(time.Unix(effectiveTime.GetStartAt(), 0)) + time.Now().After(time.Unix(effectiveTime.GetStartAt(), 0)) } func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { @@ -246,11 +246,11 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } - //err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) - //if err != nil { - // logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - // return err - //} + err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } } return nil } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index de817d658..4fedd2a67 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -155,11 +155,6 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxError(ctx, "OnChangeProcessor err:%v", err) continue } - err = proc.OnUpdateChangeProcessor(ctx, taskInfo, task.TaskStatusRunning) - if err != nil { - logs.CtxError(ctx, "OnUpdateChangeProcessor err:%v", err) - continue - } } } } From 5aa183edec46e97eb9aa7b6b0d91c73d1d9dd373 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 13:33:13 +0800 Subject: [PATCH 312/462] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/task/service/task_service.go | 4 +- .../task/taskexe/processor/auto_evaluate.go | 511 ++++++++---------- .../task/taskexe/processor/data_reflow.go | 181 +++---- .../domain/task/taskexe/processor/utils.go | 30 + .../task/taskexe/tracehub/scheduled_task.go | 18 +- .../task/taskexe/tracehub/subscriber.go | 11 +- .../domain/task/taskexe/tracehub/trace_hub.go | 119 ++-- .../domain/task/taskexe/types.go | 42 +- 8 files changed, 490 insertions(+), 426 deletions(-) create mode 100644 backend/modules/observability/domain/task/taskexe/processor/utils.go diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index f5a7e2bbb..e2b845dbe 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -139,9 +139,9 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r // 自动评测历史回溯——创建空壳子 taskPO.ID = id taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) - if err = proc.OnCreateChangeProcessor(ctx, taskConfig); err != nil { + if err = proc.OnCreateTaskChange(ctx, taskConfig); err != nil { logs.CtxError(ctx, "create initial task run failed, task_id=%d, err=%v", id, err) - //任务改为禁用? + if err1 := t.TaskRepo.DeleteTask(ctx, taskPO); err1 != nil { logs.CtxError(ctx, "delete task failed, task_id=%d, err=%v", id, err1) } diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index 46a71be3e..f9aec67df 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -9,15 +9,10 @@ import ( "strconv" "time" - "github.com/bytedance/sonic" - "github.com/coze-dev/coze-loop/backend/infra/middleware/session" - tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" - obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" - "github.com/coze-dev/coze-loop/backend/pkg/errorx" - "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" - "github.com/apaxa-go/helper/strconvh" "github.com/bytedance/gg/gptr" + "github.com/bytedance/sonic" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" eval_target_d "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_target" @@ -25,6 +20,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/eval_target" dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" @@ -32,7 +28,10 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/lang/slices" "github.com/coze-dev/coze-loop/backend/pkg/logs" "github.com/coze-dev/cozeloop-go/spec/tracespec" @@ -159,234 +158,6 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * return nil } -func (p *AutoEvaluteProcessor) Finish(ctx context.Context, config any, trigger *taskexe.Trigger) error { - //todo:[xun]加锁 - session := getSession(ctx, trigger.Task) - taskRun, ok := config.(*task_entity.TaskRun) - if !ok { - return taskexe.ErrInvalidConfig - } - taskRunPO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) - p.OnFinishTaskRunProcessor(ctx, taskRun) - if err := p.evaluationSvc.FinishExperiment(ctx, &rpc.FinishExperimentReq{ - WorkspaceID: trigger.Task.GetWorkspaceID(), - ExperimentID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID(), - ExperimentRunID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID(), - Session: session, - }); err != nil { - return err - } - //todo:[xun]根据是否是真的结束实验做处理 - if trigger.IsFinish { - if err := p.OnUpdateChangeProcessor(ctx, trigger.Task, task.TaskStatusSuccess); err != nil { - } - } - return nil -} - -func (p *AutoEvaluteProcessor) OnChangeProcessor(ctx context.Context, config *taskexe.Config, isBackFill bool) error { - if config.Task == nil { - return taskexe.ErrInvalidConfig - } - currentTask := config.Task - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) - //todo:[xun]加锁 - ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) - sessionInfo := getSession(ctx, currentTask) - var evaluationSetColumns []string - var evaluatorVersionIds []int64 - var evaluatorFieldMappings []*expt.EvaluatorFieldMapping - evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id") - autoEvaluateConfigs := currentTask.GetTaskConfig().GetAutoEvaluateConfigs() - evaluationSetSchema, fromEvalSet := getBasicEvaluationSetSchema(evaluationSetColumns) - for _, autoEvaluateConfig := range autoEvaluateConfigs { - evaluatorVersionIds = append(evaluatorVersionIds, autoEvaluateConfig.EvaluatorVersionID) - filedMappings := autoEvaluateConfig.GetFieldMappings() - for _, fieldMapping := range filedMappings { - if fieldMapping.GetFieldSchema() == nil { - continue - } - fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ - FieldName: gptr.Of(fieldMapping.GetFieldSchema().GetName()), - FromFieldName: gptr.Of(fieldMapping.GetEvalSetName()), - }) - if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { - continue - } - // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, - evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ - Key: gptr.Of(fieldMapping.GetEvalSetName()), - Name: gptr.Of(fieldMapping.GetEvalSetName()), - Description: gptr.Of(fieldMapping.TraceFieldJsonpath), - ContentType: gptr.Of(fieldMapping.GetFieldSchema().GetContentType()), - //DefaultDisplayFormat: gptr.Of(dataset.FieldDisplayFormat_PlainText), - TextSchema: fieldMapping.GetFieldSchema().TextSchema, - //Hidden: gptr.Of(false), - }) - evaluationSetColumns = append(evaluationSetColumns, fieldMapping.GetEvalSetName()) - } - - evaluatorFieldMappings = append(evaluatorFieldMappings, &expt.EvaluatorFieldMapping{ - EvaluatorVersionID: autoEvaluateConfig.GetEvaluatorVersionID(), - FromEvalSet: fromEvalSet, - }) - } - category := getCategory(currentTask.TaskType) - schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) - // 1、创建评测集 - logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) - var datasetName, exptName string - if isBackFill { - datasetName = fmt.Sprintf("自动化任务评测集_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - exptName = fmt.Sprintf("自动化任务实验_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - } else { - datasetName = fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - exptName = fmt.Sprintf("自动化任务实验_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - } - datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( - 0, - currentTask.GetWorkspaceID(), - datasetName, - category, - schema, - sessionInfo, - )) - if err != nil { - logs.CtxError(ctx, "CreateDataset failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) - return err - //datasetID = 7548288691995672577 - } - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) - // 2、创建实验 - maxAliveTime := currentTask.GetRule().GetEffectiveTime().GetEndAt() - currentTask.GetRule().GetEffectiveTime().GetStartAt() - if currentTask.GetRule().GetSampler().GetIsCycle() { - switch *currentTask.GetRule().GetSampler().CycleTimeUnit { - case task.TimeUnitDay: - maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 24 * time.Hour.Milliseconds() - case task.TimeUnitWeek: - maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 7 * 24 * time.Hour.Milliseconds() - default: - maxAliveTime = (*currentTask.GetRule().GetSampler().CycleInterval) * 10 * time.Minute.Milliseconds() - } - } - submitExperimentReq := rpc.SubmitExperimentReq{ - WorkspaceID: currentTask.GetWorkspaceID(), - EvalSetVersionID: gptr.Of(datasetID), - EvaluatorVersionIds: evaluatorVersionIds, - Name: ptr.Of(exptName), - Desc: gptr.Of("自动化任务实验"), - EvalSetID: gptr.Of(datasetID), - EvaluatorFieldMapping: evaluatorFieldMappings, - TargetFieldMapping: &expt.TargetFieldMapping{ - FromEvalSet: []*expt.FieldMapping{}, - }, - CreateEvalTargetParam: &eval_target.CreateEvalTargetParam{ - SourceTargetID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), - EvalTargetType: gptr.Of(eval_target_d.EvalTargetType_Trace), - }, - ExptType: gptr.Of(expt.ExptType_Online), - MaxAliveTime: gptr.Of(maxAliveTime), - SourceType: gptr.Of(expt.SourceType_AutoTask), - SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), - Session: sessionInfo, - } - logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) - exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) - if err != nil { - logs.CtxError(ctx, "SubmitExperiment failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) - return err - } - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) - - evaluationSetConfig, err := p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, currentTask.GetWorkspaceID(), datasetID, category) - if err != nil { - logs.CtxError(ctx, "[task-debug] GetEvaluationSet err:%v", err) - return err - } - // 3、更新任务状态 - //if currentTask.GetTaskStatus() == task.TaskStatusUnstarted { - // updateMap := map[string]interface{}{ - // "task_status": task.TaskStatusRunning, - // } - // logs.CtxInfo(ctx, "currentTask.GetID():%d, currentTask.GetWorkspaceID():%d", currentTask.GetID(), currentTask.GetWorkspaceID()) - // err = p.taskRepo.UpdateTaskWithOCC(ctx, currentTask.GetID(), currentTask.GetWorkspaceID(), updateMap) - // if err != nil { - // return err - // } - //} - // 4、更新任务配置 - effectiveTime := currentTask.GetRule().GetEffectiveTime() - taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) - if err != nil { - return err - } - runType := task.TaskRunTypeNewData - if isBackFill { - taskConfig.TaskStatus = task.TaskStatusRunning - runType = task.TaskRunTypeBackFill - } - - var cycleStartAt, cycleEndAt, endAt int64 - currentTime := time.Now().UnixMilli() - - if effectiveTime.StartAt != nil && effectiveTime.EndAt != nil { - endAt = effectiveTime.GetEndAt() - if len(taskConfig.TaskRuns) == 0 { - // 首次创建 taskrun,从任务生效时间开始 - cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) - } else { - // 找到最新的 cycleEndAt 作为新的 cycleStartAt - for _, run := range taskConfig.TaskRuns { - if run.RunStartAt.UnixMilli() > cycleStartAt { - cycleStartAt = run.RunEndAt.UnixMilli() - } - } - cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) - } - cycleEndAt = cycleStartAt + maxAliveTime - - // 确保周期开始时间不早于任务生效时间 - if cycleStartAt < effectiveTime.GetStartAt() { - cycleStartAt = effectiveTime.GetStartAt() - cycleEndAt = cycleStartAt + maxAliveTime - } - - // 确保周期结束时间不晚于任务结束时间 - if cycleEndAt > effectiveTime.GetEndAt() { - cycleEndAt = effectiveTime.GetEndAt() - } - } - - logs.CtxInfo(ctx, "Creating taskrun with cycle: startAt=%d, endAt=%d, currentTime=%d", cycleStartAt, cycleEndAt, currentTime) - // 5、创建 taskrun - taskRunConfig := &task.TaskRunConfig{ - AutoEvaluateRunConfig: &task.AutoEvaluateRunConfig{ - ExptID: exptID, - ExptRunID: exptRunID, - EvalID: datasetID, - SchemaID: evaluationSetConfig.DatasetVersion.DatasetSchema.ID, - Schema: ptr.Of(ToJSONString(ctx, evaluationSetConfig.DatasetVersion.DatasetSchema.FieldSchemas)), - EndAt: endAt, - CycleStartAt: cycleStartAt, - CycleEndAt: cycleEndAt, - Status: task.TaskStatusRunning, - }, - } - - // 6、更新任务配置 - taskRun, err := p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, runType) - if err != nil { - return err - } - taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) - err = p.taskRepo.UpdateTask(ctx, taskConfig) - if err != nil { - return err - } - return nil - -} - func ToJSONString(ctx context.Context, obj interface{}) string { if obj == nil { return "" @@ -412,20 +183,6 @@ func resetStartTime(currentTime int64, originalStartTime int64, maxAliveTime int return originalStartTime } -func getSession(ctx context.Context, task *task.Task) *common.Session { - userIDStr := session.UserIDInCtxOrEmpty(ctx) - if userIDStr == "" { - userIDStr = task.GetBaseInfo().GetCreatedBy().GetUserID() - } - userID, err := strconv.ParseInt(userIDStr, 10, 64) - if err != nil { - logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor OnChangeProcessor, ParseInt err:%v", err) - } - return &common.Session{ - UserID: gptr.Of(userID), - //AppID: gptr.Of(int32(717152)), - } -} func getBasicEvaluationSetSchema(basicColumns []string) (*dataset0.DatasetSchema, []*expt.FieldMapping) { evaluationSetSchema := dataset0.NewDatasetSchema() var fromEvalSet []*expt.FieldMapping @@ -682,46 +439,60 @@ func GetContentInfo(ctx context.Context, contentType common.ContentType, value s return content, nil } -func (p *AutoEvaluteProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnCreateChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) - //todo:[xun]加锁 +func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } if ShouldTriggerBackfill(currentTask) && taskRuns == nil { - err = p.OnChangeProcessor(ctx, &taskexe.Config{ - Task: currentTask, - }, true) + err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: currentTask, + RunType: task.TaskRunTypeBackFill, + RunStartAt: time.Now().UnixMilli(), + RunEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), + }) if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } - err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } } if ShouldTriggerNewData(currentTask) { - err = p.OnChangeProcessor(ctx, &taskexe.Config{ - Task: currentTask, - }, false) - if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err + var runStartAt, runEndAt int64 + runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() + if !currentTask.GetRule().GetSampler().GetIsCycle() { + runEndAt = currentTask.GetRule().GetEffectiveTime().GetEndAt() + } else { + switch *currentTask.GetRule().GetSampler().CycleTimeUnit { + case task.TimeUnitDay: + runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() + case task.TimeUnitWeek: + runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() + default: + runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() + } } - err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: currentTask, + RunType: task.TaskRunTypeNewData, + RunStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), + RunEndAt: runEndAt, + }) + err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) + logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } } - return nil } -func (p *AutoEvaluteProcessor) OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { + +func (p *AutoEvaluteProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { switch taskOp { case task.TaskStatusSuccess: if currentTask.GetTaskStatus() != task.TaskStatusDisabled { @@ -751,31 +522,217 @@ func (p *AutoEvaluteProcessor) OnUpdateChangeProcessor(ctx context.Context, curr } return nil } -func (p *AutoEvaluteProcessor) OnFinishChangeProcessor(ctx context.Context, task *task.Task) error { + +func (p *AutoEvaluteProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { + err := p.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ + Task: param.Task, + TaskRun: param.TaskRun, + }) + if err != nil { + logs.CtxError(ctx, "OnFinishTaskRunChange failed, taskRun:%+v, err:%v", param.TaskRun, err) + return err + } + if param.IsFinish { + if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { + logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) + return err + } + } return nil } -func (p *AutoEvaluteProcessor) OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig, runType task.TaskRunType) (*task_entity.TaskRun, error) { +func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { + //todo:[xun]加锁 + currentTask := param.CurrentTask + ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) + sessionInfo := getSession(ctx, currentTask) + var evaluationSetColumns []string + var evaluatorVersionIds []int64 + var evaluatorFieldMappings []*expt.EvaluatorFieldMapping + evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id") + autoEvaluateConfigs := currentTask.GetTaskConfig().GetAutoEvaluateConfigs() + evaluationSetSchema, fromEvalSet := getBasicEvaluationSetSchema(evaluationSetColumns) + for _, autoEvaluateConfig := range autoEvaluateConfigs { + evaluatorVersionIds = append(evaluatorVersionIds, autoEvaluateConfig.EvaluatorVersionID) + filedMappings := autoEvaluateConfig.GetFieldMappings() + for _, fieldMapping := range filedMappings { + if fieldMapping.GetFieldSchema() == nil { + continue + } + fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ + FieldName: gptr.Of(fieldMapping.GetFieldSchema().GetName()), + FromFieldName: gptr.Of(fieldMapping.GetEvalSetName()), + }) + if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { + continue + } + // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, + evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ + Key: gptr.Of(fieldMapping.GetEvalSetName()), + Name: gptr.Of(fieldMapping.GetEvalSetName()), + Description: gptr.Of(fieldMapping.TraceFieldJsonpath), + ContentType: gptr.Of(fieldMapping.GetFieldSchema().GetContentType()), + //DefaultDisplayFormat: gptr.Of(dataset.FieldDisplayFormat_PlainText), + TextSchema: fieldMapping.GetFieldSchema().TextSchema, + //Hidden: gptr.Of(false), + }) + evaluationSetColumns = append(evaluationSetColumns, fieldMapping.GetEvalSetName()) + } + + evaluatorFieldMappings = append(evaluatorFieldMappings, &expt.EvaluatorFieldMapping{ + EvaluatorVersionID: autoEvaluateConfig.GetEvaluatorVersionID(), + FromEvalSet: fromEvalSet, + }) + } + category := getCategory(currentTask.TaskType) + schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) + logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + var datasetName, exptName string + if param.RunType == task.TaskRunTypeBackFill { + datasetName = fmt.Sprintf("自动化任务评测集_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("自动化任务实验_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + } else { + datasetName = fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("自动化任务实验_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + } + // 1、创建评测集 + datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( + 0, + currentTask.GetWorkspaceID(), + datasetName, + category, + schema, + sessionInfo, + )) + if err != nil { + logs.CtxError(ctx, "CreateDataset failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) + return err + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) + // 2、创建实验 + maxAliveTime := param.RunEndAt - param.RunStartAt + submitExperimentReq := rpc.SubmitExperimentReq{ + WorkspaceID: currentTask.GetWorkspaceID(), + EvalSetVersionID: gptr.Of(datasetID), + EvaluatorVersionIds: evaluatorVersionIds, + Name: ptr.Of(exptName), + Desc: gptr.Of("自动化任务实验"), + EvalSetID: gptr.Of(datasetID), + EvaluatorFieldMapping: evaluatorFieldMappings, + TargetFieldMapping: &expt.TargetFieldMapping{ + FromEvalSet: []*expt.FieldMapping{}, + }, + CreateEvalTargetParam: &eval_target.CreateEvalTargetParam{ + SourceTargetID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), + EvalTargetType: gptr.Of(eval_target_d.EvalTargetType_Trace), + }, + ExptType: gptr.Of(expt.ExptType_Online), + MaxAliveTime: gptr.Of(maxAliveTime), + SourceType: gptr.Of(expt.SourceType_AutoTask), + SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), + Session: sessionInfo, + } + logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) + exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) + if err != nil { + logs.CtxError(ctx, "SubmitExperiment failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) + return err + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) + + evaluationSetConfig, err := p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, currentTask.GetWorkspaceID(), datasetID, category) + if err != nil { + logs.CtxError(ctx, "[task-debug] GetEvaluationSet err:%v", err) + return err + } + //effectiveTime := currentTask.GetRule().GetEffectiveTime() + + //var cycleStartAt, cycleEndAt, endAt int64 + //currentTime := time.Now().UnixMilli() + // + //if effectiveTime.StartAt != nil && effectiveTime.EndAt != nil { + // endAt = effectiveTime.GetEndAt() + // if len(taskConfig.TaskRuns) == 0 { + // // 首次创建 taskrun,从任务生效时间开始 + // cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) + // } else { + // // 找到最新的 cycleEndAt 作为新的 cycleStartAt + // for _, run := range taskConfig.TaskRuns { + // if run.RunStartAt.UnixMilli() > cycleStartAt { + // cycleStartAt = run.RunEndAt.UnixMilli() + // } + // } + // cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) + // } + // cycleEndAt = cycleStartAt + maxAliveTime + // + // // 确保周期开始时间不早于任务生效时间 + // if cycleStartAt < effectiveTime.GetStartAt() { + // cycleStartAt = effectiveTime.GetStartAt() + // cycleEndAt = cycleStartAt + maxAliveTime + // } + // + // // 确保周期结束时间不晚于任务结束时间 + // if cycleEndAt > effectiveTime.GetEndAt() { + // cycleEndAt = effectiveTime.GetEndAt() + // } + //} + + // 5、创建 taskrun + taskRunConfig := &task.TaskRunConfig{ + AutoEvaluateRunConfig: &task.AutoEvaluateRunConfig{ + ExptID: exptID, + ExptRunID: exptRunID, + EvalID: datasetID, + SchemaID: evaluationSetConfig.DatasetVersion.DatasetSchema.ID, + Schema: ptr.Of(ToJSONString(ctx, evaluationSetConfig.DatasetVersion.DatasetSchema.FieldSchemas)), + EndAt: param.RunEndAt, + CycleStartAt: param.RunStartAt, + CycleEndAt: param.RunEndAt, + Status: task.TaskStatusRunning, + }, + } taskRun := &task_entity.TaskRun{ TaskID: currentTask.GetID(), WorkspaceID: currentTask.GetWorkspaceID(), - TaskType: runType, + TaskType: param.RunType, RunStatus: task.RunStatusRunning, - RunStartAt: time.UnixMilli(runConfig.GetAutoEvaluateRunConfig().GetCycleStartAt()), - RunEndAt: time.UnixMilli(runConfig.GetAutoEvaluateRunConfig().GetCycleEndAt()), + RunStartAt: time.UnixMilli(param.RunStartAt), + RunEndAt: time.UnixMilli(param.RunEndAt), CreatedAt: time.Now(), UpdatedAt: time.Now(), - RunConfig: ptr.Of(ToJSONString(ctx, runConfig)), + RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), } id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) if err != nil { logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) - return nil, err + return err } taskRun.ID = id - return taskRun, nil + taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) + if err != nil { + return err + } + taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) + err = p.taskRepo.UpdateTask(ctx, taskConfig) + if err != nil { + return err + } + return nil } -func (p *AutoEvaluteProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error { + +func (p *AutoEvaluteProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { + session := getSession(ctx, param.Task) + taskRun := param.TaskRun + taskRunPO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) + if err := p.evaluationSvc.FinishExperiment(ctx, &rpc.FinishExperimentReq{ + WorkspaceID: param.Task.GetWorkspaceID(), + ExperimentID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID(), + ExperimentRunID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID(), + Session: session, + }); err != nil { + return err + } // 设置taskRun状态为已完成 taskRun.RunStatus = task.RunStatusDone // 更新taskRun diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index e20001e89..df92179cc 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -124,20 +124,6 @@ func ConvertFieldMappingsDTO2DO(mappings []*dataset0.FieldMapping) []entity.Fiel return result } -func (p *DataReflowProcessor) Finish(ctx context.Context, config any, trigger *taskexe.Trigger) error { - taskRun, ok := config.(*task_entity.TaskRun) - if !ok { - return taskexe.ErrInvalidConfig - } - p.OnFinishTaskRunProcessor(ctx, taskRun) - if trigger.IsFinish { - if err := p.OnUpdateChangeProcessor(ctx, trigger.Task, task.TaskStatusSuccess); err != nil { - logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", trigger.Task.GetID(), err) - return err - } - } - return nil -} // shouldTriggerBackfill 判断是否需要发送历史回溯MQ func ShouldTriggerBackfill(taskDO *task.Task) bool { @@ -185,8 +171,7 @@ func ShouldTriggerNewData(taskDO *task.Task) bool { time.Now().After(time.Unix(effectiveTime.GetStartAt(), 0)) } -func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, currentTask *task.Task) error { - logs.CtxInfo(ctx, "[auto_task] DataReflowProcessor OnChangeProcessor, taskID:%d, task:%+v", currentTask.GetID(), currentTask) +func (p *DataReflowProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { // 1、创建/更新数据集 session := getSession(ctx, currentTask) category := getCategory(currentTask.TaskType) @@ -213,40 +198,58 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre if err != nil { return err } - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) + taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") + err = p.taskRepo.UpdateTask(ctx, taskPO) + if err != nil { + logs.CtxError(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + currentTask.TaskConfig.DataReflowConfig[0].DatasetID = ptr.Of(datasetID) } - taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } if ShouldTriggerBackfill(currentTask) && taskRuns == nil { - err = p.OnChangeProcessor(ctx, &taskexe.Config{ - Task: currentTask, - DatasetID: &datasetID, - }, true) + err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: currentTask, + RunType: task.TaskRunTypeBackFill, + RunStartAt: time.Now().UnixMilli(), + RunEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), + }) if err != nil { logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } - err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) if err != nil { logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err } } - if ShouldTriggerNewData(currentTask) { - err = p.OnChangeProcessor(ctx, &taskexe.Config{ - Task: currentTask, - DatasetID: &datasetID, - }, false) - if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err + var runStartAt, runEndAt int64 + runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() + if !currentTask.GetRule().GetSampler().GetIsCycle() { + runEndAt = currentTask.GetRule().GetEffectiveTime().GetEndAt() + } else { + switch *currentTask.GetRule().GetSampler().CycleTimeUnit { + case task.TimeUnitDay: + runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() + case task.TimeUnitWeek: + runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() + default: + runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() + } } - err = p.OnUpdateChangeProcessor(ctx, currentTask, task.TaskStatusRunning) + err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: currentTask, + RunType: task.TaskRunTypeNewData, + RunStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), + RunEndAt: runEndAt, + }) + err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) if err != nil { logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) return err @@ -255,57 +258,7 @@ func (p *DataReflowProcessor) OnCreateChangeProcessor(ctx context.Context, curre return nil } -func (p *DataReflowProcessor) OnChangeProcessor(ctx context.Context, config *taskexe.Config, isBackFill bool) error { - if config.Task == nil { - return taskexe.ErrInvalidConfig - } - currentTask := config.Task - // 2、更新任务配置 - taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) - if err != nil { - return err - } - // 3、创建 taskrun:历史回溯生成一个taskRun,新数据生成一个taskRun - var taskRun *task_entity.TaskRun - var taskRunConfig *task.TaskRunConfig - var runType task.TaskRunType - if isBackFill { - runType = task.TaskRunTypeBackFill - taskRunConfig = &task.TaskRunConfig{ - DataReflowRunConfig: &task.DataReflowRunConfig{ - DatasetID: *config.DatasetID, - EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), - CycleStartAt: time.Now().UnixMilli(), - CycleEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), - Status: task.RunStatusRunning, - }, - } - } else { - runType = task.TaskRunTypeNewData - taskRunConfig = &task.TaskRunConfig{ - DataReflowRunConfig: &task.DataReflowRunConfig{ - DatasetID: *config.DatasetID, - EndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), - CycleStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), - CycleEndAt: currentTask.GetRule().GetEffectiveTime().GetEndAt(), - Status: task.RunStatusRunning, - }, - } - } - taskRun, err = p.OnCreateTaskRunProcessor(ctx, currentTask, taskRunConfig, runType) - if err != nil { - return err - } - taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) - - err = p.taskRepo.UpdateTask(ctx, taskConfig) - if err != nil { - return err - } - return nil -} - -func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { +func (p *DataReflowProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { switch taskOp { case task.TaskStatusSuccess: if currentTask.GetTaskStatus() != task.TaskStatusDisabled { @@ -335,25 +288,45 @@ func (p *DataReflowProcessor) OnUpdateChangeProcessor(ctx context.Context, curre } return nil } -func (p *DataReflowProcessor) OnFinishChangeProcessor(ctx context.Context, currentTask *task.Task) error { - // 更新任务配置 - // 更新TaskRun + +func (p *DataReflowProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { + err := p.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ + Task: param.Task, + TaskRun: param.TaskRun, + }) + if err != nil { + logs.CtxError(ctx, "OnFinishTaskRunChange failed, taskRun:%+v, err:%v", param.TaskRun, err) + return err + } + if param.IsFinish { + if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { + logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) + return err + } + } return nil } -func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig, runType task.TaskRunType) (*task_entity.TaskRun, error) { - // 创建taskRun - cycleStartAt := runConfig.DataReflowRunConfig.CycleStartAt - cycleEndAt := runConfig.DataReflowRunConfig.CycleEndAt - var taskRun *task_entity.TaskRun - taskRunConfig := runConfig - taskRun = &task_entity.TaskRun{ +func (p *DataReflowProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { + var taskRunConfig *task.TaskRunConfig + currentTask := param.CurrentTask + + taskRunConfig = &task.TaskRunConfig{ + DataReflowRunConfig: &task.DataReflowRunConfig{ + DatasetID: *currentTask.GetTaskConfig().GetDataReflowConfig()[0].DatasetID, + EndAt: param.RunEndAt, + CycleStartAt: param.RunStartAt, + CycleEndAt: param.RunEndAt, + Status: task.RunStatusRunning, + }, + } + taskRun := &task_entity.TaskRun{ TaskID: currentTask.GetID(), WorkspaceID: currentTask.GetWorkspaceID(), - TaskType: runType, + TaskType: param.RunType, RunStatus: task.RunStatusRunning, - RunStartAt: time.UnixMilli(cycleStartAt), - RunEndAt: time.UnixMilli(cycleEndAt), + RunStartAt: time.UnixMilli(param.RunStartAt), + RunEndAt: time.UnixMilli(param.RunEndAt), CreatedAt: time.Now(), UpdatedAt: time.Now(), RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), @@ -361,12 +334,22 @@ func (p *DataReflowProcessor) OnCreateTaskRunProcessor(ctx context.Context, curr id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) if err != nil { logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) - return nil, err + return err } taskRun.ID = id - return taskRun, nil + taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) + if err != nil { + return err + } + taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) + err = p.taskRepo.UpdateTask(ctx, taskConfig) + if err != nil { + return err + } + return nil } -func (p *DataReflowProcessor) OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error { +func (p *DataReflowProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { + taskRun := param.TaskRun // 设置taskRun状态为已完成 taskRun.RunStatus = task.RunStatusDone // 更新taskRun diff --git a/backend/modules/observability/domain/task/taskexe/processor/utils.go b/backend/modules/observability/domain/task/taskexe/processor/utils.go new file mode 100644 index 000000000..3c557abd8 --- /dev/null +++ b/backend/modules/observability/domain/task/taskexe/processor/utils.go @@ -0,0 +1,30 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package processor + +import ( + "context" + "strconv" + + "github.com/bytedance/gg/gptr" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) + +func getSession(ctx context.Context, task *task.Task) *common.Session { + userIDStr := session.UserIDInCtxOrEmpty(ctx) + if userIDStr == "" { + userIDStr = task.GetBaseInfo().GetCreatedBy().GetUserID() + } + userID, err := strconv.ParseInt(userIDStr, 10, 64) + if err != nil { + logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor OnChangeProcessor, ParseInt err:%v", err) + } + return &common.Session{ + UserID: gptr.Of(userID), + //AppID: gptr.Of(int32(717152)), + } +} diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 4fedd2a67..37408aa3b 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -11,6 +11,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" @@ -142,17 +143,26 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) if time.Now().After(endTime) { //OnFinishChangeProcessor - err = proc.OnUpdateChangeProcessor(ctx, taskInfo, task.TaskStatusSuccess) + err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: taskInfo, + }) if err != nil { - logs.CtxError(ctx, "OnUpdateChangeProcessor err:%v", err) + logs.CtxError(ctx, "OnFinishTaskChange err:%v", err) continue } } // 如果任务状态为unstarted,到任务开始时间就开始create if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { - err = proc.OnCreateChangeProcessor(ctx, taskInfo) + + err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: taskInfo, + RunType: task.TaskRunTypeBackFill, + RunStartAt: taskInfo.GetRule().GetEffectiveTime().GetStartAt(), + RunEndAt: taskInfo.GetRule().GetEffectiveTime().GetEndAt(), + }) + err = proc.OnUpdateTaskChange(ctx, taskInfo, task.TaskStatusRunning) if err != nil { - logs.CtxError(ctx, "OnChangeProcessor err:%v", err) + logs.CtxError(ctx, "OnUpdateTaskChange err:%v", err) continue } } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go index e2a0a4525..f594340ee 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go @@ -189,10 +189,13 @@ func buildBuiltinFilters(ctx context.Context, f span_filter.Filter, req *ListSpa return filterAggr, nil } -func (s *spanSubscriber) Creative(ctx context.Context) error { - err := s.processor.OnChangeProcessor(ctx, &taskexe.Config{ - Task: s.t, - }, false) +func (s *spanSubscriber) Creative(ctx context.Context, runStartAt, runEndAt int64) error { + err := s.processor.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: s.t, + RunType: s.runType, + RunStartAt: runStartAt, + RunEndAt: runEndAt, + }) if err != nil { return err } diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go index 6de7d64de..792ac3c29 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go @@ -223,71 +223,119 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } // 第一步task状态变更的锁 // taskrun的状态 + var runStartAt, runEndAt int64 if sub.t.GetTaskStatus() == task.TaskStatusUnstarted { logs.CtxWarn(ctx, "task is unstarted, need sub.Creative") - if err := sub.Creative(ctx); err != nil { + runStartAt = sub.t.GetRule().GetEffectiveTime().GetStartAt() + if !sub.t.GetRule().GetSampler().GetIsCycle() { + runEndAt = sub.t.GetRule().GetEffectiveTime().GetEndAt() + } else { + switch *sub.t.GetRule().GetSampler().CycleTimeUnit { + case task.TimeUnitDay: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() + case task.TimeUnitWeek: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() + default: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() + } + } + if err := sub.Creative(ctx, runStartAt, runEndAt); err != nil { merr = multierror.Append(merr, errors.WithMessagef(err, "task is unstarted, need sub.Creative,creative processor, task_id=%d", sub.taskID)) needDispatchSubs = append(needDispatchSubs, sub) continue } - } - //获取对应的taskconfig - taskConfig, _ := h.taskRepo.GetTask(ctx, sub.taskID, nil, nil) - if taskConfig == nil { - logs.CtxWarn(ctx, "task config not found, task_id=%d", sub.taskID) - } - var taskRunConfig *entity.TaskRun - if taskConfig != nil { - var latestStartAt int64 - for _, run := range taskConfig.TaskRuns { - if run.RunStartAt.UnixMilli() > latestStartAt { - latestStartAt = run.RunStartAt.UnixMilli() - taskRunConfig = run - } + if err := sub.processor.OnUpdateTaskChange(ctx, sub.t, task.TaskStatusRunning); err != nil { + logs.CtxWarn(ctx, "OnUpdateTaskChange, task_id=%d, err=%v", sub.taskID, err) + continue } } - if taskRunConfig == nil { + //获取对应的taskconfig + taskRunConfig, err := h.taskRunRepo.GetLatestNewDataTaskRun(ctx, sub.t.WorkspaceID, sub.taskID) + if err != nil { + logs.CtxWarn(ctx, "GetLatestNewDataTaskRun, task_id=%d, err=%v", sub.taskID, err) continue } - sampler := sub.t.GetRule().GetSampler() - //获取对应的taskcount和subtaskcount - taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) - taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, taskRunConfig.ID) - logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) if taskRunConfig == nil { logs.CtxWarn(ctx, "task run config not found, task_id=%d", sub.taskID) - if err := sub.Creative(ctx); err != nil { + runStartAt = sub.t.GetRule().GetEffectiveTime().GetStartAt() + if !sub.t.GetRule().GetSampler().GetIsCycle() { + runEndAt = sub.t.GetRule().GetEffectiveTime().GetEndAt() + } else { + switch *sub.t.GetRule().GetSampler().CycleTimeUnit { + case task.TimeUnitDay: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() + case task.TimeUnitWeek: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() + default: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() + } + } + if err = sub.Creative(ctx, runStartAt, runEndAt); err != nil { merr = multierror.Append(merr, errors.WithMessagef(err, "task run config not found,creative processor, task_id=%d", sub.taskID)) needDispatchSubs = append(needDispatchSubs, sub) continue } } + sampler := sub.t.GetRule().GetSampler() + //获取对应的taskcount和subtaskcount + taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) + taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, taskRunConfig.ID) + logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) endTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) // 达到任务时间期限 if time.Now().After(endTime) { - if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: true, + }); err != nil { logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } + //if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { + // logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) + // merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) + // continue + //} } // 达到任务上限 if taskCount+1 > sampler.GetSampleSize() { - if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { - logs.CtxWarn(ctx, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID) - merr = multierror.Append(merr, errors.WithMessagef(err, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID)) + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: true, + }); err != nil { + logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } + //if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { + // logs.CtxWarn(ctx, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID) + // merr = multierror.Append(merr, errors.WithMessagef(err, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID)) + // continue + //} } if sampler.GetIsCycle() { cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) // 达到单次任务时间期限 if time.Now().After(cycleEndTime) { logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") - if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: false}); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(cycleEndTime) Finish processor, task_id=%d", sub.taskID)) + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: false, + }); err != nil { + logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) + continue } - if err := sub.Creative(ctx); err != nil { + //if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: false}); err != nil { + // merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(cycleEndTime) Finish processor, task_id=%d", sub.taskID)) + //} + runStartAt = taskRunConfig.RunEndAt.UnixMilli() + runEndAt = taskRunConfig.RunEndAt.UnixMilli() + (taskRunConfig.RunEndAt.UnixMilli() - taskRunConfig.RunStartAt.UnixMilli()) + if err := sub.Creative(ctx, runStartAt, runEndAt); err != nil { merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(cycleEndTime) creative processor, task_id=%d", sub.taskID)) needDispatchSubs = append(needDispatchSubs, sub) continue @@ -295,10 +343,19 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } // 达到单次任务上限 if taskRunCount+1 > sampler.GetCycleCount() { - if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: false}); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "subTaskCount > sampler.GetCycleCount()+1 Finish processor, task_id=%d", sub.taskID)) + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: false, + }); err != nil { + logs.CtxWarn(ctx, "taskRunCount+1 > sampler.GetCycleCount(), task_id=%d", sub.taskID) + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } + //if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: false}); err != nil { + // merr = multierror.Append(merr, errors.WithMessagef(err, "subTaskCount > sampler.GetCycleCount()+1 Finish processor, task_id=%d", sub.taskID)) + // continue + //} } } } diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/taskexe/types.go index 2e15c1221..df54bf1af 100644 --- a/backend/modules/observability/domain/task/taskexe/types.go +++ b/backend/modules/observability/domain/task/taskexe/types.go @@ -36,18 +36,42 @@ const ( TaskOpFinish TaskOp = "finish" ) +type OnCreateTaskRunChangeReq struct { + CurrentTask *task.Task + RunType task.TaskRunType + RunStartAt int64 + RunEndAt int64 +} +type OnFinishTaskRunChangeReq struct { + Task *task.Task + TaskRun *task_entity.TaskRun +} +type OnFinishTaskChangeReq struct { + Task *task.Task + TaskRun *task_entity.TaskRun + IsFinish bool +} + type Processor interface { - ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 - Invoke(ctx context.Context, config any, trigger *Trigger) error //根据不同类型进行执行,如rpc回调、mq投递等 - OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 - Finish(ctx context.Context, config any, trigger *Trigger) error //Finish + ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 + Invoke(ctx context.Context, config any, trigger *Trigger) error // 根据不同类型进行执行,如rpc回调、mq投递等 + + //Finish(ctx context.Context, config any, trigger *Trigger) error //Finish + //OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 + + //OnChangeProcessor(ctx context.Context, config *Config, isBackFill bool) error //OnCreateChangeProcessor + //OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error //OnUpdateChangeProcessor + //OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor + + //OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig, runType task.TaskRunType) (*task_entity.TaskRun, error) //OnCreateTaskRunProcessor + //OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error //OnFinishTaskRunProcessor - OnChangeProcessor(ctx context.Context, config *Config, isBackFill bool) error //OnCreateChangeProcessor - OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error //OnUpdateChangeProcessor - OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor + OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error + OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error + OnFinishTaskChange(ctx context.Context, param OnFinishTaskChangeReq) error - OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig, runType task.TaskRunType) (*task_entity.TaskRun, error) //OnCreateTaskRunProcessor - OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error //OnFinishTaskRunProcessor + OnCreateTaskRunChange(ctx context.Context, param OnCreateTaskRunChangeReq) error + OnFinishTaskRunChange(ctx context.Context, param OnFinishTaskRunChangeReq) error } type ProcessorUnion interface { From adfa1db9b7c2c6049542901dd48f3b53613d0924 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 13:58:27 +0800 Subject: [PATCH 313/462] fix --- .../observability/domain/task/taskexe/processor/data_reflow.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index df92179cc..29cf9d41b 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -168,7 +168,7 @@ func ShouldTriggerNewData(taskDO *task.Task) bool { return effectiveTime.GetEndAt() > 0 && effectiveTime.GetStartAt() > 0 && effectiveTime.GetStartAt() < effectiveTime.GetEndAt() && - time.Now().After(time.Unix(effectiveTime.GetStartAt(), 0)) + time.Now().After(time.UnixMilli(effectiveTime.GetStartAt())) } func (p *DataReflowProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { From 434894c87948e684f4cf3f859ea1c515ed5e7e5a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 14:27:37 +0800 Subject: [PATCH 314/462] kite gen --- .../coze/loop/apis/experiment_service.go | 96 ++ .../router/coze/loop/apis/coze.loop.apis.go | 13 + .../api/router/coze/loop/apis/middleware.go | 45 + .../observability/domain/filter/filter.go | 1201 ++++++++++++++++- 4 files changed, 1353 insertions(+), 2 deletions(-) diff --git a/backend/api/handler/coze/loop/apis/experiment_service.go b/backend/api/handler/coze/loop/apis/experiment_service.go index a1c1ce739..d388053d2 100644 --- a/backend/api/handler/coze/loop/apis/experiment_service.go +++ b/backend/api/handler/coze/loop/apis/experiment_service.go @@ -174,3 +174,99 @@ func ListExptResultExportRecord(ctx context.Context, c *app.RequestContext) { func GetExptResultExportRecord(ctx context.Context, c *app.RequestContext) { invokeAndRender(ctx, c, localExptSvc.GetExptResultExportRecord) } + +// InsightAnalysisExperiment . +// @router /api/evaluation/v1/experiments/:expt_id/insight_analysis [POST] +func InsightAnalysisExperiment(ctx context.Context, c *app.RequestContext) { + var err error + var req expt.InsightAnalysisExperimentRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(expt.InsightAnalysisExperimentResponse) + + c.JSON(consts.StatusOK, resp) +} + +// ListExptInsightAnalysisRecord . +// @router /api/evaluation/v1/experiments/:expt_id/insight_analysis_records/list [POST] +func ListExptInsightAnalysisRecord(ctx context.Context, c *app.RequestContext) { + var err error + var req expt.ListExptInsightAnalysisRecordRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(expt.ListExptInsightAnalysisRecordResponse) + + c.JSON(consts.StatusOK, resp) +} + +// DeleteExptInsightAnalysisRecord . +// @router /api/evaluation/v1/experiments/:expt_id/insight_analysis_records/:insight_analysis_record_id [DELETE] +func DeleteExptInsightAnalysisRecord(ctx context.Context, c *app.RequestContext) { + var err error + var req expt.DeleteExptInsightAnalysisRecordRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(expt.DeleteExptInsightAnalysisRecordResponse) + + c.JSON(consts.StatusOK, resp) +} + +// GetExptInsightAnalysisRecord . +// @router /api/evaluation/v1/experiments/:expt_id/insight_analysis_records/:insight_analysis_record_id [POST] +func GetExptInsightAnalysisRecord(ctx context.Context, c *app.RequestContext) { + var err error + var req expt.GetExptInsightAnalysisRecordRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(expt.GetExptInsightAnalysisRecordResponse) + + c.JSON(consts.StatusOK, resp) +} + +// FeedbackExptInsightAnalysisReport . +// @router /api/evaluation/v1/experiments/:expt_id/insight_analysis_records/:insight_analysis_record_id/feedback [POST] +func FeedbackExptInsightAnalysisReport(ctx context.Context, c *app.RequestContext) { + var err error + var req expt.FeedbackExptInsightAnalysisReportRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(expt.FeedbackExptInsightAnalysisReportResponse) + + c.JSON(consts.StatusOK, resp) +} + +// ListExptInsightAnalysisComment . +// @router /api/evaluation/v1/experiments/:expt_id/insight_analysis_records/:insight_analysis_record_id/comments/list [POST] +func ListExptInsightAnalysisComment(ctx context.Context, c *app.RequestContext) { + var err error + var req expt.ListExptInsightAnalysisCommentRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(expt.ListExptInsightAnalysisCommentResponse) + + c.JSON(consts.StatusOK, resp) +} diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index e46acaa5f..24d2baa33 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -194,6 +194,7 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _expt_id.POST("/associate_tag", append(_associateannotationtagMw(handler), apis.AssociateAnnotationTag)...) _expt_id.POST("/clone", append(_cloneexperimentMw(handler), apis.CloneExperiment)...) _expt_id.DELETE("/delete_tag", append(_deleteannotationtagMw(handler), apis.DeleteAnnotationTag)...) + _expt_id.POST("/insight_analysis", append(_insightanalysisexperimentMw(handler), apis.InsightAnalysisExperiment)...) _expt_id.POST("/kill", append(_killexperimentMw(handler), apis.KillExperiment)...) _expt_id.POST("/retry", append(_retryexperimentMw(handler), apis.RetryExperiment)...) { @@ -206,6 +207,18 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _export_records.POST("/:export_id", append(_getexptresultexportrecordMw(handler), apis.GetExptResultExportRecord)...) _export_records.POST("/list", append(_listexptresultexportrecordMw(handler), apis.ListExptResultExportRecord)...) } + { + _insight_analysis_records := _expt_id.Group("/insight_analysis_records", _insight_analysis_recordsMw(handler)...) + _insight_analysis_records.DELETE("/:insight_analysis_record_id", append(_insight_analysis_record_idMw(handler), apis.DeleteExptInsightAnalysisRecord)...) + _insight_analysis_record_id := _insight_analysis_records.Group("/:insight_analysis_record_id", _insight_analysis_record_idMw(handler)...) + _insight_analysis_record_id.POST("/feedback", append(_feedbackexptinsightanalysisreportMw(handler), apis.FeedbackExptInsightAnalysisReport)...) + { + _comments := _insight_analysis_record_id.Group("/comments", _commentsMw(handler)...) + _comments.POST("/list", append(_listexptinsightanalysiscommentMw(handler), apis.ListExptInsightAnalysisComment)...) + } + _insight_analysis_records.POST("/:insight_analysis_record_id", append(_getexptinsightanalysisrecordMw(handler), apis.GetExptInsightAnalysisRecord)...) + _insight_analysis_records.POST("/list", append(_listexptinsightanalysisrecordMw(handler), apis.ListExptInsightAnalysisRecord)...) + } { _results := _expt_id.Group("/results", _resultsMw(handler)...) _results.POST("/export", append(_exportexptresultMw(handler), apis.ExportExptResult)...) diff --git a/backend/api/router/coze/loop/apis/middleware.go b/backend/api/router/coze/loop/apis/middleware.go index 4dc22018a..736a0d668 100644 --- a/backend/api/router/coze/loop/apis/middleware.go +++ b/backend/api/router/coze/loop/apis/middleware.go @@ -1330,3 +1330,48 @@ func _changeevaluatorscoreMw(handler *apis.APIHandler) []app.HandlerFunc { // your code... return nil } + +func _insightanalysisexperimentMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _insight_analysis_recordsMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _insight_analysis_record_idMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _deleteexptinsightanalysisrecordMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _feedbackexptinsightanalysisreportMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _commentsMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _listexptinsightanalysiscommentMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _getexptinsightanalysisrecordMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + +func _listexptinsightanalysisrecordMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} diff --git a/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go b/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go index 4f30ef80c..231a1678c 100644 --- a/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go +++ b/backend/kitex_gen/coze/loop/observability/domain/filter/filter.go @@ -4,9 +4,9 @@ package filter import ( "fmt" - "strings" - "github.com/apache/thrift/lib/go/thrift" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "strings" ) const ( @@ -45,6 +45,16 @@ const ( FieldTypeDouble = "double" FieldTypeBool = "bool" + + TaskFieldNameTaskStatus = "task_status" + + TaskFieldNameTaskName = "task_name" + + TaskFieldNameTaskType = "task_type" + + TaskFieldNameSampleRate = "sample_rate" + + TaskFieldNameCreatedBy = "created_by" ) type QueryType = string @@ -53,6 +63,8 @@ type QueryRelation = string type FieldType = string +type TaskFieldName = string + type FilterFields struct { QueryAndOr *QueryRelation `thrift:"query_and_or,1,optional" frugal:"1,optional,string" form:"query_and_or" json:"query_and_or,omitempty" query:"query_and_or"` FilterFields []*FilterField `thrift:"filter_fields,2,required" frugal:"2,required,list" form:"filter_fields,required" json:"filter_fields,required" query:"filter_fields,required"` @@ -1305,3 +1317,1188 @@ func (p *FieldOptions) Field4DeepEqual(src []string) bool { } return true } + +type TaskFilterFields struct { + QueryAndOr *QueryRelation `thrift:"query_and_or,1,optional" frugal:"1,optional,string" form:"query_and_or" json:"query_and_or,omitempty" query:"query_and_or"` + FilterFields []*TaskFilterField `thrift:"filter_fields,2,required" frugal:"2,required,list" form:"filter_fields,required" json:"filter_fields,required" query:"filter_fields,required"` +} + +func NewTaskFilterFields() *TaskFilterFields { + return &TaskFilterFields{} +} + +func (p *TaskFilterFields) InitDefault() { +} + +var TaskFilterFields_QueryAndOr_DEFAULT QueryRelation + +func (p *TaskFilterFields) GetQueryAndOr() (v QueryRelation) { + if p == nil { + return + } + if !p.IsSetQueryAndOr() { + return TaskFilterFields_QueryAndOr_DEFAULT + } + return *p.QueryAndOr +} + +func (p *TaskFilterFields) GetFilterFields() (v []*TaskFilterField) { + if p != nil { + return p.FilterFields + } + return +} +func (p *TaskFilterFields) SetQueryAndOr(val *QueryRelation) { + p.QueryAndOr = val +} +func (p *TaskFilterFields) SetFilterFields(val []*TaskFilterField) { + p.FilterFields = val +} + +var fieldIDToName_TaskFilterFields = map[int16]string{ + 1: "query_and_or", + 2: "filter_fields", +} + +func (p *TaskFilterFields) IsSetQueryAndOr() bool { + return p.QueryAndOr != nil +} + +func (p *TaskFilterFields) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetFilterFields bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.LIST { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + issetFilterFields = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetFilterFields { + fieldId = 2 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskFilterFields[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_TaskFilterFields[fieldId])) +} + +func (p *TaskFilterFields) ReadField1(iprot thrift.TProtocol) error { + + var _field *QueryRelation + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.QueryAndOr = _field + return nil +} +func (p *TaskFilterFields) ReadField2(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*TaskFilterField, 0, size) + values := make([]TaskFilterField, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.FilterFields = _field + return nil +} + +func (p *TaskFilterFields) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("TaskFilterFields"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskFilterFields) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetQueryAndOr() { + if err = oprot.WriteFieldBegin("query_and_or", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.QueryAndOr); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *TaskFilterFields) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("filter_fields", thrift.LIST, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.FilterFields)); err != nil { + return err + } + for _, v := range p.FilterFields { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *TaskFilterFields) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskFilterFields(%+v)", *p) + +} + +func (p *TaskFilterFields) DeepEqual(ano *TaskFilterFields) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.QueryAndOr) { + return false + } + if !p.Field2DeepEqual(ano.FilterFields) { + return false + } + return true +} + +func (p *TaskFilterFields) Field1DeepEqual(src *QueryRelation) bool { + + if p.QueryAndOr == src { + return true + } else if p.QueryAndOr == nil || src == nil { + return false + } + if strings.Compare(*p.QueryAndOr, *src) != 0 { + return false + } + return true +} +func (p *TaskFilterFields) Field2DeepEqual(src []*TaskFilterField) bool { + + if len(p.FilterFields) != len(src) { + return false + } + for i, v := range p.FilterFields { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} + +type TaskFilterField struct { + FieldName *TaskFieldName `thrift:"field_name,1,optional" frugal:"1,optional,string" form:"field_name" json:"field_name,omitempty" query:"field_name"` + FieldType *FieldType `thrift:"field_type,2,optional" frugal:"2,optional,string" form:"field_type" json:"field_type,omitempty" query:"field_type"` + Values []string `thrift:"values,3,optional" frugal:"3,optional,list" form:"values" json:"values,omitempty" query:"values"` + QueryType *QueryType `thrift:"query_type,4,optional" frugal:"4,optional,string" form:"query_type" json:"query_type,omitempty" query:"query_type"` + QueryAndOr *QueryRelation `thrift:"query_and_or,5,optional" frugal:"5,optional,string" form:"query_and_or" json:"query_and_or,omitempty" query:"query_and_or"` + SubFilter *TaskFilterField `thrift:"sub_filter,6,optional" frugal:"6,optional,TaskFilterField" form:"sub_filter" json:"sub_filter,omitempty" query:"sub_filter"` +} + +func NewTaskFilterField() *TaskFilterField { + return &TaskFilterField{} +} + +func (p *TaskFilterField) InitDefault() { +} + +var TaskFilterField_FieldName_DEFAULT TaskFieldName + +func (p *TaskFilterField) GetFieldName() (v TaskFieldName) { + if p == nil { + return + } + if !p.IsSetFieldName() { + return TaskFilterField_FieldName_DEFAULT + } + return *p.FieldName +} + +var TaskFilterField_FieldType_DEFAULT FieldType + +func (p *TaskFilterField) GetFieldType() (v FieldType) { + if p == nil { + return + } + if !p.IsSetFieldType() { + return TaskFilterField_FieldType_DEFAULT + } + return *p.FieldType +} + +var TaskFilterField_Values_DEFAULT []string + +func (p *TaskFilterField) GetValues() (v []string) { + if p == nil { + return + } + if !p.IsSetValues() { + return TaskFilterField_Values_DEFAULT + } + return p.Values +} + +var TaskFilterField_QueryType_DEFAULT QueryType + +func (p *TaskFilterField) GetQueryType() (v QueryType) { + if p == nil { + return + } + if !p.IsSetQueryType() { + return TaskFilterField_QueryType_DEFAULT + } + return *p.QueryType +} + +var TaskFilterField_QueryAndOr_DEFAULT QueryRelation + +func (p *TaskFilterField) GetQueryAndOr() (v QueryRelation) { + if p == nil { + return + } + if !p.IsSetQueryAndOr() { + return TaskFilterField_QueryAndOr_DEFAULT + } + return *p.QueryAndOr +} + +var TaskFilterField_SubFilter_DEFAULT *TaskFilterField + +func (p *TaskFilterField) GetSubFilter() (v *TaskFilterField) { + if p == nil { + return + } + if !p.IsSetSubFilter() { + return TaskFilterField_SubFilter_DEFAULT + } + return p.SubFilter +} +func (p *TaskFilterField) SetFieldName(val *TaskFieldName) { + p.FieldName = val +} +func (p *TaskFilterField) SetFieldType(val *FieldType) { + p.FieldType = val +} +func (p *TaskFilterField) SetValues(val []string) { + p.Values = val +} +func (p *TaskFilterField) SetQueryType(val *QueryType) { + p.QueryType = val +} +func (p *TaskFilterField) SetQueryAndOr(val *QueryRelation) { + p.QueryAndOr = val +} +func (p *TaskFilterField) SetSubFilter(val *TaskFilterField) { + p.SubFilter = val +} + +var fieldIDToName_TaskFilterField = map[int16]string{ + 1: "field_name", + 2: "field_type", + 3: "values", + 4: "query_type", + 5: "query_and_or", + 6: "sub_filter", +} + +func (p *TaskFilterField) IsSetFieldName() bool { + return p.FieldName != nil +} + +func (p *TaskFilterField) IsSetFieldType() bool { + return p.FieldType != nil +} + +func (p *TaskFilterField) IsSetValues() bool { + return p.Values != nil +} + +func (p *TaskFilterField) IsSetQueryType() bool { + return p.QueryType != nil +} + +func (p *TaskFilterField) IsSetQueryAndOr() bool { + return p.QueryAndOr != nil +} + +func (p *TaskFilterField) IsSetSubFilter() bool { + return p.SubFilter != nil +} + +func (p *TaskFilterField) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.LIST { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRING { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.STRING { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 6: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_TaskFilterField[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *TaskFilterField) ReadField1(iprot thrift.TProtocol) error { + + var _field *TaskFieldName + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.FieldName = _field + return nil +} +func (p *TaskFilterField) ReadField2(iprot thrift.TProtocol) error { + + var _field *FieldType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.FieldType = _field + return nil +} +func (p *TaskFilterField) ReadField3(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]string, 0, size) + for i := 0; i < size; i++ { + + var _elem string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _elem = v + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.Values = _field + return nil +} +func (p *TaskFilterField) ReadField4(iprot thrift.TProtocol) error { + + var _field *QueryType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.QueryType = _field + return nil +} +func (p *TaskFilterField) ReadField5(iprot thrift.TProtocol) error { + + var _field *QueryRelation + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.QueryAndOr = _field + return nil +} +func (p *TaskFilterField) ReadField6(iprot thrift.TProtocol) error { + _field := NewTaskFilterField() + if err := _field.Read(iprot); err != nil { + return err + } + p.SubFilter = _field + return nil +} + +func (p *TaskFilterField) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("TaskFilterField"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *TaskFilterField) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldName() { + if err = oprot.WriteFieldBegin("field_name", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.FieldName); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *TaskFilterField) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetFieldType() { + if err = oprot.WriteFieldBegin("field_type", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.FieldType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *TaskFilterField) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetValues() { + if err = oprot.WriteFieldBegin("values", thrift.LIST, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRING, len(p.Values)); err != nil { + return err + } + for _, v := range p.Values { + if err := oprot.WriteString(v); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *TaskFilterField) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetQueryType() { + if err = oprot.WriteFieldBegin("query_type", thrift.STRING, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.QueryType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *TaskFilterField) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetQueryAndOr() { + if err = oprot.WriteFieldBegin("query_and_or", thrift.STRING, 5); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.QueryAndOr); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} +func (p *TaskFilterField) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetSubFilter() { + if err = oprot.WriteFieldBegin("sub_filter", thrift.STRUCT, 6); err != nil { + goto WriteFieldBeginError + } + if err := p.SubFilter.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} + +func (p *TaskFilterField) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("TaskFilterField(%+v)", *p) + +} + +func (p *TaskFilterField) DeepEqual(ano *TaskFilterField) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.FieldName) { + return false + } + if !p.Field2DeepEqual(ano.FieldType) { + return false + } + if !p.Field3DeepEqual(ano.Values) { + return false + } + if !p.Field4DeepEqual(ano.QueryType) { + return false + } + if !p.Field5DeepEqual(ano.QueryAndOr) { + return false + } + if !p.Field6DeepEqual(ano.SubFilter) { + return false + } + return true +} + +func (p *TaskFilterField) Field1DeepEqual(src *TaskFieldName) bool { + + if p.FieldName == src { + return true + } else if p.FieldName == nil || src == nil { + return false + } + if strings.Compare(*p.FieldName, *src) != 0 { + return false + } + return true +} +func (p *TaskFilterField) Field2DeepEqual(src *FieldType) bool { + + if p.FieldType == src { + return true + } else if p.FieldType == nil || src == nil { + return false + } + if strings.Compare(*p.FieldType, *src) != 0 { + return false + } + return true +} +func (p *TaskFilterField) Field3DeepEqual(src []string) bool { + + if len(p.Values) != len(src) { + return false + } + for i, v := range p.Values { + _src := src[i] + if strings.Compare(v, _src) != 0 { + return false + } + } + return true +} +func (p *TaskFilterField) Field4DeepEqual(src *QueryType) bool { + + if p.QueryType == src { + return true + } else if p.QueryType == nil || src == nil { + return false + } + if strings.Compare(*p.QueryType, *src) != 0 { + return false + } + return true +} +func (p *TaskFilterField) Field5DeepEqual(src *QueryRelation) bool { + + if p.QueryAndOr == src { + return true + } else if p.QueryAndOr == nil || src == nil { + return false + } + if strings.Compare(*p.QueryAndOr, *src) != 0 { + return false + } + return true +} +func (p *TaskFilterField) Field6DeepEqual(src *TaskFilterField) bool { + + if !p.SubFilter.DeepEqual(src) { + return false + } + return true +} + +type SpanFilterFields struct { + // Span 过滤条件 + Filters *FilterFields `thrift:"filters,1,optional" frugal:"1,optional,FilterFields" form:"filters" json:"filters,omitempty" query:"filters"` + // 平台类型,不填默认是fornax + PlatformType *common.PlatformType `thrift:"platform_type,2,optional" frugal:"2,optional,string" form:"platform_type" json:"platform_type,omitempty" query:"platform_type"` + // 查询的 span 标签页类型,不填默认是 root span + SpanListType *common.SpanListType `thrift:"span_list_type,3,optional" frugal:"3,optional,string" form:"span_list_type" json:"span_list_type,omitempty" query:"span_list_type"` +} + +func NewSpanFilterFields() *SpanFilterFields { + return &SpanFilterFields{} +} + +func (p *SpanFilterFields) InitDefault() { +} + +var SpanFilterFields_Filters_DEFAULT *FilterFields + +func (p *SpanFilterFields) GetFilters() (v *FilterFields) { + if p == nil { + return + } + if !p.IsSetFilters() { + return SpanFilterFields_Filters_DEFAULT + } + return p.Filters +} + +var SpanFilterFields_PlatformType_DEFAULT common.PlatformType + +func (p *SpanFilterFields) GetPlatformType() (v common.PlatformType) { + if p == nil { + return + } + if !p.IsSetPlatformType() { + return SpanFilterFields_PlatformType_DEFAULT + } + return *p.PlatformType +} + +var SpanFilterFields_SpanListType_DEFAULT common.SpanListType + +func (p *SpanFilterFields) GetSpanListType() (v common.SpanListType) { + if p == nil { + return + } + if !p.IsSetSpanListType() { + return SpanFilterFields_SpanListType_DEFAULT + } + return *p.SpanListType +} +func (p *SpanFilterFields) SetFilters(val *FilterFields) { + p.Filters = val +} +func (p *SpanFilterFields) SetPlatformType(val *common.PlatformType) { + p.PlatformType = val +} +func (p *SpanFilterFields) SetSpanListType(val *common.SpanListType) { + p.SpanListType = val +} + +var fieldIDToName_SpanFilterFields = map[int16]string{ + 1: "filters", + 2: "platform_type", + 3: "span_list_type", +} + +func (p *SpanFilterFields) IsSetFilters() bool { + return p.Filters != nil +} + +func (p *SpanFilterFields) IsSetPlatformType() bool { + return p.PlatformType != nil +} + +func (p *SpanFilterFields) IsSetSpanListType() bool { + return p.SpanListType != nil +} + +func (p *SpanFilterFields) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SpanFilterFields[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *SpanFilterFields) ReadField1(iprot thrift.TProtocol) error { + _field := NewFilterFields() + if err := _field.Read(iprot); err != nil { + return err + } + p.Filters = _field + return nil +} +func (p *SpanFilterFields) ReadField2(iprot thrift.TProtocol) error { + + var _field *common.PlatformType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.PlatformType = _field + return nil +} +func (p *SpanFilterFields) ReadField3(iprot thrift.TProtocol) error { + + var _field *common.SpanListType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.SpanListType = _field + return nil +} + +func (p *SpanFilterFields) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("SpanFilterFields"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *SpanFilterFields) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetFilters() { + if err = oprot.WriteFieldBegin("filters", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Filters.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *SpanFilterFields) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetPlatformType() { + if err = oprot.WriteFieldBegin("platform_type", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.PlatformType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *SpanFilterFields) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetSpanListType() { + if err = oprot.WriteFieldBegin("span_list_type", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.SpanListType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} + +func (p *SpanFilterFields) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("SpanFilterFields(%+v)", *p) + +} + +func (p *SpanFilterFields) DeepEqual(ano *SpanFilterFields) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Filters) { + return false + } + if !p.Field2DeepEqual(ano.PlatformType) { + return false + } + if !p.Field3DeepEqual(ano.SpanListType) { + return false + } + return true +} + +func (p *SpanFilterFields) Field1DeepEqual(src *FilterFields) bool { + + if !p.Filters.DeepEqual(src) { + return false + } + return true +} +func (p *SpanFilterFields) Field2DeepEqual(src *common.PlatformType) bool { + + if p.PlatformType == src { + return true + } else if p.PlatformType == nil || src == nil { + return false + } + if strings.Compare(*p.PlatformType, *src) != 0 { + return false + } + return true +} +func (p *SpanFilterFields) Field3DeepEqual(src *common.SpanListType) bool { + + if p.SpanListType == src { + return true + } else if p.SpanListType == nil || src == nil { + return false + } + if strings.Compare(*p.SpanListType, *src) != 0 { + return false + } + return true +} From 642dfe07c2f75bb2ff2b6ec2e0a92fb3d5445f45 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 14:32:56 +0800 Subject: [PATCH 315/462] fix count --- .../domain/task/taskexe/processor/auto_evaluate.go | 4 ++-- .../domain/task/taskexe/processor/data_reflow.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go index f9aec67df..9ad857f2a 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go @@ -119,8 +119,8 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount > trigger.Task.GetRule().GetSampler().GetCycleCount()) || - (taskCount > trigger.Task.GetRule().GetSampler().GetSampleSize()) { + if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || + (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go index 29cf9d41b..d474e15ee 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go @@ -67,8 +67,8 @@ func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *t p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) p.taskRepo.IncrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) - if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount > trigger.Task.GetRule().GetSampler().GetCycleCount()) || - (taskCount > trigger.Task.GetRule().GetSampler().GetSampleSize()) { + if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || + (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) From cc9caf499f4a17db94ac6d130980b39b08414328 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 14:35:01 +0800 Subject: [PATCH 316/462] fix time --- .../domain/task/taskexe/tracehub/scheduled_task.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go index 37408aa3b..a9c0d2ce2 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go @@ -127,12 +127,8 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "taskRunstat:%v", taskRunstat) // 遍历任务 for _, taskInfo := range tasks { - if taskInfo.GetRule().GetEffectiveTime().GetEndAt() == 0 { - // 历史回溯任务待处理 - continue - } - endTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetEndAt()*int64(time.Millisecond)) - startTime := time.Unix(0, taskInfo.GetRule().GetEffectiveTime().GetStartAt()*int64(time.Millisecond)) + endTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetEndAt()) + startTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetStartAt()) proc, err := processor.NewProcessor(ctx, taskInfo.TaskType) if err != nil { logs.CtxError(ctx, "NewProcessor err:%v", err) @@ -142,7 +138,10 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) if time.Now().After(endTime) { - //OnFinishChangeProcessor + if taskInfo.GetRule().GetBackfillEffectiveTime().GetEndAt() == 0 { + // 历史回溯任务待处理 + continue + } err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, }) @@ -153,7 +152,6 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } // 如果任务状态为unstarted,到任务开始时间就开始create if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { - err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ CurrentTask: taskInfo, RunType: task.TaskRunTypeBackFill, From eea737a4e33e1f33db052f73d84e3fa0b6de275b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 14:36:03 +0800 Subject: [PATCH 317/462] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/modules/observability/application/task.go | 2 +- backend/modules/observability/application/wire.go | 2 +- backend/modules/observability/application/wire_gen.go | 2 +- .../modules/observability/domain/task/service/task_service.go | 2 +- .../task/{ => service}/taskexe/processor/auto_evaluate.go | 2 +- .../task/{ => service}/taskexe/processor/data_reflow.go | 2 +- .../domain/task/{ => service}/taskexe/processor/factory.go | 2 +- .../domain/task/{ => service}/taskexe/processor/singleton.go | 0 .../domain/task/{ => service}/taskexe/processor/utils.go | 0 .../domain/task/{ => service}/taskexe/tracehub/backfill.go | 2 +- .../domain/task/{ => service}/taskexe/tracehub/callback.go | 0 .../domain/task/{ => service}/taskexe/tracehub/common.go | 0 .../task/{ => service}/taskexe/tracehub/scheduled_task.go | 4 ++-- .../domain/task/{ => service}/taskexe/tracehub/subscriber.go | 2 +- .../domain/task/{ => service}/taskexe/tracehub/trace_hub.go | 4 ++-- .../domain/task/{ => service}/taskexe/tracehub/utils.go | 0 .../observability/domain/task/{ => service}/taskexe/types.go | 0 17 files changed, 13 insertions(+), 13 deletions(-) rename backend/modules/observability/domain/task/{ => service}/taskexe/processor/auto_evaluate.go (99%) rename backend/modules/observability/domain/task/{ => service}/taskexe/processor/data_reflow.go (99%) rename backend/modules/observability/domain/task/{ => service}/taskexe/processor/factory.go (98%) rename backend/modules/observability/domain/task/{ => service}/taskexe/processor/singleton.go (100%) rename backend/modules/observability/domain/task/{ => service}/taskexe/processor/utils.go (100%) rename backend/modules/observability/domain/task/{ => service}/taskexe/tracehub/backfill.go (99%) rename backend/modules/observability/domain/task/{ => service}/taskexe/tracehub/callback.go (100%) rename backend/modules/observability/domain/task/{ => service}/taskexe/tracehub/common.go (100%) rename backend/modules/observability/domain/task/{ => service}/taskexe/tracehub/scheduled_task.go (99%) rename backend/modules/observability/domain/task/{ => service}/taskexe/tracehub/subscriber.go (99%) rename backend/modules/observability/domain/task/{ => service}/taskexe/tracehub/trace_hub.go (99%) rename backend/modules/observability/domain/task/{ => service}/taskexe/tracehub/utils.go (100%) rename backend/modules/observability/domain/task/{ => service}/taskexe/types.go (100%) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 4229e0567..409254d7c 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -11,7 +11,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/tracehub" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" ) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 29c721b43..2f3181c33 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -26,7 +26,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" taskSvc "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/tracehub" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/exporter" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/processor" diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index e107d1059..bd022458a 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -26,7 +26,7 @@ import ( config2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" service2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/tracehub" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/exporter" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/processor" diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index e2b845dbe..d52904185 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -19,7 +19,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" diff --git a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go similarity index 99% rename from backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go rename to backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 9ad857f2a..2db319e51 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -24,7 +24,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" diff --git a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go similarity index 99% rename from backend/modules/observability/domain/task/taskexe/processor/data_reflow.go rename to backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go index d474e15ee..02696608a 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go @@ -14,7 +14,7 @@ import ( tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" diff --git a/backend/modules/observability/domain/task/taskexe/processor/factory.go b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go similarity index 98% rename from backend/modules/observability/domain/task/taskexe/processor/factory.go rename to backend/modules/observability/domain/task/service/taskexe/processor/factory.go index acf05922f..09f51de70 100644 --- a/backend/modules/observability/domain/task/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go @@ -10,7 +10,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" diff --git a/backend/modules/observability/domain/task/taskexe/processor/singleton.go b/backend/modules/observability/domain/task/service/taskexe/processor/singleton.go similarity index 100% rename from backend/modules/observability/domain/task/taskexe/processor/singleton.go rename to backend/modules/observability/domain/task/service/taskexe/processor/singleton.go diff --git a/backend/modules/observability/domain/task/taskexe/processor/utils.go b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go similarity index 100% rename from backend/modules/observability/domain/task/taskexe/processor/utils.go rename to backend/modules/observability/domain/task/service/taskexe/processor/utils.go diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go similarity index 99% rename from backend/modules/observability/domain/task/taskexe/tracehub/backfill.go rename to backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index a687caec0..7f2ea6c5f 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -14,7 +14,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service/trace/span_filter" diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go similarity index 100% rename from backend/modules/observability/domain/task/taskexe/tracehub/callback.go rename to backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/common.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/common.go similarity index 100% rename from backend/modules/observability/domain/task/taskexe/tracehub/common.go rename to backend/modules/observability/domain/task/service/taskexe/tracehub/common.go diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go similarity index 99% rename from backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go rename to backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index a9c0d2ce2..045fa484b 100755 --- a/backend/modules/observability/domain/task/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -11,8 +11,8 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go similarity index 99% rename from backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go rename to backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go index f594340ee..ccd982d88 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go @@ -13,7 +13,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service/trace/span_filter" diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go similarity index 99% rename from backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go rename to backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 792ac3c29..343af7276 100644 --- a/backend/modules/observability/domain/task/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -18,8 +18,8 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/taskexe/processor" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" trace_repo "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" diff --git a/backend/modules/observability/domain/task/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go similarity index 100% rename from backend/modules/observability/domain/task/taskexe/tracehub/utils.go rename to backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go diff --git a/backend/modules/observability/domain/task/taskexe/types.go b/backend/modules/observability/domain/task/service/taskexe/types.go similarity index 100% rename from backend/modules/observability/domain/task/taskexe/types.go rename to backend/modules/observability/domain/task/service/taskexe/types.go From 32ac19934cab9f5653c07444d7340178b54a0db0 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 14:50:31 +0800 Subject: [PATCH 318/462] fix --- .../task/service/taskexe/tracehub/backfill.go | 34 ++++++++++++++++++- .../taskexe/tracehub/scheduled_task.go | 18 +++++----- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 7f2ea6c5f..6415d82c9 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -14,6 +14,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" @@ -548,7 +549,38 @@ func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *l // 根据任务类型执行相应的处理逻辑 logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", span.SpanID, span.TraceID, h.task.GetID()) - + taskRunConfig, err := h.taskRunRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.taskID) + if err != nil { + logs.CtxWarn(ctx, "GetLatestNewDataTaskRun, task_id=%d, err=%v", sub.taskID, err) + return err + } + taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) + taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, taskRunConfig.ID) + sampler := sub.t.GetRule().GetSampler() + if taskCount+1 > sampler.GetSampleSize() { + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: true, + }); err != nil { + logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) + return err + } + } + if sampler.GetIsCycle() { + // 达到单次任务上限 + if taskRunCount+1 > sampler.GetCycleCount() { + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: false, + }); err != nil { + logs.CtxWarn(ctx, "taskRunCount+1 > sampler.GetCycleCount(), task_id=%d", sub.taskID) + return err + } + } + } + logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) if err := h.dispatch(ctx, span, []*spanSubscriber{sub}); err != nil { return err } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 045fa484b..fbc5f28db 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -11,6 +11,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" @@ -103,9 +104,9 @@ func (h *TraceHubServiceImpl) runScheduledTask() { var tasks []*task.Task taskRunstat := make(map[int64]bool) logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) + var taskRun *entity.TaskRun for _, taskPO := range taskPOs { tasks = append(tasks, tconv.TaskPO2DTO(ctx, taskPO, nil)) - // 计算 taskRunstat:只有当所有 run 都为 done 状态时才为 true allRunsDone := true if len(taskPO.TaskRuns) == 0 { @@ -113,8 +114,9 @@ func (h *TraceHubServiceImpl) runScheduledTask() { allRunsDone = false } else { // 检查所有 TaskRuns 是否都为 done 状态 - for _, taskRun := range taskPO.TaskRuns { - if taskRun.RunStatus != task.RunStatusDone { + for _, taskRunPO := range taskPO.TaskRuns { + if taskRunPO.RunStatus != task.RunStatusDone { + taskRun = taskRunPO allRunsDone = false break } @@ -137,13 +139,11 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 达到任务时间期限 // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) - if time.Now().After(endTime) { - if taskInfo.GetRule().GetBackfillEffectiveTime().GetEndAt() == 0 { - // 历史回溯任务待处理 - continue - } + if (taskInfo.GetRule().GetEffectiveTime().GetEndAt() != 0 && time.Now().After(endTime)) && taskRunstat[taskInfo.GetID()] { + err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: taskInfo, + Task: taskInfo, + TaskRun: taskRun, }) if err != nil { logs.CtxError(ctx, "OnFinishTaskChange err:%v", err) From 957525997de9c320233a37bedd6416819a80550b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 15:13:06 +0800 Subject: [PATCH 319/462] fix --- .../domain/task/service/taskexe/tracehub/scheduled_task.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index fbc5f28db..3427f8ff3 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -139,7 +139,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 达到任务时间期限 // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) - if (taskInfo.GetRule().GetEffectiveTime().GetEndAt() != 0 && time.Now().After(endTime)) && taskRunstat[taskInfo.GetID()] { + if (time.Now().After(endTime) || taskInfo.GetRule().GetEffectiveTime().GetEndAt() == 0) && taskRunstat[taskInfo.GetID()] { err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, From 512b039885457e4ed94fb3847109707495d930b1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 16:32:34 +0800 Subject: [PATCH 320/462] fix --- .../domain/task/service/taskexe/tracehub/subscriber.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go index ccd982d88..f1f900002 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go @@ -10,7 +10,6 @@ import ( "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" - "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" @@ -143,9 +142,9 @@ func (s *spanSubscriber) buildSpanFilters(ctx context.Context, taskConfig *task. if err != nil { return nil } - filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(taskConfig.GetRule().GetSpanFilters().GetFilters())) + //filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(taskConfig.GetRule().GetSpanFilters().GetFilters())) - return filters + return builtinFilter } func buildBuiltinFilters(ctx context.Context, f span_filter.Filter, req *ListSpansReq) (*loop_span.FilterFields, error) { filters := make([]*loop_span.FilterField, 0) From ed2354fe1229c99a6609f520de48bbad332a07cf Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 17:07:07 +0800 Subject: [PATCH 321/462] fix --- .../task/service/taskexe/tracehub/subscriber.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go index f1f900002..b917f119f 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go @@ -10,6 +10,7 @@ import ( "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" @@ -120,10 +121,10 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), //} - filters := s.buildSpanFilters(ctx, task) - if !filters.Satisfied(span) { - return false, nil - } + //filters := s.buildSpanFilters(ctx, task) + //if !filters.Satisfied(span) { + // return false, nil + //} return true, nil } @@ -142,9 +143,9 @@ func (s *spanSubscriber) buildSpanFilters(ctx context.Context, taskConfig *task. if err != nil { return nil } - //filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(taskConfig.GetRule().GetSpanFilters().GetFilters())) + filters := combineFilters(builtinFilter, convertor.FilterFieldsDTO2DO(taskConfig.GetRule().GetSpanFilters().GetFilters())) - return builtinFilter + return filters } func buildBuiltinFilters(ctx context.Context, f span_filter.Filter, req *ListSpansReq) (*loop_span.FilterFields, error) { filters := make([]*loop_span.FilterField, 0) From eb1957af768a195f255ff67b3679c3b57cce6625 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 17:55:06 +0800 Subject: [PATCH 322/462] span match --- .../domain/task/service/taskexe/tracehub/subscriber.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go index b917f119f..ccd982d88 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go @@ -121,10 +121,10 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), //} - //filters := s.buildSpanFilters(ctx, task) - //if !filters.Satisfied(span) { - // return false, nil - //} + filters := s.buildSpanFilters(ctx, task) + if !filters.Satisfied(span) { + return false, nil + } return true, nil } From ce7e4ca7412f11261e23d98246ec8c7fac17ae86 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 20:09:29 +0800 Subject: [PATCH 323/462] fix synctask --- .../taskexe/tracehub/scheduled_task.go | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 3427f8ff3..e71ef5d26 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -102,11 +102,9 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } var tasks []*task.Task - taskRunstat := make(map[int64]bool) logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) - var taskRun *entity.TaskRun for _, taskPO := range taskPOs { - tasks = append(tasks, tconv.TaskPO2DTO(ctx, taskPO, nil)) + var taskRun *entity.TaskRun // 计算 taskRunstat:只有当所有 run 都为 done 状态时才为 true allRunsDone := true if len(taskPO.TaskRuns) == 0 { @@ -123,12 +121,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } - taskRunstat[taskPO.ID] = allRunsDone - } - logs.CtxInfo(ctx, "taskPOs:%v", taskPOs) - logs.CtxInfo(ctx, "taskRunstat:%v", taskRunstat) - // 遍历任务 - for _, taskInfo := range tasks { + taskInfo := tconv.TaskPO2DTO(ctx, taskPO, nil) endTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetEndAt()) startTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetStartAt()) proc, err := processor.NewProcessor(ctx, taskInfo.TaskType) @@ -139,7 +132,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 达到任务时间期限 // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) - if (time.Now().After(endTime) || taskInfo.GetRule().GetEffectiveTime().GetEndAt() == 0) && taskRunstat[taskInfo.GetID()] { + if (time.Now().After(endTime) || taskInfo.GetRule().GetEffectiveTime().GetEndAt() == 0) && allRunsDone { err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, @@ -164,7 +157,32 @@ func (h *TraceHubServiceImpl) runScheduledTask() { continue } } + if taskInfo.GetTaskStatus() == task.TaskStatusRunning && taskInfo.GetRule().GetSampler().GetIsCycle() { + // 达到单次任务时间期限 + if time.Now().After(taskRun.RunEndAt) { + logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") + err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: taskInfo, + TaskRun: taskRun, + }) + if err != nil { + logs.CtxError(ctx, "OnFinishTaskChange err:%v", err) + continue + } + err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: taskInfo, + RunType: task.TaskRunTypeBackFill, + RunStartAt: taskRun.RunEndAt.UnixMilli(), + RunEndAt: taskRun.RunEndAt.UnixMilli() + (taskRun.RunEndAt.UnixMilli() - taskRun.RunStartAt.UnixMilli()), + }) + if err != nil { + logs.CtxError(ctx, "OnCreateTaskRunChange err:%v", err) + continue + } + } + } } + } // syncTaskRunCounts 同步TaskRunCount到数据库 From 718e4a5160d3e86369bcd1bdb58fbdbcd387dcf1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 20:36:02 +0800 Subject: [PATCH 324/462] fix --- .../domain/task/service/taskexe/tracehub/scheduled_task.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index e71ef5d26..972fc99df 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -171,7 +171,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ CurrentTask: taskInfo, - RunType: task.TaskRunTypeBackFill, + RunType: task.TaskRunTypeNewData, RunStartAt: taskRun.RunEndAt.UnixMilli(), RunEndAt: taskRun.RunEndAt.UnixMilli() + (taskRun.RunEndAt.UnixMilli() - taskRun.RunStartAt.UnixMilli()), }) From 6cb0a3462f227989a4bc2b68d14f60c8a1444991 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 20:38:27 +0800 Subject: [PATCH 325/462] fix --- .../taskexe/tracehub/scheduled_task.go | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 972fc99df..da628e874 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -145,16 +145,29 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } // 如果任务状态为unstarted,到任务开始时间就开始create if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { - err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ - CurrentTask: taskInfo, - RunType: task.TaskRunTypeBackFill, - RunStartAt: taskInfo.GetRule().GetEffectiveTime().GetStartAt(), - RunEndAt: taskInfo.GetRule().GetEffectiveTime().GetEndAt(), - }) - err = proc.OnUpdateTaskChange(ctx, taskInfo, task.TaskStatusRunning) - if err != nil { - logs.CtxError(ctx, "OnUpdateTaskChange err:%v", err) - continue + if !taskInfo.GetRule().GetSampler().GetIsCycle() { + err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: taskInfo, + RunType: task.TaskRunTypeNewData, + RunStartAt: taskInfo.GetRule().GetEffectiveTime().GetStartAt(), + RunEndAt: taskInfo.GetRule().GetEffectiveTime().GetEndAt(), + }) + err = proc.OnUpdateTaskChange(ctx, taskInfo, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnUpdateTaskChange err:%v", err) + continue + } + } else { + err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: taskInfo, + RunType: task.TaskRunTypeNewData, + RunStartAt: taskRun.RunEndAt.UnixMilli(), + RunEndAt: taskRun.RunEndAt.UnixMilli() + (taskRun.RunEndAt.UnixMilli() - taskRun.RunStartAt.UnixMilli()), + }) + if err != nil { + logs.CtxError(ctx, "OnCreateTaskRunChange err:%v", err) + continue + } } } if taskInfo.GetTaskStatus() == task.TaskStatusRunning && taskInfo.GetRule().GetSampler().GetIsCycle() { From 3b07cb3b4f8e38201c249037147605de6e50b54e Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 21:16:13 +0800 Subject: [PATCH 326/462] fix --- .../domain/task/service/taskexe/processor/auto_evaluate.go | 2 +- .../domain/task/service/taskexe/processor/data_reflow.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 2db319e51..3bdc65349 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -462,7 +462,7 @@ func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTa return err } } - if ShouldTriggerNewData(currentTask) { + if ShouldTriggerNewData(ctx, currentTask) { var runStartAt, runEndAt int64 runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() if !currentTask.GetRule().GetSampler().GetIsCycle() { diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go index 02696608a..59c2494e5 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go @@ -149,7 +149,7 @@ func ShouldTriggerBackfill(taskDO *task.Task) bool { backfillTime.GetStartAt() < backfillTime.GetEndAt() } -func ShouldTriggerNewData(taskDO *task.Task) bool { +func ShouldTriggerNewData(ctx context.Context, taskDO *task.Task) bool { // 检查任务类型 taskType := taskDO.GetTaskType() if taskType != task.TaskTypeAutoEval && taskType != task.TaskTypeAutoDataReflow { @@ -164,6 +164,7 @@ func ShouldTriggerNewData(taskDO *task.Task) bool { if effectiveTime == nil { return false } + logs.CtxInfo(ctx, "[auto_task] ShouldTriggerNewData, endAt:%d, startAt:%d", effectiveTime.GetEndAt(), effectiveTime.GetStartAt()) return effectiveTime.GetEndAt() > 0 && effectiveTime.GetStartAt() > 0 && @@ -228,7 +229,7 @@ func (p *DataReflowProcessor) OnCreateTaskChange(ctx context.Context, currentTas return err } } - if ShouldTriggerNewData(currentTask) { + if ShouldTriggerNewData(ctx, currentTask) { var runStartAt, runEndAt int64 runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() if !currentTask.GetRule().GetSampler().GetIsCycle() { From cef2f1dafe51ba8a3a9891dbe55b5637bb9a5166 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 23 Sep 2025 21:22:01 +0800 Subject: [PATCH 327/462] fix --- .../task/service/taskexe/tracehub/scheduled_task.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index da628e874..b5c352e7d 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -135,8 +135,9 @@ func (h *TraceHubServiceImpl) runScheduledTask() { if (time.Now().After(endTime) || taskInfo.GetRule().GetEffectiveTime().GetEndAt() == 0) && allRunsDone { err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: taskInfo, - TaskRun: taskRun, + Task: taskInfo, + TaskRun: taskRun, + IsFinish: true, }) if err != nil { logs.CtxError(ctx, "OnFinishTaskChange err:%v", err) @@ -175,8 +176,9 @@ func (h *TraceHubServiceImpl) runScheduledTask() { if time.Now().After(taskRun.RunEndAt) { logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: taskInfo, - TaskRun: taskRun, + Task: taskInfo, + TaskRun: taskRun, + IsFinish: false, }) if err != nil { logs.CtxError(ctx, "OnFinishTaskChange err:%v", err) From 572ff81509cf1fef69fb334317299ea0df63bbd8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 10:59:44 +0800 Subject: [PATCH 328/462] add --- .../domain/task/service/taskexe/tracehub/backfill.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 6415d82c9..5553d971a 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -29,6 +29,7 @@ import ( func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 设置当前任务上下文 // 不 + ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") sub, err := h.setBackfillTask(ctx, event) if err != nil { return err From ffba07b0f129b561ff0ecb040d88fbbcebd776f4 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 11:29:34 +0800 Subject: [PATCH 329/462] delete useless code --- .../service/taskexe/processor/data_reflow.go | 77 +++++++++++++++---- .../service/taskexe/processor/singleton.go | 4 - .../service/taskexe/tracehub/trace_hub.go | 17 ---- 3 files changed, 62 insertions(+), 36 deletions(-) delete mode 100644 backend/modules/observability/domain/task/service/taskexe/processor/singleton.go diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go index 59c2494e5..d41cbae91 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go @@ -9,6 +9,7 @@ import ( "time" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" @@ -18,6 +19,8 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -171,41 +174,85 @@ func ShouldTriggerNewData(ctx context.Context, taskDO *task.Task) bool { effectiveTime.GetStartAt() < effectiveTime.GetEndAt() && time.Now().After(time.UnixMilli(effectiveTime.GetStartAt())) } - -func (p *DataReflowProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { - // 1、创建/更新数据集 - session := getSession(ctx, currentTask) - category := getCategory(currentTask.TaskType) - dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() +func (p *DataReflowProcessor) createOrUpdateDataset(ctx context.Context, workspaceID int64, category entity.DatasetCategory, dataReflowConfig *task.DataReflowConfig, session *common.Session) (*entity.Dataset, error) { var err error - // 1、创建数据集 - logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) var datasetID int64 - for _, dataReflowConfig := range dataReflowConfigs { - if dataReflowConfig.DatasetID != nil { - datasetID = *dataReflowConfig.DatasetID - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", dataReflowConfig.DatasetID) - continue + + if dataReflowConfig.GetDatasetID() == 0 { + if dataReflowConfig.DatasetName == nil || *dataReflowConfig.DatasetName == "" { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("task name exist")) + } + if len(dataReflowConfig.DatasetSchema.FieldSchemas) == 0 { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("dataset schema is empty")) } + schema := convertDatasetSchemaDTO2DO(dataReflowConfig.GetDatasetSchema()) datasetID, err = p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( 0, - currentTask.GetWorkspaceID(), + workspaceID, dataReflowConfig.GetDatasetName(), category, schema, session, )) + if err != nil { + return nil, err + } + } else { + if dataReflowConfig.DatasetID == nil { + return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("dataset id is nil")) + } + datasetID = *dataReflowConfig.DatasetID + needUpdate := false + for _, schema := range dataReflowConfig.DatasetSchema.FieldSchemas { + if schema.Key == nil || *schema.Key == "" { + needUpdate = true + break + } + } + if needUpdate { + if err := p.datasetServiceAdaptor.GetDatasetProvider(category).UpdateDatasetSchema(ctx, entity.NewDataset( + datasetID, + workspaceID, + "", + category, + convertDatasetSchemaDTO2DO(dataReflowConfig.DatasetSchema), + nil, + )); err != nil { + return nil, err + } + } + } + + // 新增或修改评测集后,都需要重新查询一次,拿到fieldSchema里的key + return p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, workspaceID, datasetID, category) +} + +func (p *DataReflowProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { + // 1、创建/更新数据集 + session := getSession(ctx, currentTask) + category := getCategory(currentTask.TaskType) + dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() + var err error + // 1、创建数据集 + logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + for _, dataReflowConfig := range dataReflowConfigs { + dataset, err := p.createOrUpdateDataset(ctx, currentTask.GetWorkspaceID(), category, dataReflowConfig, session) if err != nil { return err } + currentTask.TaskConfig.DataReflowConfig[0] = &task.DataReflowConfig{ + DatasetID: ptr.Of(dataset.ID), + DatasetName: dataReflowConfig.DatasetName, + DatasetSchema: dataReflowConfig.DatasetSchema, + FieldMappings: dataReflowConfig.FieldMappings, + } taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") err = p.taskRepo.UpdateTask(ctx, taskPO) if err != nil { logs.CtxError(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) return err } - currentTask.TaskConfig.DataReflowConfig[0].DatasetID = ptr.Of(datasetID) } taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/singleton.go b/backend/modules/observability/domain/task/service/taskexe/processor/singleton.go deleted file mode 100644 index 7a3848cdf..000000000 --- a/backend/modules/observability/domain/task/service/taskexe/processor/singleton.go +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 - -package processor diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 343af7276..35f5909c7 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -293,11 +293,6 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } - //if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { - // logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) - // merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) - // continue - //} } // 达到任务上限 if taskCount+1 > sampler.GetSampleSize() { @@ -310,11 +305,6 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } - //if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: true}); err != nil { - // logs.CtxWarn(ctx, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID) - // merr = multierror.Append(merr, errors.WithMessagef(err, "taskCount > sampler.GetSampleSize()+1 Finish processor, task_id=%d", sub.taskID)) - // continue - //} } if sampler.GetIsCycle() { cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) @@ -330,9 +320,6 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } - //if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: false}); err != nil { - // merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(cycleEndTime) Finish processor, task_id=%d", sub.taskID)) - //} runStartAt = taskRunConfig.RunEndAt.UnixMilli() runEndAt = taskRunConfig.RunEndAt.UnixMilli() + (taskRunConfig.RunEndAt.UnixMilli() - taskRunConfig.RunStartAt.UnixMilli()) if err := sub.Creative(ctx, runStartAt, runEndAt); err != nil { @@ -352,10 +339,6 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } - //if err := sub.processor.Finish(ctx, taskRunConfig, &taskexe.Trigger{Task: sub.t, Span: span, IsFinish: false}); err != nil { - // merr = multierror.Append(merr, errors.WithMessagef(err, "subTaskCount > sampler.GetCycleCount()+1 Finish processor, task_id=%d", sub.taskID)) - // continue - //} } } } From 62b71b3610d45bb1339c59e8ffb02d42e38749d2 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 14:22:05 +0800 Subject: [PATCH 330/462] add debug log --- .../domain/task/service/taskexe/processor/auto_evaluate.go | 1 + .../domain/task/service/taskexe/processor/data_reflow.go | 1 + 2 files changed, 2 insertions(+) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 3bdc65349..a22c943f0 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -533,6 +533,7 @@ func (p *AutoEvaluteProcessor) OnFinishTaskChange(ctx context.Context, param tas return err } if param.IsFinish { + logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v", param.Task.GetID(), param.TaskRun) if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) return err diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go index d41cbae91..b95aa6aad 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go @@ -347,6 +347,7 @@ func (p *DataReflowProcessor) OnFinishTaskChange(ctx context.Context, param task return err } if param.IsFinish { + logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v", param.Task.GetID(), param.TaskRun) if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) return err From c3fdd483fe61deb589f20540a3c987f008009218 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 14:31:58 +0800 Subject: [PATCH 331/462] fix code fram --- backend/modules/observability/application/wire.go | 12 ++++++++++++ .../task/service/taskexe/processor/auto_evaluate.go | 2 +- .../task/service/taskexe/processor/data_reflow.go | 2 +- .../domain/task/service/taskexe/processor/factory.go | 4 ++-- .../task/service/taskexe/tracehub/trace_hub.go | 2 +- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 2f3181c33..44f676eb4 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -26,6 +26,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" taskSvc "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" + task_processor "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/exporter" @@ -115,6 +116,7 @@ var ( ) taskSet = wire.NewSet( //NewDatasetServiceAdapter, + NewInitProcessor, tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, @@ -195,6 +197,16 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase return adapter } +func NewInitProcessor( + datasetServiceProvider *service.DatasetServiceAdaptor, + evalService rpc.IEvaluatorRPCAdapter, + evaluationService rpc.IEvaluationRPCAdapter, + taskRepo repo.ITaskRepo, + taskRunRepo repo.ITaskRunRepo) { + autoEvaluteProc = task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo) + dataReflowProc = task_processor.NewDataReflowProcessor(datasetServiceProvider, taskRepo, taskRunRepo) +} + func InitTraceApplication( db db.Provider, ckDb ck.Provider, diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index a22c943f0..c129ce8cf 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -47,7 +47,7 @@ type AutoEvaluteProcessor struct { taskRunRepo repo.ITaskRunRepo } -func newAutoEvaluteProcessor( +func NewAutoEvaluteProcessor( datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go index b95aa6aad..22729f858 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go @@ -33,7 +33,7 @@ type DataReflowProcessor struct { taskRunRepo repo.ITaskRunRepo } -func newDataReflowProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, +func NewDataReflowProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) *DataReflowProcessor { return &DataReflowProcessor{ diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/factory.go b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go index 09f51de70..cec9b1826 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go @@ -44,6 +44,6 @@ func InitProcessor( evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) { - autoEvaluteProc = newAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo) - dataReflowProc = newDataReflowProcessor(datasetServiceProvider, taskRepo, taskRunRepo) + autoEvaluteProc = NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo) + dataReflowProc = NewDataReflowProcessor(datasetServiceProvider, taskRepo, taskRunRepo) } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 35f5909c7..086c0e5bf 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -45,7 +45,7 @@ func NewTraceHubImpl( tenantProvider tenant.ITenantProvider, buildHelper service.TraceFilterProcessorBuilder, ) (ITraceHubService, error) { - processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo, tRunRepo) + //processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo, tRunRepo) // 创建两个不同间隔的独立定时器 scheduledTaskTicker := time.NewTicker(5 * time.Minute) // 任务状态生命周期管理 - 5分钟间隔 syncTaskTicker := time.NewTicker(2 * time.Minute) // 数据同步 - 1分钟间隔 From 5dd0b51d9395ac00bb7822db6bd8e22093439abf Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 15:01:20 +0800 Subject: [PATCH 332/462] change code frame --- .../modules/observability/application/wire.go | 17 +++--- .../task/service/taskexe/processor/factory.go | 25 +++++++++ .../task/service/taskexe/processor/noop.go | 54 +++++++++++++++++++ 3 files changed, 87 insertions(+), 9 deletions(-) create mode 100644 backend/modules/observability/domain/task/service/taskexe/processor/noop.go diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 44f676eb4..3ae9d4029 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -23,9 +23,11 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/auth/authservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/file/fileservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/user/userservice" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" taskSvc "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" task_processor "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" @@ -116,7 +118,7 @@ var ( ) taskSet = wire.NewSet( //NewDatasetServiceAdapter, - NewInitProcessor, + NewInitTaskProcessor, tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, @@ -197,14 +199,11 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase return adapter } -func NewInitProcessor( - datasetServiceProvider *service.DatasetServiceAdaptor, - evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter, - taskRepo repo.ITaskRepo, - taskRunRepo repo.ITaskRunRepo) { - autoEvaluteProc = task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo) - dataReflowProc = task_processor.NewDataReflowProcessor(datasetServiceProvider, taskRepo, taskRunRepo) +func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, + evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) taskexe.Processor { + taskProcessor := task_processor.NewTaskProcessor() + taskProcessor.Register(ctx, task.TaskType_AutoEvalute, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) + return taskProcessor } func InitTraceApplication( diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/factory.go b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go index cec9b1826..5e0dd42ea 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go @@ -47,3 +47,28 @@ func InitProcessor( autoEvaluteProc = NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo) dataReflowProc = NewDataReflowProcessor(datasetServiceProvider, taskRepo, taskRunRepo) } + +type TaskProcessor struct { + taskProcessorMap map[task.TaskType]taskexe.Processor +} + +func NewTaskProcessor() *TaskProcessor { + return &TaskProcessor{ + taskProcessorMap: make(map[task.TaskType]taskexe.Processor), + } +} + +func (t *TaskProcessor) Register(ctx context.Context, taskType task.TaskType, taskProcessor taskexe.Processor) { + if t.taskProcessorMap == nil { + t.taskProcessorMap = make(map[task.TaskType]taskexe.Processor) + } + t.taskProcessorMap[taskType] = taskProcessor +} + +func (t *TaskProcessor) GetTaskProcessor(taskType task.TaskType) taskexe.Processor { + datasetProvider, ok := t.taskProcessorMap[taskType] + if !ok { + return NewNoopTaskProcessor() + } + return datasetProvider +} diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/noop.go b/backend/modules/observability/domain/task/service/taskexe/processor/noop.go new file mode 100644 index 000000000..4311387a1 --- /dev/null +++ b/backend/modules/observability/domain/task/service/taskexe/processor/noop.go @@ -0,0 +1,54 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package processor + +import ( + "context" + + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" +) + +var _ taskexe.Processor = (*NoopTaskProcessor)(nil) + +type NoopTaskProcessor struct { +} + +func NewNoopTaskProcessor() *NoopTaskProcessor { + return &NoopTaskProcessor{} +} + +func (p *NoopTaskProcessor) ValidateConfig(ctx context.Context, config any) error { + return nil +} + +func (p *NoopTaskProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { + + return nil +} + +func (p *NoopTaskProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { + + return nil +} + +func (p *NoopTaskProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { + + return nil +} + +func (p *NoopTaskProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { + + return nil +} + +func (p *NoopTaskProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { + + return nil +} + +func (p *NoopTaskProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { + + return nil +} From f180a94acc2ad50f820623ac7e001fe7243438a3 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 15:04:30 +0800 Subject: [PATCH 333/462] fix --- backend/modules/observability/application/wire.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 3ae9d4029..cdb41cf82 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -202,7 +202,7 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) taskexe.Processor { taskProcessor := task_processor.NewTaskProcessor() - taskProcessor.Register(ctx, task.TaskType_AutoEvalute, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) + taskProcessor.Register(ctx, task.TaskTypeAutoEval, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) return taskProcessor } From 47afcf8d3c514b12ad644769c9454e6db3d79441 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 15:07:22 +0800 Subject: [PATCH 334/462] fix wire --- backend/modules/observability/application/wire.go | 2 +- .../domain/task/service/taskexe/processor/factory.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index cdb41cf82..9a9dcff21 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -202,7 +202,7 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) taskexe.Processor { taskProcessor := task_processor.NewTaskProcessor() - taskProcessor.Register(ctx, task.TaskTypeAutoEval, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) + taskProcessor.Register(task.TaskTypeAutoEval, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) return taskProcessor } diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/factory.go b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go index 5e0dd42ea..a6d29bd60 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go @@ -58,7 +58,7 @@ func NewTaskProcessor() *TaskProcessor { } } -func (t *TaskProcessor) Register(ctx context.Context, taskType task.TaskType, taskProcessor taskexe.Processor) { +func (t *TaskProcessor) Register(taskType task.TaskType, taskProcessor taskexe.Processor) { if t.taskProcessorMap == nil { t.taskProcessorMap = make(map[task.TaskType]taskexe.Processor) } From d6d7bcbc8dd830312c3e6389aec6aecd6b9e7de5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 15:14:46 +0800 Subject: [PATCH 335/462] delete useless code --- .../taskexe/processor/auto_evaluate.go | 1482 ++++++++--------- 1 file changed, 741 insertions(+), 741 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index c129ce8cf..21f32f97c 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -3,744 +3,744 @@ package processor -import ( - "context" - "fmt" - "strconv" - "time" - - "github.com/apaxa-go/helper/strconvh" - "github.com/bytedance/gg/gptr" - "github.com/bytedance/sonic" - "github.com/coze-dev/coze-loop/backend/infra/middleware/session" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" - eval_target_d "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_target" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/eval_target" - dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" - tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" - task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" - obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" - "github.com/coze-dev/coze-loop/backend/pkg/errorx" - "github.com/coze-dev/coze-loop/backend/pkg/json" - "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" - "github.com/coze-dev/coze-loop/backend/pkg/lang/slices" - "github.com/coze-dev/coze-loop/backend/pkg/logs" - "github.com/coze-dev/cozeloop-go/spec/tracespec" -) - -var _ taskexe.Processor = (*AutoEvaluteProcessor)(nil) - -type AutoEvaluteProcessor struct { - evalSvc rpc.IEvaluatorRPCAdapter - evaluationSvc rpc.IEvaluationRPCAdapter - datasetServiceAdaptor *service.DatasetServiceAdaptor - taskRepo repo.ITaskRepo - taskRunRepo repo.ITaskRunRepo -} - -func NewAutoEvaluteProcessor( - datasetServiceProvider *service.DatasetServiceAdaptor, - evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter, - taskRepo repo.ITaskRepo, - taskRunRepo repo.ITaskRunRepo) *AutoEvaluteProcessor { - return &AutoEvaluteProcessor{ - datasetServiceAdaptor: datasetServiceProvider, - evalSvc: evalService, - evaluationSvc: evaluationService, - taskRepo: taskRepo, - taskRunRepo: taskRunRepo, - } -} - -func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any) error { - cfg, ok := config.(*task.Task) - if !ok { - return taskexe.ErrInvalidConfig - } - if cfg.GetRule() != nil && cfg.GetRule().GetEffectiveTime() != nil { - startAt := cfg.GetRule().GetEffectiveTime().GetStartAt() - endAt := cfg.GetRule().GetEffectiveTime().GetEndAt() - if startAt <= time.Now().Add(-10*time.Minute).UnixMilli() { - return errorx.NewByCode(obErrorx.CommonInvalidParamCode) - } - if startAt >= endAt { - return errorx.NewByCode(obErrorx.CommonInvalidParamCode) - } - } - var evaluatorVersionIDs []int64 - for _, autoEvaluateConfig := range cfg.GetTaskConfig().GetAutoEvaluateConfigs() { - evaluatorVersionIDs = append(evaluatorVersionIDs, autoEvaluateConfig.GetEvaluatorVersionID()) - } - if len(evaluatorVersionIDs) == 0 { - return errorx.NewByCode(obErrorx.CommonInvalidParamCode) - } - // 检查评估器版本是否合法 - evaluators, _, err := p.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ - WorkspaceID: cfg.GetWorkspaceID(), - EvaluatorVersionIds: evaluatorVersionIDs, - }) - if err != nil { - return errorx.NewByCode(obErrorx.CommonInvalidParamCode) - } - if len(evaluators) != len(evaluatorVersionIDs) { - return errorx.NewByCode(obErrorx.CommonInvalidParamCode) - } - return nil -} - -func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { - cfg, ok := config.(*task_entity.TaskRun) - if !ok { - return taskexe.ErrInvalidConfig - } - taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) - workspaceID := trigger.Task.GetWorkspaceID() - session := getSession(ctx, trigger.Task) - var mapping []*task.EvaluateFieldMapping - for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { - mapping = append(mapping, autoEvaluateConfig.FieldMappings...) - } - turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema()) - if len(turns) == 0 { - logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") - return nil - } - taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) - taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) - p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || - (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { - logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) - p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) - p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - return nil - } - _, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ - WorkspaceID: workspaceID, - EvaluationSetID: taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), - Items: []*eval_set.EvaluationSetItem{ - { - WorkspaceID: gptr.Of(workspaceID), - EvaluationSetID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID()), - SchemaID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchemaID()), - Turns: turns, - ItemKey: gptr.Of(trigger.Span.SpanID), - }, - }, - SkipInvalidItems: gptr.Of(true), - AllowPartialAdd: gptr.Of(true), - ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), - ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), - Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), - "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, - "start_time": strconvh.FormatInt64(trigger.Span.StartTime), - "task_id": strconvh.FormatInt64(trigger.Task.GetID()), - "task_run_id": strconvh.FormatInt64(taskRun.ID), - "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, - Session: session, - }) - if err != nil { - p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) - p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - return err - } - return nil -} - -func ToJSONString(ctx context.Context, obj interface{}) string { - if obj == nil { - return "" - } - jsonData, err := sonic.Marshal(obj) - if err != nil { - logs.CtxError(ctx, "JSON marshal error: %v", err) - return "" - } - jsonStr := string(jsonData) - return jsonStr -} - -func resetStartTime(currentTime int64, originalStartTime int64, maxAliveTime int64) int64 { - if currentTime > originalStartTime { - // 计算需要跳过的周期数 - timeDiff := currentTime - originalStartTime - skipCycles := timeDiff / maxAliveTime - - // 跳过过期的时间段,直接计算新的周期开始时间 - return originalStartTime + (skipCycles * maxAliveTime) - } - return originalStartTime -} - -func getBasicEvaluationSetSchema(basicColumns []string) (*dataset0.DatasetSchema, []*expt.FieldMapping) { - evaluationSetSchema := dataset0.NewDatasetSchema() - var fromEvalSet []*expt.FieldMapping - for _, column := range basicColumns { - evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ - Key: gptr.Of(column), - Name: gptr.Of(column), - Description: gptr.Of(column), - ContentType: gptr.Of(common.ContentTypeText), - TextSchema: gptr.Of("{\"type\": \"string\"}"), - }) - fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ - FieldName: gptr.Of(column), - FromFieldName: gptr.Of(column), - }) - } - return evaluationSetSchema, fromEvalSet -} - -// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -// convertDatasetSchemaDTO2DO 转换数据集模式 -func convertDatasetSchemaDTO2DO(schema *dataset0.DatasetSchema) entity.DatasetSchema { - if schema == nil { - return entity.DatasetSchema{} - } - - result := entity.DatasetSchema{} - - if schema.IsSetFieldSchemas() { - fieldSchemas := schema.GetFieldSchemas() - result.FieldSchemas = make([]entity.FieldSchema, len(fieldSchemas)) - for i, fs := range fieldSchemas { - key := fs.GetKey() - if key == "" { - key = fs.GetName() - } - name := fs.GetName() - description := fs.GetDescription() - textSchema := fs.GetTextSchema() - result.FieldSchemas[i] = entity.FieldSchema{ - Key: &key, - Name: name, - Description: description, - ContentType: convertContentTypeDTO2DO(fs.GetContentType()), - TextSchema: textSchema, - } - } - } - - return result -} - -// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -// convertContentTypeDTO2DO 转换内容类型 -func convertContentTypeDTO2DO(contentType common.ContentType) entity.ContentType { - switch contentType { - case common.ContentTypeText: - return entity.ContentType_Text - case common.ContentTypeImage: - return entity.ContentType_Image - case common.ContentTypeAudio: - return entity.ContentType_Audio - case common.ContentTypeMultiPart: - return entity.ContentType_MultiPart - default: - return entity.ContentType_Text - } -} - -func getCategory(taskType task.TaskType) entity.DatasetCategory { - switch taskType { - case task.TaskTypeAutoEval: - return entity.DatasetCategory_Evaluation - default: - return entity.DatasetCategory_General - } -} - -// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, - evaluationSetSchema string) (turns []*eval_set.Turn) { - turns = make([]*eval_set.Turn, 0, len(spans)) - for _, span := range spans { - fieldData := buildItem(ctx, span, fieldMappings, evaluationSetSchema) - if len(fieldData) == 0 { - continue - } - turns = append(turns, &eval_set.Turn{ - FieldDataList: fieldData, - }) - } - return turns -} - -func buildDatasetItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []entity.FieldMapping, - workspaceID, taskID int64, dataset *entity.Dataset, -) (successItems, failedItems, allItems []*entity.DatasetItem) { - successItems = make([]*entity.DatasetItem, 0, len(spans)) - failedItems = make([]*entity.DatasetItem, 0) - allItems = make([]*entity.DatasetItem, 0, len(spans)) - for i, span := range spans { - item := buildDatasetItem(ctx, span, i, fieldMappings, workspaceID, taskID, dataset) - allItems = append(allItems, item) - if len(item.Error) > 0 { - failedItems = append(failedItems, item) - } else { - successItems = append(successItems, item) - } - } - - return successItems, failedItems, allItems -} - -func buildDatasetItem(ctx context.Context, span *loop_span.Span, i int, fieldMappings []entity.FieldMapping, workspaceID, taskID int64, - dataset *entity.Dataset, -) *entity.DatasetItem { - item := entity.NewDatasetItem(workspaceID, dataset.ID, span) - for _, mapping := range fieldMappings { - value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) - if err != nil { - // 非json但使用了jsonpath,也不报错,置空 - logs.CtxInfo(ctx, "Extract field failed, err:%v", err) - } - - content, errCode := entity.GetContentInfo(ctx, mapping.FieldSchema.ContentType, value) - if errCode == entity.DatasetErrorType_MismatchSchema { - item.AddError("invalid multi part", entity.DatasetErrorType_MismatchSchema, nil) - continue - } - - // 前端传入的是Name,评测集需要的是key,需要做一下mapping - key := dataset.GetFieldSchemaKeyByName(mapping.FieldSchema.Name) - if key == "" { - logs.CtxInfo(ctx, "Dataset field key is empty, name:%v", mapping.FieldSchema.Name) - item.AddError("Dataset field key is empty", entity.DatasetErrorType_InternalError, nil) - continue - } - item.AddFieldData(key, mapping.FieldSchema.Name, content) - item.ItemKey = gptr.Of(fmt.Sprintf("%s_%s_%s", taskID, span.TraceID, span.SpanID)) - } - return item -} - -// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, - evaluationSetSchema string) []*eval_set.FieldData { - var fieldDatas []*eval_set.FieldData - fieldDatas = append(fieldDatas, &eval_set.FieldData{ - Key: gptr.Of("trace_id"), - Name: gptr.Of("trace_id"), - Content: &common.Content{ - ContentType: gptr.Of(common.ContentTypeText), - Text: gptr.Of(span.TraceID), - }, - }) - fieldDatas = append(fieldDatas, &eval_set.FieldData{ - Key: gptr.Of("span_id"), - Name: gptr.Of("span_id"), - Content: &common.Content{ - ContentType: gptr.Of(common.ContentTypeText), - Text: gptr.Of(span.SpanID), - }, - }) - for _, mapping := range fieldMappings { - // 前端传入的是Name,评测集需要的是key,需要做一下mapping - if mapping.EvalSetName == nil { - logs.CtxInfo(ctx, "Evaluator field name is nil") - continue - } - var evaluationSetSchemas []*eval_set.FieldSchema - if evaluationSetSchema == "" { - logs.CtxInfo(ctx, "Evaluation set schema is nil") - continue - } - err := json.Unmarshal([]byte(evaluationSetSchema), &evaluationSetSchemas) - if err != nil { - logs.CtxInfo(ctx, "Unmarshal evaluation set schema failed, err:%v", err) - continue - } - for _, fieldSchema := range evaluationSetSchemas { - if fieldSchema.GetKey() == *mapping.EvalSetName { - key := fieldSchema.GetKey() - if key == "" { - logs.CtxInfo(ctx, "Evaluator field key is empty, name:%v", *mapping.FieldSchema.Name) - continue - } - value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) - if err != nil { - logs.CtxInfo(ctx, "Extract field failed, err:%v", err) - continue - } - content, err := GetContentInfo(ctx, fieldSchema.GetContentType(), value) - if err != nil { - logs.CtxInfo(ctx, "GetContentInfo failed, err:%v", err) - return nil - } - fieldDatas = append(fieldDatas, &eval_set.FieldData{ - Key: gptr.Of(key), - Name: gptr.Of(fieldSchema.GetName()), - Content: content, - }) - } - } - } - return fieldDatas -} - -// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -func GetContentInfo(ctx context.Context, contentType common.ContentType, value string) (*common.Content, error) { - var content *common.Content - switch contentType { - case common.ContentTypeMultiPart: - var parts []tracespec.ModelMessagePart - err := json.Unmarshal([]byte(value), &parts) - if err != nil { - logs.CtxInfo(ctx, "Unmarshal multi part failed, err:%v", err) - return nil, err - } - var multiPart []*common.Content - for _, part := range parts { - // 本期仅支持回流图片的多模态数据,非ImageURL信息的,打包放进text - switch part.Type { - case tracespec.ModelMessagePartTypeImage: - if part.ImageURL == nil { - continue - } - multiPart = append(multiPart, &common.Content{ - ContentType: gptr.Of(common.ContentTypeImage), - Image: &common.Image{ - Name: gptr.Of(part.ImageURL.Name), - URL: gptr.Of(part.ImageURL.URL), - }, - }) - case tracespec.ModelMessagePartTypeText, tracespec.ModelMessagePartTypeFile: - multiPart = append(multiPart, &common.Content{ - ContentType: gptr.Of(common.ContentTypeText), - Text: gptr.Of(part.Text), - }) - default: - logs.CtxWarn(ctx, "Unsupported part type: %s", part.Type) - return nil, err - } - } - content = &common.Content{ - ContentType: gptr.Of(common.ContentTypeMultiPart), - MultiPart: multiPart, - } - default: - content = &common.Content{ - ContentType: gptr.Of(common.ContentTypeText), - Text: gptr.Of(value), - } - } - return content, nil -} - -func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { - taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) - if err != nil { - logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - if ShouldTriggerBackfill(currentTask) && taskRuns == nil { - err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ - CurrentTask: currentTask, - RunType: task.TaskRunTypeBackFill, - RunStartAt: time.Now().UnixMilli(), - RunEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), - }) - if err != nil { - logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) - if err != nil { - logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - } - if ShouldTriggerNewData(ctx, currentTask) { - var runStartAt, runEndAt int64 - runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() - if !currentTask.GetRule().GetSampler().GetIsCycle() { - runEndAt = currentTask.GetRule().GetEffectiveTime().GetEndAt() - } else { - switch *currentTask.GetRule().GetSampler().CycleTimeUnit { - case task.TimeUnitDay: - runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() - case task.TimeUnitWeek: - runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() - default: - runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() - } - } - err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ - CurrentTask: currentTask, - RunType: task.TaskRunTypeNewData, - RunStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), - RunEndAt: runEndAt, - }) - err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) - if err != nil { - logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - } - return nil -} - -func (p *AutoEvaluteProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { - switch taskOp { - case task.TaskStatusSuccess: - if currentTask.GetTaskStatus() != task.TaskStatusDisabled { - *currentTask.TaskStatus = task.TaskStatusSuccess - } - case task.TaskStatusRunning: - if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { - *currentTask.TaskStatus = task.TaskStatusRunning - } - case task.TaskStatusDisabled: - if currentTask.GetTaskStatus() != task.TaskStatusDisabled { - *currentTask.TaskStatus = task.TaskStatusDisabled - } - case task.TaskStatusPending: - if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { - *currentTask.TaskStatus = task.TaskStatusPending - } - default: - return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) - } - // 2、更新任务 - taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") - err := p.taskRepo.UpdateTask(ctx, taskPO) - if err != nil { - logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - return nil -} - -func (p *AutoEvaluteProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { - err := p.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ - Task: param.Task, - TaskRun: param.TaskRun, - }) - if err != nil { - logs.CtxError(ctx, "OnFinishTaskRunChange failed, taskRun:%+v, err:%v", param.TaskRun, err) - return err - } - if param.IsFinish { - logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v", param.Task.GetID(), param.TaskRun) - if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { - logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) - return err - } - } - return nil -} - -func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { - //todo:[xun]加锁 - currentTask := param.CurrentTask - ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) - sessionInfo := getSession(ctx, currentTask) - var evaluationSetColumns []string - var evaluatorVersionIds []int64 - var evaluatorFieldMappings []*expt.EvaluatorFieldMapping - evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id") - autoEvaluateConfigs := currentTask.GetTaskConfig().GetAutoEvaluateConfigs() - evaluationSetSchema, fromEvalSet := getBasicEvaluationSetSchema(evaluationSetColumns) - for _, autoEvaluateConfig := range autoEvaluateConfigs { - evaluatorVersionIds = append(evaluatorVersionIds, autoEvaluateConfig.EvaluatorVersionID) - filedMappings := autoEvaluateConfig.GetFieldMappings() - for _, fieldMapping := range filedMappings { - if fieldMapping.GetFieldSchema() == nil { - continue - } - fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ - FieldName: gptr.Of(fieldMapping.GetFieldSchema().GetName()), - FromFieldName: gptr.Of(fieldMapping.GetEvalSetName()), - }) - if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { - continue - } - // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, - evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ - Key: gptr.Of(fieldMapping.GetEvalSetName()), - Name: gptr.Of(fieldMapping.GetEvalSetName()), - Description: gptr.Of(fieldMapping.TraceFieldJsonpath), - ContentType: gptr.Of(fieldMapping.GetFieldSchema().GetContentType()), - //DefaultDisplayFormat: gptr.Of(dataset.FieldDisplayFormat_PlainText), - TextSchema: fieldMapping.GetFieldSchema().TextSchema, - //Hidden: gptr.Of(false), - }) - evaluationSetColumns = append(evaluationSetColumns, fieldMapping.GetEvalSetName()) - } - - evaluatorFieldMappings = append(evaluatorFieldMappings, &expt.EvaluatorFieldMapping{ - EvaluatorVersionID: autoEvaluateConfig.GetEvaluatorVersionID(), - FromEvalSet: fromEvalSet, - }) - } - category := getCategory(currentTask.TaskType) - schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) - logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) - var datasetName, exptName string - if param.RunType == task.TaskRunTypeBackFill { - datasetName = fmt.Sprintf("自动化任务评测集_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - exptName = fmt.Sprintf("自动化任务实验_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - } else { - datasetName = fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - exptName = fmt.Sprintf("自动化任务实验_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - } - // 1、创建评测集 - datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( - 0, - currentTask.GetWorkspaceID(), - datasetName, - category, - schema, - sessionInfo, - )) - if err != nil { - logs.CtxError(ctx, "CreateDataset failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) - return err - } - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) - // 2、创建实验 - maxAliveTime := param.RunEndAt - param.RunStartAt - submitExperimentReq := rpc.SubmitExperimentReq{ - WorkspaceID: currentTask.GetWorkspaceID(), - EvalSetVersionID: gptr.Of(datasetID), - EvaluatorVersionIds: evaluatorVersionIds, - Name: ptr.Of(exptName), - Desc: gptr.Of("自动化任务实验"), - EvalSetID: gptr.Of(datasetID), - EvaluatorFieldMapping: evaluatorFieldMappings, - TargetFieldMapping: &expt.TargetFieldMapping{ - FromEvalSet: []*expt.FieldMapping{}, - }, - CreateEvalTargetParam: &eval_target.CreateEvalTargetParam{ - SourceTargetID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), - EvalTargetType: gptr.Of(eval_target_d.EvalTargetType_Trace), - }, - ExptType: gptr.Of(expt.ExptType_Online), - MaxAliveTime: gptr.Of(maxAliveTime), - SourceType: gptr.Of(expt.SourceType_AutoTask), - SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), - Session: sessionInfo, - } - logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) - exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) - if err != nil { - logs.CtxError(ctx, "SubmitExperiment failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) - return err - } - logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) - - evaluationSetConfig, err := p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, currentTask.GetWorkspaceID(), datasetID, category) - if err != nil { - logs.CtxError(ctx, "[task-debug] GetEvaluationSet err:%v", err) - return err - } - //effectiveTime := currentTask.GetRule().GetEffectiveTime() - - //var cycleStartAt, cycleEndAt, endAt int64 - //currentTime := time.Now().UnixMilli() - // - //if effectiveTime.StartAt != nil && effectiveTime.EndAt != nil { - // endAt = effectiveTime.GetEndAt() - // if len(taskConfig.TaskRuns) == 0 { - // // 首次创建 taskrun,从任务生效时间开始 - // cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) - // } else { - // // 找到最新的 cycleEndAt 作为新的 cycleStartAt - // for _, run := range taskConfig.TaskRuns { - // if run.RunStartAt.UnixMilli() > cycleStartAt { - // cycleStartAt = run.RunEndAt.UnixMilli() - // } - // } - // cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) - // } - // cycleEndAt = cycleStartAt + maxAliveTime - // - // // 确保周期开始时间不早于任务生效时间 - // if cycleStartAt < effectiveTime.GetStartAt() { - // cycleStartAt = effectiveTime.GetStartAt() - // cycleEndAt = cycleStartAt + maxAliveTime - // } - // - // // 确保周期结束时间不晚于任务结束时间 - // if cycleEndAt > effectiveTime.GetEndAt() { - // cycleEndAt = effectiveTime.GetEndAt() - // } - //} - - // 5、创建 taskrun - taskRunConfig := &task.TaskRunConfig{ - AutoEvaluateRunConfig: &task.AutoEvaluateRunConfig{ - ExptID: exptID, - ExptRunID: exptRunID, - EvalID: datasetID, - SchemaID: evaluationSetConfig.DatasetVersion.DatasetSchema.ID, - Schema: ptr.Of(ToJSONString(ctx, evaluationSetConfig.DatasetVersion.DatasetSchema.FieldSchemas)), - EndAt: param.RunEndAt, - CycleStartAt: param.RunStartAt, - CycleEndAt: param.RunEndAt, - Status: task.TaskStatusRunning, - }, - } - taskRun := &task_entity.TaskRun{ - TaskID: currentTask.GetID(), - WorkspaceID: currentTask.GetWorkspaceID(), - TaskType: param.RunType, - RunStatus: task.RunStatusRunning, - RunStartAt: time.UnixMilli(param.RunStartAt), - RunEndAt: time.UnixMilli(param.RunEndAt), - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), - } - id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) - if err != nil { - logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) - return err - } - taskRun.ID = id - taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) - if err != nil { - return err - } - taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) - err = p.taskRepo.UpdateTask(ctx, taskConfig) - if err != nil { - return err - } - return nil -} - -func (p *AutoEvaluteProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { - session := getSession(ctx, param.Task) - taskRun := param.TaskRun - taskRunPO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) - if err := p.evaluationSvc.FinishExperiment(ctx, &rpc.FinishExperimentReq{ - WorkspaceID: param.Task.GetWorkspaceID(), - ExperimentID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID(), - ExperimentRunID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID(), - Session: session, - }); err != nil { - return err - } - // 设置taskRun状态为已完成 - taskRun.RunStatus = task.RunStatusDone - // 更新taskRun - err := p.taskRepo.UpdateTaskRun(ctx, taskRun) - if err != nil { - logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.ID, err) - return err - } - return nil -} +//import ( +// "context" +// "fmt" +// "strconv" +// "time" +// +// "github.com/apaxa-go/helper/strconvh" +// "github.com/bytedance/gg/gptr" +// "github.com/bytedance/sonic" +// "github.com/coze-dev/coze-loop/backend/infra/middleware/session" +// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" +// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" +// eval_target_d "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_target" +// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" +// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/eval_target" +// dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" +// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" +// tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" +// task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" +// obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" +// "github.com/coze-dev/coze-loop/backend/pkg/errorx" +// "github.com/coze-dev/coze-loop/backend/pkg/json" +// "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" +// "github.com/coze-dev/coze-loop/backend/pkg/lang/slices" +// "github.com/coze-dev/coze-loop/backend/pkg/logs" +// "github.com/coze-dev/cozeloop-go/spec/tracespec" +//) +// +//var _ taskexe.Processor = (*AutoEvaluteProcessor)(nil) +// +//type AutoEvaluteProcessor struct { +// evalSvc rpc.IEvaluatorRPCAdapter +// evaluationSvc rpc.IEvaluationRPCAdapter +// datasetServiceAdaptor *service.DatasetServiceAdaptor +// taskRepo repo.ITaskRepo +// taskRunRepo repo.ITaskRunRepo +//} +// +//func NewAutoEvaluteProcessor( +// datasetServiceProvider *service.DatasetServiceAdaptor, +// evalService rpc.IEvaluatorRPCAdapter, +// evaluationService rpc.IEvaluationRPCAdapter, +// taskRepo repo.ITaskRepo, +// taskRunRepo repo.ITaskRunRepo) *AutoEvaluteProcessor { +// return &AutoEvaluteProcessor{ +// datasetServiceAdaptor: datasetServiceProvider, +// evalSvc: evalService, +// evaluationSvc: evaluationService, +// taskRepo: taskRepo, +// taskRunRepo: taskRunRepo, +// } +//} +// +//func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any) error { +// cfg, ok := config.(*task.Task) +// if !ok { +// return taskexe.ErrInvalidConfig +// } +// if cfg.GetRule() != nil && cfg.GetRule().GetEffectiveTime() != nil { +// startAt := cfg.GetRule().GetEffectiveTime().GetStartAt() +// endAt := cfg.GetRule().GetEffectiveTime().GetEndAt() +// if startAt <= time.Now().Add(-10*time.Minute).UnixMilli() { +// return errorx.NewByCode(obErrorx.CommonInvalidParamCode) +// } +// if startAt >= endAt { +// return errorx.NewByCode(obErrorx.CommonInvalidParamCode) +// } +// } +// var evaluatorVersionIDs []int64 +// for _, autoEvaluateConfig := range cfg.GetTaskConfig().GetAutoEvaluateConfigs() { +// evaluatorVersionIDs = append(evaluatorVersionIDs, autoEvaluateConfig.GetEvaluatorVersionID()) +// } +// if len(evaluatorVersionIDs) == 0 { +// return errorx.NewByCode(obErrorx.CommonInvalidParamCode) +// } +// // 检查评估器版本是否合法 +// evaluators, _, err := p.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ +// WorkspaceID: cfg.GetWorkspaceID(), +// EvaluatorVersionIds: evaluatorVersionIDs, +// }) +// if err != nil { +// return errorx.NewByCode(obErrorx.CommonInvalidParamCode) +// } +// if len(evaluators) != len(evaluatorVersionIDs) { +// return errorx.NewByCode(obErrorx.CommonInvalidParamCode) +// } +// return nil +//} +// +//func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { +// cfg, ok := config.(*task_entity.TaskRun) +// if !ok { +// return taskexe.ErrInvalidConfig +// } +// taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) +// workspaceID := trigger.Task.GetWorkspaceID() +// session := getSession(ctx, trigger.Task) +// var mapping []*task.EvaluateFieldMapping +// for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { +// mapping = append(mapping, autoEvaluateConfig.FieldMappings...) +// } +// turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema()) +// if len(turns) == 0 { +// logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") +// return nil +// } +// taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) +// taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) +// p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) +// p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) +// if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || +// (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { +// logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) +// p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) +// p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) +// return nil +// } +// _, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ +// WorkspaceID: workspaceID, +// EvaluationSetID: taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), +// Items: []*eval_set.EvaluationSetItem{ +// { +// WorkspaceID: gptr.Of(workspaceID), +// EvaluationSetID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID()), +// SchemaID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchemaID()), +// Turns: turns, +// ItemKey: gptr.Of(trigger.Span.SpanID), +// }, +// }, +// SkipInvalidItems: gptr.Of(true), +// AllowPartialAdd: gptr.Of(true), +// ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), +// ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), +// Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), +// "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, +// "start_time": strconvh.FormatInt64(trigger.Span.StartTime), +// "task_id": strconvh.FormatInt64(trigger.Task.GetID()), +// "task_run_id": strconvh.FormatInt64(taskRun.ID), +// "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, +// Session: session, +// }) +// if err != nil { +// p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) +// p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) +// return err +// } +// return nil +//} +// +//func ToJSONString(ctx context.Context, obj interface{}) string { +// if obj == nil { +// return "" +// } +// jsonData, err := sonic.Marshal(obj) +// if err != nil { +// logs.CtxError(ctx, "JSON marshal error: %v", err) +// return "" +// } +// jsonStr := string(jsonData) +// return jsonStr +//} +// +//func resetStartTime(currentTime int64, originalStartTime int64, maxAliveTime int64) int64 { +// if currentTime > originalStartTime { +// // 计算需要跳过的周期数 +// timeDiff := currentTime - originalStartTime +// skipCycles := timeDiff / maxAliveTime +// +// // 跳过过期的时间段,直接计算新的周期开始时间 +// return originalStartTime + (skipCycles * maxAliveTime) +// } +// return originalStartTime +//} +// +//func getBasicEvaluationSetSchema(basicColumns []string) (*dataset0.DatasetSchema, []*expt.FieldMapping) { +// evaluationSetSchema := dataset0.NewDatasetSchema() +// var fromEvalSet []*expt.FieldMapping +// for _, column := range basicColumns { +// evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ +// Key: gptr.Of(column), +// Name: gptr.Of(column), +// Description: gptr.Of(column), +// ContentType: gptr.Of(common.ContentTypeText), +// TextSchema: gptr.Of("{\"type\": \"string\"}"), +// }) +// fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ +// FieldName: gptr.Of(column), +// FromFieldName: gptr.Of(column), +// }) +// } +// return evaluationSetSchema, fromEvalSet +//} +// +//// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +//// convertDatasetSchemaDTO2DO 转换数据集模式 +//func convertDatasetSchemaDTO2DO(schema *dataset0.DatasetSchema) entity.DatasetSchema { +// if schema == nil { +// return entity.DatasetSchema{} +// } +// +// result := entity.DatasetSchema{} +// +// if schema.IsSetFieldSchemas() { +// fieldSchemas := schema.GetFieldSchemas() +// result.FieldSchemas = make([]entity.FieldSchema, len(fieldSchemas)) +// for i, fs := range fieldSchemas { +// key := fs.GetKey() +// if key == "" { +// key = fs.GetName() +// } +// name := fs.GetName() +// description := fs.GetDescription() +// textSchema := fs.GetTextSchema() +// result.FieldSchemas[i] = entity.FieldSchema{ +// Key: &key, +// Name: name, +// Description: description, +// ContentType: convertContentTypeDTO2DO(fs.GetContentType()), +// TextSchema: textSchema, +// } +// } +// } +// +// return result +//} +// +//// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +//// convertContentTypeDTO2DO 转换内容类型 +//func convertContentTypeDTO2DO(contentType common.ContentType) entity.ContentType { +// switch contentType { +// case common.ContentTypeText: +// return entity.ContentType_Text +// case common.ContentTypeImage: +// return entity.ContentType_Image +// case common.ContentTypeAudio: +// return entity.ContentType_Audio +// case common.ContentTypeMultiPart: +// return entity.ContentType_MultiPart +// default: +// return entity.ContentType_Text +// } +//} +// +//func getCategory(taskType task.TaskType) entity.DatasetCategory { +// switch taskType { +// case task.TaskTypeAutoEval: +// return entity.DatasetCategory_Evaluation +// default: +// return entity.DatasetCategory_General +// } +//} +// +//// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +//func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, +// evaluationSetSchema string) (turns []*eval_set.Turn) { +// turns = make([]*eval_set.Turn, 0, len(spans)) +// for _, span := range spans { +// fieldData := buildItem(ctx, span, fieldMappings, evaluationSetSchema) +// if len(fieldData) == 0 { +// continue +// } +// turns = append(turns, &eval_set.Turn{ +// FieldDataList: fieldData, +// }) +// } +// return turns +//} +// +//func buildDatasetItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []entity.FieldMapping, +// workspaceID, taskID int64, dataset *entity.Dataset, +//) (successItems, failedItems, allItems []*entity.DatasetItem) { +// successItems = make([]*entity.DatasetItem, 0, len(spans)) +// failedItems = make([]*entity.DatasetItem, 0) +// allItems = make([]*entity.DatasetItem, 0, len(spans)) +// for i, span := range spans { +// item := buildDatasetItem(ctx, span, i, fieldMappings, workspaceID, taskID, dataset) +// allItems = append(allItems, item) +// if len(item.Error) > 0 { +// failedItems = append(failedItems, item) +// } else { +// successItems = append(successItems, item) +// } +// } +// +// return successItems, failedItems, allItems +//} +// +//func buildDatasetItem(ctx context.Context, span *loop_span.Span, i int, fieldMappings []entity.FieldMapping, workspaceID, taskID int64, +// dataset *entity.Dataset, +//) *entity.DatasetItem { +// item := entity.NewDatasetItem(workspaceID, dataset.ID, span) +// for _, mapping := range fieldMappings { +// value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) +// if err != nil { +// // 非json但使用了jsonpath,也不报错,置空 +// logs.CtxInfo(ctx, "Extract field failed, err:%v", err) +// } +// +// content, errCode := entity.GetContentInfo(ctx, mapping.FieldSchema.ContentType, value) +// if errCode == entity.DatasetErrorType_MismatchSchema { +// item.AddError("invalid multi part", entity.DatasetErrorType_MismatchSchema, nil) +// continue +// } +// +// // 前端传入的是Name,评测集需要的是key,需要做一下mapping +// key := dataset.GetFieldSchemaKeyByName(mapping.FieldSchema.Name) +// if key == "" { +// logs.CtxInfo(ctx, "Dataset field key is empty, name:%v", mapping.FieldSchema.Name) +// item.AddError("Dataset field key is empty", entity.DatasetErrorType_InternalError, nil) +// continue +// } +// item.AddFieldData(key, mapping.FieldSchema.Name, content) +// item.ItemKey = gptr.Of(fmt.Sprintf("%s_%s_%s", taskID, span.TraceID, span.SpanID)) +// } +// return item +//} +// +//// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +//func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, +// evaluationSetSchema string) []*eval_set.FieldData { +// var fieldDatas []*eval_set.FieldData +// fieldDatas = append(fieldDatas, &eval_set.FieldData{ +// Key: gptr.Of("trace_id"), +// Name: gptr.Of("trace_id"), +// Content: &common.Content{ +// ContentType: gptr.Of(common.ContentTypeText), +// Text: gptr.Of(span.TraceID), +// }, +// }) +// fieldDatas = append(fieldDatas, &eval_set.FieldData{ +// Key: gptr.Of("span_id"), +// Name: gptr.Of("span_id"), +// Content: &common.Content{ +// ContentType: gptr.Of(common.ContentTypeText), +// Text: gptr.Of(span.SpanID), +// }, +// }) +// for _, mapping := range fieldMappings { +// // 前端传入的是Name,评测集需要的是key,需要做一下mapping +// if mapping.EvalSetName == nil { +// logs.CtxInfo(ctx, "Evaluator field name is nil") +// continue +// } +// var evaluationSetSchemas []*eval_set.FieldSchema +// if evaluationSetSchema == "" { +// logs.CtxInfo(ctx, "Evaluation set schema is nil") +// continue +// } +// err := json.Unmarshal([]byte(evaluationSetSchema), &evaluationSetSchemas) +// if err != nil { +// logs.CtxInfo(ctx, "Unmarshal evaluation set schema failed, err:%v", err) +// continue +// } +// for _, fieldSchema := range evaluationSetSchemas { +// if fieldSchema.GetKey() == *mapping.EvalSetName { +// key := fieldSchema.GetKey() +// if key == "" { +// logs.CtxInfo(ctx, "Evaluator field key is empty, name:%v", *mapping.FieldSchema.Name) +// continue +// } +// value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) +// if err != nil { +// logs.CtxInfo(ctx, "Extract field failed, err:%v", err) +// continue +// } +// content, err := GetContentInfo(ctx, fieldSchema.GetContentType(), value) +// if err != nil { +// logs.CtxInfo(ctx, "GetContentInfo failed, err:%v", err) +// return nil +// } +// fieldDatas = append(fieldDatas, &eval_set.FieldData{ +// Key: gptr.Of(key), +// Name: gptr.Of(fieldSchema.GetName()), +// Content: content, +// }) +// } +// } +// } +// return fieldDatas +//} +// +//// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +//func GetContentInfo(ctx context.Context, contentType common.ContentType, value string) (*common.Content, error) { +// var content *common.Content +// switch contentType { +// case common.ContentTypeMultiPart: +// var parts []tracespec.ModelMessagePart +// err := json.Unmarshal([]byte(value), &parts) +// if err != nil { +// logs.CtxInfo(ctx, "Unmarshal multi part failed, err:%v", err) +// return nil, err +// } +// var multiPart []*common.Content +// for _, part := range parts { +// // 本期仅支持回流图片的多模态数据,非ImageURL信息的,打包放进text +// switch part.Type { +// case tracespec.ModelMessagePartTypeImage: +// if part.ImageURL == nil { +// continue +// } +// multiPart = append(multiPart, &common.Content{ +// ContentType: gptr.Of(common.ContentTypeImage), +// Image: &common.Image{ +// Name: gptr.Of(part.ImageURL.Name), +// URL: gptr.Of(part.ImageURL.URL), +// }, +// }) +// case tracespec.ModelMessagePartTypeText, tracespec.ModelMessagePartTypeFile: +// multiPart = append(multiPart, &common.Content{ +// ContentType: gptr.Of(common.ContentTypeText), +// Text: gptr.Of(part.Text), +// }) +// default: +// logs.CtxWarn(ctx, "Unsupported part type: %s", part.Type) +// return nil, err +// } +// } +// content = &common.Content{ +// ContentType: gptr.Of(common.ContentTypeMultiPart), +// MultiPart: multiPart, +// } +// default: +// content = &common.Content{ +// ContentType: gptr.Of(common.ContentTypeText), +// Text: gptr.Of(value), +// } +// } +// return content, nil +//} +// +//func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { +// taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) +// if err != nil { +// logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// if ShouldTriggerBackfill(currentTask) && taskRuns == nil { +// err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ +// CurrentTask: currentTask, +// RunType: task.TaskRunTypeBackFill, +// RunStartAt: time.Now().UnixMilli(), +// RunEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), +// }) +// if err != nil { +// logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) +// if err != nil { +// logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// } +// if ShouldTriggerNewData(ctx, currentTask) { +// var runStartAt, runEndAt int64 +// runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() +// if !currentTask.GetRule().GetSampler().GetIsCycle() { +// runEndAt = currentTask.GetRule().GetEffectiveTime().GetEndAt() +// } else { +// switch *currentTask.GetRule().GetSampler().CycleTimeUnit { +// case task.TimeUnitDay: +// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() +// case task.TimeUnitWeek: +// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() +// default: +// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() +// } +// } +// err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ +// CurrentTask: currentTask, +// RunType: task.TaskRunTypeNewData, +// RunStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), +// RunEndAt: runEndAt, +// }) +// err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) +// if err != nil { +// logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// } +// return nil +//} +// +//func (p *AutoEvaluteProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { +// switch taskOp { +// case task.TaskStatusSuccess: +// if currentTask.GetTaskStatus() != task.TaskStatusDisabled { +// *currentTask.TaskStatus = task.TaskStatusSuccess +// } +// case task.TaskStatusRunning: +// if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { +// *currentTask.TaskStatus = task.TaskStatusRunning +// } +// case task.TaskStatusDisabled: +// if currentTask.GetTaskStatus() != task.TaskStatusDisabled { +// *currentTask.TaskStatus = task.TaskStatusDisabled +// } +// case task.TaskStatusPending: +// if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { +// *currentTask.TaskStatus = task.TaskStatusPending +// } +// default: +// return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) +// } +// // 2、更新任务 +// taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") +// err := p.taskRepo.UpdateTask(ctx, taskPO) +// if err != nil { +// logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// return nil +//} +// +//func (p *AutoEvaluteProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { +// err := p.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ +// Task: param.Task, +// TaskRun: param.TaskRun, +// }) +// if err != nil { +// logs.CtxError(ctx, "OnFinishTaskRunChange failed, taskRun:%+v, err:%v", param.TaskRun, err) +// return err +// } +// if param.IsFinish { +// logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v", param.Task.GetID(), param.TaskRun) +// if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { +// logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) +// return err +// } +// } +// return nil +//} +// +//func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { +// //todo:[xun]加锁 +// currentTask := param.CurrentTask +// ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) +// sessionInfo := getSession(ctx, currentTask) +// var evaluationSetColumns []string +// var evaluatorVersionIds []int64 +// var evaluatorFieldMappings []*expt.EvaluatorFieldMapping +// evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id") +// autoEvaluateConfigs := currentTask.GetTaskConfig().GetAutoEvaluateConfigs() +// evaluationSetSchema, fromEvalSet := getBasicEvaluationSetSchema(evaluationSetColumns) +// for _, autoEvaluateConfig := range autoEvaluateConfigs { +// evaluatorVersionIds = append(evaluatorVersionIds, autoEvaluateConfig.EvaluatorVersionID) +// filedMappings := autoEvaluateConfig.GetFieldMappings() +// for _, fieldMapping := range filedMappings { +// if fieldMapping.GetFieldSchema() == nil { +// continue +// } +// fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ +// FieldName: gptr.Of(fieldMapping.GetFieldSchema().GetName()), +// FromFieldName: gptr.Of(fieldMapping.GetEvalSetName()), +// }) +// if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { +// continue +// } +// // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, +// evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ +// Key: gptr.Of(fieldMapping.GetEvalSetName()), +// Name: gptr.Of(fieldMapping.GetEvalSetName()), +// Description: gptr.Of(fieldMapping.TraceFieldJsonpath), +// ContentType: gptr.Of(fieldMapping.GetFieldSchema().GetContentType()), +// //DefaultDisplayFormat: gptr.Of(dataset.FieldDisplayFormat_PlainText), +// TextSchema: fieldMapping.GetFieldSchema().TextSchema, +// //Hidden: gptr.Of(false), +// }) +// evaluationSetColumns = append(evaluationSetColumns, fieldMapping.GetEvalSetName()) +// } +// +// evaluatorFieldMappings = append(evaluatorFieldMappings, &expt.EvaluatorFieldMapping{ +// EvaluatorVersionID: autoEvaluateConfig.GetEvaluatorVersionID(), +// FromEvalSet: fromEvalSet, +// }) +// } +// category := getCategory(currentTask.TaskType) +// schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) +// logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) +// var datasetName, exptName string +// if param.RunType == task.TaskRunTypeBackFill { +// datasetName = fmt.Sprintf("自动化任务评测集_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) +// exptName = fmt.Sprintf("自动化任务实验_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) +// } else { +// datasetName = fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) +// exptName = fmt.Sprintf("自动化任务实验_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) +// } +// // 1、创建评测集 +// datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( +// 0, +// currentTask.GetWorkspaceID(), +// datasetName, +// category, +// schema, +// sessionInfo, +// )) +// if err != nil { +// logs.CtxError(ctx, "CreateDataset failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) +// return err +// } +// logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) +// // 2、创建实验 +// maxAliveTime := param.RunEndAt - param.RunStartAt +// submitExperimentReq := rpc.SubmitExperimentReq{ +// WorkspaceID: currentTask.GetWorkspaceID(), +// EvalSetVersionID: gptr.Of(datasetID), +// EvaluatorVersionIds: evaluatorVersionIds, +// Name: ptr.Of(exptName), +// Desc: gptr.Of("自动化任务实验"), +// EvalSetID: gptr.Of(datasetID), +// EvaluatorFieldMapping: evaluatorFieldMappings, +// TargetFieldMapping: &expt.TargetFieldMapping{ +// FromEvalSet: []*expt.FieldMapping{}, +// }, +// CreateEvalTargetParam: &eval_target.CreateEvalTargetParam{ +// SourceTargetID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), +// EvalTargetType: gptr.Of(eval_target_d.EvalTargetType_Trace), +// }, +// ExptType: gptr.Of(expt.ExptType_Online), +// MaxAliveTime: gptr.Of(maxAliveTime), +// SourceType: gptr.Of(expt.SourceType_AutoTask), +// SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), +// Session: sessionInfo, +// } +// logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) +// exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) +// if err != nil { +// logs.CtxError(ctx, "SubmitExperiment failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) +// return err +// } +// logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) +// +// evaluationSetConfig, err := p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, currentTask.GetWorkspaceID(), datasetID, category) +// if err != nil { +// logs.CtxError(ctx, "[task-debug] GetEvaluationSet err:%v", err) +// return err +// } +// //effectiveTime := currentTask.GetRule().GetEffectiveTime() +// +// //var cycleStartAt, cycleEndAt, endAt int64 +// //currentTime := time.Now().UnixMilli() +// // +// //if effectiveTime.StartAt != nil && effectiveTime.EndAt != nil { +// // endAt = effectiveTime.GetEndAt() +// // if len(taskConfig.TaskRuns) == 0 { +// // // 首次创建 taskrun,从任务生效时间开始 +// // cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) +// // } else { +// // // 找到最新的 cycleEndAt 作为新的 cycleStartAt +// // for _, run := range taskConfig.TaskRuns { +// // if run.RunStartAt.UnixMilli() > cycleStartAt { +// // cycleStartAt = run.RunEndAt.UnixMilli() +// // } +// // } +// // cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) +// // } +// // cycleEndAt = cycleStartAt + maxAliveTime +// // +// // // 确保周期开始时间不早于任务生效时间 +// // if cycleStartAt < effectiveTime.GetStartAt() { +// // cycleStartAt = effectiveTime.GetStartAt() +// // cycleEndAt = cycleStartAt + maxAliveTime +// // } +// // +// // // 确保周期结束时间不晚于任务结束时间 +// // if cycleEndAt > effectiveTime.GetEndAt() { +// // cycleEndAt = effectiveTime.GetEndAt() +// // } +// //} +// +// // 5、创建 taskrun +// taskRunConfig := &task.TaskRunConfig{ +// AutoEvaluateRunConfig: &task.AutoEvaluateRunConfig{ +// ExptID: exptID, +// ExptRunID: exptRunID, +// EvalID: datasetID, +// SchemaID: evaluationSetConfig.DatasetVersion.DatasetSchema.ID, +// Schema: ptr.Of(ToJSONString(ctx, evaluationSetConfig.DatasetVersion.DatasetSchema.FieldSchemas)), +// EndAt: param.RunEndAt, +// CycleStartAt: param.RunStartAt, +// CycleEndAt: param.RunEndAt, +// Status: task.TaskStatusRunning, +// }, +// } +// taskRun := &task_entity.TaskRun{ +// TaskID: currentTask.GetID(), +// WorkspaceID: currentTask.GetWorkspaceID(), +// TaskType: param.RunType, +// RunStatus: task.RunStatusRunning, +// RunStartAt: time.UnixMilli(param.RunStartAt), +// RunEndAt: time.UnixMilli(param.RunEndAt), +// CreatedAt: time.Now(), +// UpdatedAt: time.Now(), +// RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), +// } +// id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) +// if err != nil { +// logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) +// return err +// } +// taskRun.ID = id +// taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) +// if err != nil { +// return err +// } +// taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) +// err = p.taskRepo.UpdateTask(ctx, taskConfig) +// if err != nil { +// return err +// } +// return nil +//} +// +//func (p *AutoEvaluteProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { +// session := getSession(ctx, param.Task) +// taskRun := param.TaskRun +// taskRunPO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) +// if err := p.evaluationSvc.FinishExperiment(ctx, &rpc.FinishExperimentReq{ +// WorkspaceID: param.Task.GetWorkspaceID(), +// ExperimentID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID(), +// ExperimentRunID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID(), +// Session: session, +// }); err != nil { +// return err +// } +// // 设置taskRun状态为已完成 +// taskRun.RunStatus = task.RunStatusDone +// // 更新taskRun +// err := p.taskRepo.UpdateTaskRun(ctx, taskRun) +// if err != nil { +// logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.ID, err) +// return err +// } +// return nil +//} From 1dccc37d46f2348a94da70472941a608ae596d41 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 15:16:46 +0800 Subject: [PATCH 336/462] fix --- .../taskexe/processor/auto_evaluate.go | 1482 ++++++++--------- .../service/taskexe/processor/data_reflow.go | 770 ++++----- .../task/service/taskexe/processor/utils.go | 48 + 3 files changed, 1153 insertions(+), 1147 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 21f32f97c..c129ce8cf 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -3,744 +3,744 @@ package processor -//import ( -// "context" -// "fmt" -// "strconv" -// "time" -// -// "github.com/apaxa-go/helper/strconvh" -// "github.com/bytedance/gg/gptr" -// "github.com/bytedance/sonic" -// "github.com/coze-dev/coze-loop/backend/infra/middleware/session" -// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" -// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" -// eval_target_d "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_target" -// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" -// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/eval_target" -// dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" -// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" -// tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" -// task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" -// obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" -// "github.com/coze-dev/coze-loop/backend/pkg/errorx" -// "github.com/coze-dev/coze-loop/backend/pkg/json" -// "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" -// "github.com/coze-dev/coze-loop/backend/pkg/lang/slices" -// "github.com/coze-dev/coze-loop/backend/pkg/logs" -// "github.com/coze-dev/cozeloop-go/spec/tracespec" -//) -// -//var _ taskexe.Processor = (*AutoEvaluteProcessor)(nil) -// -//type AutoEvaluteProcessor struct { -// evalSvc rpc.IEvaluatorRPCAdapter -// evaluationSvc rpc.IEvaluationRPCAdapter -// datasetServiceAdaptor *service.DatasetServiceAdaptor -// taskRepo repo.ITaskRepo -// taskRunRepo repo.ITaskRunRepo -//} -// -//func NewAutoEvaluteProcessor( -// datasetServiceProvider *service.DatasetServiceAdaptor, -// evalService rpc.IEvaluatorRPCAdapter, -// evaluationService rpc.IEvaluationRPCAdapter, -// taskRepo repo.ITaskRepo, -// taskRunRepo repo.ITaskRunRepo) *AutoEvaluteProcessor { -// return &AutoEvaluteProcessor{ -// datasetServiceAdaptor: datasetServiceProvider, -// evalSvc: evalService, -// evaluationSvc: evaluationService, -// taskRepo: taskRepo, -// taskRunRepo: taskRunRepo, -// } -//} -// -//func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any) error { -// cfg, ok := config.(*task.Task) -// if !ok { -// return taskexe.ErrInvalidConfig -// } -// if cfg.GetRule() != nil && cfg.GetRule().GetEffectiveTime() != nil { -// startAt := cfg.GetRule().GetEffectiveTime().GetStartAt() -// endAt := cfg.GetRule().GetEffectiveTime().GetEndAt() -// if startAt <= time.Now().Add(-10*time.Minute).UnixMilli() { -// return errorx.NewByCode(obErrorx.CommonInvalidParamCode) -// } -// if startAt >= endAt { -// return errorx.NewByCode(obErrorx.CommonInvalidParamCode) -// } -// } -// var evaluatorVersionIDs []int64 -// for _, autoEvaluateConfig := range cfg.GetTaskConfig().GetAutoEvaluateConfigs() { -// evaluatorVersionIDs = append(evaluatorVersionIDs, autoEvaluateConfig.GetEvaluatorVersionID()) -// } -// if len(evaluatorVersionIDs) == 0 { -// return errorx.NewByCode(obErrorx.CommonInvalidParamCode) -// } -// // 检查评估器版本是否合法 -// evaluators, _, err := p.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ -// WorkspaceID: cfg.GetWorkspaceID(), -// EvaluatorVersionIds: evaluatorVersionIDs, -// }) -// if err != nil { -// return errorx.NewByCode(obErrorx.CommonInvalidParamCode) -// } -// if len(evaluators) != len(evaluatorVersionIDs) { -// return errorx.NewByCode(obErrorx.CommonInvalidParamCode) -// } -// return nil -//} -// -//func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { -// cfg, ok := config.(*task_entity.TaskRun) -// if !ok { -// return taskexe.ErrInvalidConfig -// } -// taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) -// workspaceID := trigger.Task.GetWorkspaceID() -// session := getSession(ctx, trigger.Task) -// var mapping []*task.EvaluateFieldMapping -// for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { -// mapping = append(mapping, autoEvaluateConfig.FieldMappings...) -// } -// turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema()) -// if len(turns) == 0 { -// logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") -// return nil -// } -// taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) -// taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) -// p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) -// p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) -// if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || -// (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { -// logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) -// p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) -// p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) -// return nil -// } -// _, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ -// WorkspaceID: workspaceID, -// EvaluationSetID: taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), -// Items: []*eval_set.EvaluationSetItem{ -// { -// WorkspaceID: gptr.Of(workspaceID), -// EvaluationSetID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID()), -// SchemaID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchemaID()), -// Turns: turns, -// ItemKey: gptr.Of(trigger.Span.SpanID), -// }, -// }, -// SkipInvalidItems: gptr.Of(true), -// AllowPartialAdd: gptr.Of(true), -// ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), -// ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), -// Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), -// "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, -// "start_time": strconvh.FormatInt64(trigger.Span.StartTime), -// "task_id": strconvh.FormatInt64(trigger.Task.GetID()), -// "task_run_id": strconvh.FormatInt64(taskRun.ID), -// "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, -// Session: session, -// }) -// if err != nil { -// p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) -// p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) -// return err -// } -// return nil -//} -// -//func ToJSONString(ctx context.Context, obj interface{}) string { -// if obj == nil { -// return "" -// } -// jsonData, err := sonic.Marshal(obj) -// if err != nil { -// logs.CtxError(ctx, "JSON marshal error: %v", err) -// return "" -// } -// jsonStr := string(jsonData) -// return jsonStr -//} -// -//func resetStartTime(currentTime int64, originalStartTime int64, maxAliveTime int64) int64 { -// if currentTime > originalStartTime { -// // 计算需要跳过的周期数 -// timeDiff := currentTime - originalStartTime -// skipCycles := timeDiff / maxAliveTime -// -// // 跳过过期的时间段,直接计算新的周期开始时间 -// return originalStartTime + (skipCycles * maxAliveTime) -// } -// return originalStartTime -//} -// -//func getBasicEvaluationSetSchema(basicColumns []string) (*dataset0.DatasetSchema, []*expt.FieldMapping) { -// evaluationSetSchema := dataset0.NewDatasetSchema() -// var fromEvalSet []*expt.FieldMapping -// for _, column := range basicColumns { -// evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ -// Key: gptr.Of(column), -// Name: gptr.Of(column), -// Description: gptr.Of(column), -// ContentType: gptr.Of(common.ContentTypeText), -// TextSchema: gptr.Of("{\"type\": \"string\"}"), -// }) -// fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ -// FieldName: gptr.Of(column), -// FromFieldName: gptr.Of(column), -// }) -// } -// return evaluationSetSchema, fromEvalSet -//} -// -//// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -//// convertDatasetSchemaDTO2DO 转换数据集模式 -//func convertDatasetSchemaDTO2DO(schema *dataset0.DatasetSchema) entity.DatasetSchema { -// if schema == nil { -// return entity.DatasetSchema{} -// } -// -// result := entity.DatasetSchema{} -// -// if schema.IsSetFieldSchemas() { -// fieldSchemas := schema.GetFieldSchemas() -// result.FieldSchemas = make([]entity.FieldSchema, len(fieldSchemas)) -// for i, fs := range fieldSchemas { -// key := fs.GetKey() -// if key == "" { -// key = fs.GetName() -// } -// name := fs.GetName() -// description := fs.GetDescription() -// textSchema := fs.GetTextSchema() -// result.FieldSchemas[i] = entity.FieldSchema{ -// Key: &key, -// Name: name, -// Description: description, -// ContentType: convertContentTypeDTO2DO(fs.GetContentType()), -// TextSchema: textSchema, -// } -// } -// } -// -// return result -//} -// -//// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -//// convertContentTypeDTO2DO 转换内容类型 -//func convertContentTypeDTO2DO(contentType common.ContentType) entity.ContentType { -// switch contentType { -// case common.ContentTypeText: -// return entity.ContentType_Text -// case common.ContentTypeImage: -// return entity.ContentType_Image -// case common.ContentTypeAudio: -// return entity.ContentType_Audio -// case common.ContentTypeMultiPart: -// return entity.ContentType_MultiPart -// default: -// return entity.ContentType_Text -// } -//} -// -//func getCategory(taskType task.TaskType) entity.DatasetCategory { -// switch taskType { -// case task.TaskTypeAutoEval: -// return entity.DatasetCategory_Evaluation -// default: -// return entity.DatasetCategory_General -// } -//} -// -//// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -//func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, -// evaluationSetSchema string) (turns []*eval_set.Turn) { -// turns = make([]*eval_set.Turn, 0, len(spans)) -// for _, span := range spans { -// fieldData := buildItem(ctx, span, fieldMappings, evaluationSetSchema) -// if len(fieldData) == 0 { -// continue -// } -// turns = append(turns, &eval_set.Turn{ -// FieldDataList: fieldData, -// }) -// } -// return turns -//} -// -//func buildDatasetItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []entity.FieldMapping, -// workspaceID, taskID int64, dataset *entity.Dataset, -//) (successItems, failedItems, allItems []*entity.DatasetItem) { -// successItems = make([]*entity.DatasetItem, 0, len(spans)) -// failedItems = make([]*entity.DatasetItem, 0) -// allItems = make([]*entity.DatasetItem, 0, len(spans)) -// for i, span := range spans { -// item := buildDatasetItem(ctx, span, i, fieldMappings, workspaceID, taskID, dataset) -// allItems = append(allItems, item) -// if len(item.Error) > 0 { -// failedItems = append(failedItems, item) -// } else { -// successItems = append(successItems, item) -// } -// } -// -// return successItems, failedItems, allItems -//} -// -//func buildDatasetItem(ctx context.Context, span *loop_span.Span, i int, fieldMappings []entity.FieldMapping, workspaceID, taskID int64, -// dataset *entity.Dataset, -//) *entity.DatasetItem { -// item := entity.NewDatasetItem(workspaceID, dataset.ID, span) -// for _, mapping := range fieldMappings { -// value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) -// if err != nil { -// // 非json但使用了jsonpath,也不报错,置空 -// logs.CtxInfo(ctx, "Extract field failed, err:%v", err) -// } -// -// content, errCode := entity.GetContentInfo(ctx, mapping.FieldSchema.ContentType, value) -// if errCode == entity.DatasetErrorType_MismatchSchema { -// item.AddError("invalid multi part", entity.DatasetErrorType_MismatchSchema, nil) -// continue -// } -// -// // 前端传入的是Name,评测集需要的是key,需要做一下mapping -// key := dataset.GetFieldSchemaKeyByName(mapping.FieldSchema.Name) -// if key == "" { -// logs.CtxInfo(ctx, "Dataset field key is empty, name:%v", mapping.FieldSchema.Name) -// item.AddError("Dataset field key is empty", entity.DatasetErrorType_InternalError, nil) -// continue -// } -// item.AddFieldData(key, mapping.FieldSchema.Name, content) -// item.ItemKey = gptr.Of(fmt.Sprintf("%s_%s_%s", taskID, span.TraceID, span.SpanID)) -// } -// return item -//} -// -//// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -//func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, -// evaluationSetSchema string) []*eval_set.FieldData { -// var fieldDatas []*eval_set.FieldData -// fieldDatas = append(fieldDatas, &eval_set.FieldData{ -// Key: gptr.Of("trace_id"), -// Name: gptr.Of("trace_id"), -// Content: &common.Content{ -// ContentType: gptr.Of(common.ContentTypeText), -// Text: gptr.Of(span.TraceID), -// }, -// }) -// fieldDatas = append(fieldDatas, &eval_set.FieldData{ -// Key: gptr.Of("span_id"), -// Name: gptr.Of("span_id"), -// Content: &common.Content{ -// ContentType: gptr.Of(common.ContentTypeText), -// Text: gptr.Of(span.SpanID), -// }, -// }) -// for _, mapping := range fieldMappings { -// // 前端传入的是Name,评测集需要的是key,需要做一下mapping -// if mapping.EvalSetName == nil { -// logs.CtxInfo(ctx, "Evaluator field name is nil") -// continue -// } -// var evaluationSetSchemas []*eval_set.FieldSchema -// if evaluationSetSchema == "" { -// logs.CtxInfo(ctx, "Evaluation set schema is nil") -// continue -// } -// err := json.Unmarshal([]byte(evaluationSetSchema), &evaluationSetSchemas) -// if err != nil { -// logs.CtxInfo(ctx, "Unmarshal evaluation set schema failed, err:%v", err) -// continue -// } -// for _, fieldSchema := range evaluationSetSchemas { -// if fieldSchema.GetKey() == *mapping.EvalSetName { -// key := fieldSchema.GetKey() -// if key == "" { -// logs.CtxInfo(ctx, "Evaluator field key is empty, name:%v", *mapping.FieldSchema.Name) -// continue -// } -// value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) -// if err != nil { -// logs.CtxInfo(ctx, "Extract field failed, err:%v", err) -// continue -// } -// content, err := GetContentInfo(ctx, fieldSchema.GetContentType(), value) -// if err != nil { -// logs.CtxInfo(ctx, "GetContentInfo failed, err:%v", err) -// return nil -// } -// fieldDatas = append(fieldDatas, &eval_set.FieldData{ -// Key: gptr.Of(key), -// Name: gptr.Of(fieldSchema.GetName()), -// Content: content, -// }) -// } -// } -// } -// return fieldDatas -//} -// -//// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -//func GetContentInfo(ctx context.Context, contentType common.ContentType, value string) (*common.Content, error) { -// var content *common.Content -// switch contentType { -// case common.ContentTypeMultiPart: -// var parts []tracespec.ModelMessagePart -// err := json.Unmarshal([]byte(value), &parts) -// if err != nil { -// logs.CtxInfo(ctx, "Unmarshal multi part failed, err:%v", err) -// return nil, err -// } -// var multiPart []*common.Content -// for _, part := range parts { -// // 本期仅支持回流图片的多模态数据,非ImageURL信息的,打包放进text -// switch part.Type { -// case tracespec.ModelMessagePartTypeImage: -// if part.ImageURL == nil { -// continue -// } -// multiPart = append(multiPart, &common.Content{ -// ContentType: gptr.Of(common.ContentTypeImage), -// Image: &common.Image{ -// Name: gptr.Of(part.ImageURL.Name), -// URL: gptr.Of(part.ImageURL.URL), -// }, -// }) -// case tracespec.ModelMessagePartTypeText, tracespec.ModelMessagePartTypeFile: -// multiPart = append(multiPart, &common.Content{ -// ContentType: gptr.Of(common.ContentTypeText), -// Text: gptr.Of(part.Text), -// }) -// default: -// logs.CtxWarn(ctx, "Unsupported part type: %s", part.Type) -// return nil, err -// } -// } -// content = &common.Content{ -// ContentType: gptr.Of(common.ContentTypeMultiPart), -// MultiPart: multiPart, -// } -// default: -// content = &common.Content{ -// ContentType: gptr.Of(common.ContentTypeText), -// Text: gptr.Of(value), -// } -// } -// return content, nil -//} -// -//func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { -// taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) -// if err != nil { -// logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// if ShouldTriggerBackfill(currentTask) && taskRuns == nil { -// err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ -// CurrentTask: currentTask, -// RunType: task.TaskRunTypeBackFill, -// RunStartAt: time.Now().UnixMilli(), -// RunEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), -// }) -// if err != nil { -// logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) -// if err != nil { -// logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// } -// if ShouldTriggerNewData(ctx, currentTask) { -// var runStartAt, runEndAt int64 -// runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() -// if !currentTask.GetRule().GetSampler().GetIsCycle() { -// runEndAt = currentTask.GetRule().GetEffectiveTime().GetEndAt() -// } else { -// switch *currentTask.GetRule().GetSampler().CycleTimeUnit { -// case task.TimeUnitDay: -// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() -// case task.TimeUnitWeek: -// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() -// default: -// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() -// } -// } -// err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ -// CurrentTask: currentTask, -// RunType: task.TaskRunTypeNewData, -// RunStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), -// RunEndAt: runEndAt, -// }) -// err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) -// if err != nil { -// logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// } -// return nil -//} -// -//func (p *AutoEvaluteProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { -// switch taskOp { -// case task.TaskStatusSuccess: -// if currentTask.GetTaskStatus() != task.TaskStatusDisabled { -// *currentTask.TaskStatus = task.TaskStatusSuccess -// } -// case task.TaskStatusRunning: -// if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { -// *currentTask.TaskStatus = task.TaskStatusRunning -// } -// case task.TaskStatusDisabled: -// if currentTask.GetTaskStatus() != task.TaskStatusDisabled { -// *currentTask.TaskStatus = task.TaskStatusDisabled -// } -// case task.TaskStatusPending: -// if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { -// *currentTask.TaskStatus = task.TaskStatusPending -// } -// default: -// return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) -// } -// // 2、更新任务 -// taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") -// err := p.taskRepo.UpdateTask(ctx, taskPO) -// if err != nil { -// logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// return nil -//} -// -//func (p *AutoEvaluteProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { -// err := p.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ -// Task: param.Task, -// TaskRun: param.TaskRun, -// }) -// if err != nil { -// logs.CtxError(ctx, "OnFinishTaskRunChange failed, taskRun:%+v, err:%v", param.TaskRun, err) -// return err -// } -// if param.IsFinish { -// logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v", param.Task.GetID(), param.TaskRun) -// if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { -// logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) -// return err -// } -// } -// return nil -//} -// -//func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { -// //todo:[xun]加锁 -// currentTask := param.CurrentTask -// ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) -// sessionInfo := getSession(ctx, currentTask) -// var evaluationSetColumns []string -// var evaluatorVersionIds []int64 -// var evaluatorFieldMappings []*expt.EvaluatorFieldMapping -// evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id") -// autoEvaluateConfigs := currentTask.GetTaskConfig().GetAutoEvaluateConfigs() -// evaluationSetSchema, fromEvalSet := getBasicEvaluationSetSchema(evaluationSetColumns) -// for _, autoEvaluateConfig := range autoEvaluateConfigs { -// evaluatorVersionIds = append(evaluatorVersionIds, autoEvaluateConfig.EvaluatorVersionID) -// filedMappings := autoEvaluateConfig.GetFieldMappings() -// for _, fieldMapping := range filedMappings { -// if fieldMapping.GetFieldSchema() == nil { -// continue -// } -// fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ -// FieldName: gptr.Of(fieldMapping.GetFieldSchema().GetName()), -// FromFieldName: gptr.Of(fieldMapping.GetEvalSetName()), -// }) -// if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { -// continue -// } -// // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, -// evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ -// Key: gptr.Of(fieldMapping.GetEvalSetName()), -// Name: gptr.Of(fieldMapping.GetEvalSetName()), -// Description: gptr.Of(fieldMapping.TraceFieldJsonpath), -// ContentType: gptr.Of(fieldMapping.GetFieldSchema().GetContentType()), -// //DefaultDisplayFormat: gptr.Of(dataset.FieldDisplayFormat_PlainText), -// TextSchema: fieldMapping.GetFieldSchema().TextSchema, -// //Hidden: gptr.Of(false), -// }) -// evaluationSetColumns = append(evaluationSetColumns, fieldMapping.GetEvalSetName()) -// } -// -// evaluatorFieldMappings = append(evaluatorFieldMappings, &expt.EvaluatorFieldMapping{ -// EvaluatorVersionID: autoEvaluateConfig.GetEvaluatorVersionID(), -// FromEvalSet: fromEvalSet, -// }) -// } -// category := getCategory(currentTask.TaskType) -// schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) -// logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) -// var datasetName, exptName string -// if param.RunType == task.TaskRunTypeBackFill { -// datasetName = fmt.Sprintf("自动化任务评测集_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) -// exptName = fmt.Sprintf("自动化任务实验_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) -// } else { -// datasetName = fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) -// exptName = fmt.Sprintf("自动化任务实验_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) -// } -// // 1、创建评测集 -// datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( -// 0, -// currentTask.GetWorkspaceID(), -// datasetName, -// category, -// schema, -// sessionInfo, -// )) -// if err != nil { -// logs.CtxError(ctx, "CreateDataset failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) -// return err -// } -// logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) -// // 2、创建实验 -// maxAliveTime := param.RunEndAt - param.RunStartAt -// submitExperimentReq := rpc.SubmitExperimentReq{ -// WorkspaceID: currentTask.GetWorkspaceID(), -// EvalSetVersionID: gptr.Of(datasetID), -// EvaluatorVersionIds: evaluatorVersionIds, -// Name: ptr.Of(exptName), -// Desc: gptr.Of("自动化任务实验"), -// EvalSetID: gptr.Of(datasetID), -// EvaluatorFieldMapping: evaluatorFieldMappings, -// TargetFieldMapping: &expt.TargetFieldMapping{ -// FromEvalSet: []*expt.FieldMapping{}, -// }, -// CreateEvalTargetParam: &eval_target.CreateEvalTargetParam{ -// SourceTargetID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), -// EvalTargetType: gptr.Of(eval_target_d.EvalTargetType_Trace), -// }, -// ExptType: gptr.Of(expt.ExptType_Online), -// MaxAliveTime: gptr.Of(maxAliveTime), -// SourceType: gptr.Of(expt.SourceType_AutoTask), -// SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), -// Session: sessionInfo, -// } -// logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) -// exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) -// if err != nil { -// logs.CtxError(ctx, "SubmitExperiment failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) -// return err -// } -// logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) -// -// evaluationSetConfig, err := p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, currentTask.GetWorkspaceID(), datasetID, category) -// if err != nil { -// logs.CtxError(ctx, "[task-debug] GetEvaluationSet err:%v", err) -// return err -// } -// //effectiveTime := currentTask.GetRule().GetEffectiveTime() -// -// //var cycleStartAt, cycleEndAt, endAt int64 -// //currentTime := time.Now().UnixMilli() -// // -// //if effectiveTime.StartAt != nil && effectiveTime.EndAt != nil { -// // endAt = effectiveTime.GetEndAt() -// // if len(taskConfig.TaskRuns) == 0 { -// // // 首次创建 taskrun,从任务生效时间开始 -// // cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) -// // } else { -// // // 找到最新的 cycleEndAt 作为新的 cycleStartAt -// // for _, run := range taskConfig.TaskRuns { -// // if run.RunStartAt.UnixMilli() > cycleStartAt { -// // cycleStartAt = run.RunEndAt.UnixMilli() -// // } -// // } -// // cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) -// // } -// // cycleEndAt = cycleStartAt + maxAliveTime -// // -// // // 确保周期开始时间不早于任务生效时间 -// // if cycleStartAt < effectiveTime.GetStartAt() { -// // cycleStartAt = effectiveTime.GetStartAt() -// // cycleEndAt = cycleStartAt + maxAliveTime -// // } -// // -// // // 确保周期结束时间不晚于任务结束时间 -// // if cycleEndAt > effectiveTime.GetEndAt() { -// // cycleEndAt = effectiveTime.GetEndAt() -// // } -// //} -// -// // 5、创建 taskrun -// taskRunConfig := &task.TaskRunConfig{ -// AutoEvaluateRunConfig: &task.AutoEvaluateRunConfig{ -// ExptID: exptID, -// ExptRunID: exptRunID, -// EvalID: datasetID, -// SchemaID: evaluationSetConfig.DatasetVersion.DatasetSchema.ID, -// Schema: ptr.Of(ToJSONString(ctx, evaluationSetConfig.DatasetVersion.DatasetSchema.FieldSchemas)), -// EndAt: param.RunEndAt, -// CycleStartAt: param.RunStartAt, -// CycleEndAt: param.RunEndAt, -// Status: task.TaskStatusRunning, -// }, -// } -// taskRun := &task_entity.TaskRun{ -// TaskID: currentTask.GetID(), -// WorkspaceID: currentTask.GetWorkspaceID(), -// TaskType: param.RunType, -// RunStatus: task.RunStatusRunning, -// RunStartAt: time.UnixMilli(param.RunStartAt), -// RunEndAt: time.UnixMilli(param.RunEndAt), -// CreatedAt: time.Now(), -// UpdatedAt: time.Now(), -// RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), -// } -// id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) -// if err != nil { -// logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) -// return err -// } -// taskRun.ID = id -// taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) -// if err != nil { -// return err -// } -// taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) -// err = p.taskRepo.UpdateTask(ctx, taskConfig) -// if err != nil { -// return err -// } -// return nil -//} -// -//func (p *AutoEvaluteProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { -// session := getSession(ctx, param.Task) -// taskRun := param.TaskRun -// taskRunPO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) -// if err := p.evaluationSvc.FinishExperiment(ctx, &rpc.FinishExperimentReq{ -// WorkspaceID: param.Task.GetWorkspaceID(), -// ExperimentID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID(), -// ExperimentRunID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID(), -// Session: session, -// }); err != nil { -// return err -// } -// // 设置taskRun状态为已完成 -// taskRun.RunStatus = task.RunStatusDone -// // 更新taskRun -// err := p.taskRepo.UpdateTaskRun(ctx, taskRun) -// if err != nil { -// logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.ID, err) -// return err -// } -// return nil -//} +import ( + "context" + "fmt" + "strconv" + "time" + + "github.com/apaxa-go/helper/strconvh" + "github.com/bytedance/gg/gptr" + "github.com/bytedance/sonic" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" + eval_target_d "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_target" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/eval_target" + dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" + "github.com/coze-dev/coze-loop/backend/pkg/lang/slices" + "github.com/coze-dev/coze-loop/backend/pkg/logs" + "github.com/coze-dev/cozeloop-go/spec/tracespec" +) + +var _ taskexe.Processor = (*AutoEvaluteProcessor)(nil) + +type AutoEvaluteProcessor struct { + evalSvc rpc.IEvaluatorRPCAdapter + evaluationSvc rpc.IEvaluationRPCAdapter + datasetServiceAdaptor *service.DatasetServiceAdaptor + taskRepo repo.ITaskRepo + taskRunRepo repo.ITaskRunRepo +} + +func NewAutoEvaluteProcessor( + datasetServiceProvider *service.DatasetServiceAdaptor, + evalService rpc.IEvaluatorRPCAdapter, + evaluationService rpc.IEvaluationRPCAdapter, + taskRepo repo.ITaskRepo, + taskRunRepo repo.ITaskRunRepo) *AutoEvaluteProcessor { + return &AutoEvaluteProcessor{ + datasetServiceAdaptor: datasetServiceProvider, + evalSvc: evalService, + evaluationSvc: evaluationService, + taskRepo: taskRepo, + taskRunRepo: taskRunRepo, + } +} + +func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any) error { + cfg, ok := config.(*task.Task) + if !ok { + return taskexe.ErrInvalidConfig + } + if cfg.GetRule() != nil && cfg.GetRule().GetEffectiveTime() != nil { + startAt := cfg.GetRule().GetEffectiveTime().GetStartAt() + endAt := cfg.GetRule().GetEffectiveTime().GetEndAt() + if startAt <= time.Now().Add(-10*time.Minute).UnixMilli() { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } + if startAt >= endAt { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } + } + var evaluatorVersionIDs []int64 + for _, autoEvaluateConfig := range cfg.GetTaskConfig().GetAutoEvaluateConfigs() { + evaluatorVersionIDs = append(evaluatorVersionIDs, autoEvaluateConfig.GetEvaluatorVersionID()) + } + if len(evaluatorVersionIDs) == 0 { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } + // 检查评估器版本是否合法 + evaluators, _, err := p.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ + WorkspaceID: cfg.GetWorkspaceID(), + EvaluatorVersionIds: evaluatorVersionIDs, + }) + if err != nil { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } + if len(evaluators) != len(evaluatorVersionIDs) { + return errorx.NewByCode(obErrorx.CommonInvalidParamCode) + } + return nil +} + +func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { + cfg, ok := config.(*task_entity.TaskRun) + if !ok { + return taskexe.ErrInvalidConfig + } + taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) + workspaceID := trigger.Task.GetWorkspaceID() + session := getSession(ctx, trigger.Task) + var mapping []*task.EvaluateFieldMapping + for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { + mapping = append(mapping, autoEvaluateConfig.FieldMappings...) + } + turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema()) + if len(turns) == 0 { + logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") + return nil + } + taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) + taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) + p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || + (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { + logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) + p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) + p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + return nil + } + _, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ + WorkspaceID: workspaceID, + EvaluationSetID: taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID(), + Items: []*eval_set.EvaluationSetItem{ + { + WorkspaceID: gptr.Of(workspaceID), + EvaluationSetID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetEvalID()), + SchemaID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchemaID()), + Turns: turns, + ItemKey: gptr.Of(trigger.Span.SpanID), + }, + }, + SkipInvalidItems: gptr.Of(true), + AllowPartialAdd: gptr.Of(true), + ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), + ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), + Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), + "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, + "start_time": strconvh.FormatInt64(trigger.Span.StartTime), + "task_id": strconvh.FormatInt64(trigger.Task.GetID()), + "task_run_id": strconvh.FormatInt64(taskRun.ID), + "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, + Session: session, + }) + if err != nil { + p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) + p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + return err + } + return nil +} + +func ToJSONString(ctx context.Context, obj interface{}) string { + if obj == nil { + return "" + } + jsonData, err := sonic.Marshal(obj) + if err != nil { + logs.CtxError(ctx, "JSON marshal error: %v", err) + return "" + } + jsonStr := string(jsonData) + return jsonStr +} + +func resetStartTime(currentTime int64, originalStartTime int64, maxAliveTime int64) int64 { + if currentTime > originalStartTime { + // 计算需要跳过的周期数 + timeDiff := currentTime - originalStartTime + skipCycles := timeDiff / maxAliveTime + + // 跳过过期的时间段,直接计算新的周期开始时间 + return originalStartTime + (skipCycles * maxAliveTime) + } + return originalStartTime +} + +func getBasicEvaluationSetSchema(basicColumns []string) (*dataset0.DatasetSchema, []*expt.FieldMapping) { + evaluationSetSchema := dataset0.NewDatasetSchema() + var fromEvalSet []*expt.FieldMapping + for _, column := range basicColumns { + evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ + Key: gptr.Of(column), + Name: gptr.Of(column), + Description: gptr.Of(column), + ContentType: gptr.Of(common.ContentTypeText), + TextSchema: gptr.Of("{\"type\": \"string\"}"), + }) + fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ + FieldName: gptr.Of(column), + FromFieldName: gptr.Of(column), + }) + } + return evaluationSetSchema, fromEvalSet +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +// convertDatasetSchemaDTO2DO 转换数据集模式 +func convertDatasetSchemaDTO2DO(schema *dataset0.DatasetSchema) entity.DatasetSchema { + if schema == nil { + return entity.DatasetSchema{} + } + + result := entity.DatasetSchema{} + + if schema.IsSetFieldSchemas() { + fieldSchemas := schema.GetFieldSchemas() + result.FieldSchemas = make([]entity.FieldSchema, len(fieldSchemas)) + for i, fs := range fieldSchemas { + key := fs.GetKey() + if key == "" { + key = fs.GetName() + } + name := fs.GetName() + description := fs.GetDescription() + textSchema := fs.GetTextSchema() + result.FieldSchemas[i] = entity.FieldSchema{ + Key: &key, + Name: name, + Description: description, + ContentType: convertContentTypeDTO2DO(fs.GetContentType()), + TextSchema: textSchema, + } + } + } + + return result +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +// convertContentTypeDTO2DO 转换内容类型 +func convertContentTypeDTO2DO(contentType common.ContentType) entity.ContentType { + switch contentType { + case common.ContentTypeText: + return entity.ContentType_Text + case common.ContentTypeImage: + return entity.ContentType_Image + case common.ContentTypeAudio: + return entity.ContentType_Audio + case common.ContentTypeMultiPart: + return entity.ContentType_MultiPart + default: + return entity.ContentType_Text + } +} + +func getCategory(taskType task.TaskType) entity.DatasetCategory { + switch taskType { + case task.TaskTypeAutoEval: + return entity.DatasetCategory_Evaluation + default: + return entity.DatasetCategory_General + } +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, + evaluationSetSchema string) (turns []*eval_set.Turn) { + turns = make([]*eval_set.Turn, 0, len(spans)) + for _, span := range spans { + fieldData := buildItem(ctx, span, fieldMappings, evaluationSetSchema) + if len(fieldData) == 0 { + continue + } + turns = append(turns, &eval_set.Turn{ + FieldDataList: fieldData, + }) + } + return turns +} + +func buildDatasetItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []entity.FieldMapping, + workspaceID, taskID int64, dataset *entity.Dataset, +) (successItems, failedItems, allItems []*entity.DatasetItem) { + successItems = make([]*entity.DatasetItem, 0, len(spans)) + failedItems = make([]*entity.DatasetItem, 0) + allItems = make([]*entity.DatasetItem, 0, len(spans)) + for i, span := range spans { + item := buildDatasetItem(ctx, span, i, fieldMappings, workspaceID, taskID, dataset) + allItems = append(allItems, item) + if len(item.Error) > 0 { + failedItems = append(failedItems, item) + } else { + successItems = append(successItems, item) + } + } + + return successItems, failedItems, allItems +} + +func buildDatasetItem(ctx context.Context, span *loop_span.Span, i int, fieldMappings []entity.FieldMapping, workspaceID, taskID int64, + dataset *entity.Dataset, +) *entity.DatasetItem { + item := entity.NewDatasetItem(workspaceID, dataset.ID, span) + for _, mapping := range fieldMappings { + value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) + if err != nil { + // 非json但使用了jsonpath,也不报错,置空 + logs.CtxInfo(ctx, "Extract field failed, err:%v", err) + } + + content, errCode := entity.GetContentInfo(ctx, mapping.FieldSchema.ContentType, value) + if errCode == entity.DatasetErrorType_MismatchSchema { + item.AddError("invalid multi part", entity.DatasetErrorType_MismatchSchema, nil) + continue + } + + // 前端传入的是Name,评测集需要的是key,需要做一下mapping + key := dataset.GetFieldSchemaKeyByName(mapping.FieldSchema.Name) + if key == "" { + logs.CtxInfo(ctx, "Dataset field key is empty, name:%v", mapping.FieldSchema.Name) + item.AddError("Dataset field key is empty", entity.DatasetErrorType_InternalError, nil) + continue + } + item.AddFieldData(key, mapping.FieldSchema.Name, content) + item.ItemKey = gptr.Of(fmt.Sprintf("%s_%s_%s", taskID, span.TraceID, span.SpanID)) + } + return item +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, + evaluationSetSchema string) []*eval_set.FieldData { + var fieldDatas []*eval_set.FieldData + fieldDatas = append(fieldDatas, &eval_set.FieldData{ + Key: gptr.Of("trace_id"), + Name: gptr.Of("trace_id"), + Content: &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(span.TraceID), + }, + }) + fieldDatas = append(fieldDatas, &eval_set.FieldData{ + Key: gptr.Of("span_id"), + Name: gptr.Of("span_id"), + Content: &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(span.SpanID), + }, + }) + for _, mapping := range fieldMappings { + // 前端传入的是Name,评测集需要的是key,需要做一下mapping + if mapping.EvalSetName == nil { + logs.CtxInfo(ctx, "Evaluator field name is nil") + continue + } + var evaluationSetSchemas []*eval_set.FieldSchema + if evaluationSetSchema == "" { + logs.CtxInfo(ctx, "Evaluation set schema is nil") + continue + } + err := json.Unmarshal([]byte(evaluationSetSchema), &evaluationSetSchemas) + if err != nil { + logs.CtxInfo(ctx, "Unmarshal evaluation set schema failed, err:%v", err) + continue + } + for _, fieldSchema := range evaluationSetSchemas { + if fieldSchema.GetKey() == *mapping.EvalSetName { + key := fieldSchema.GetKey() + if key == "" { + logs.CtxInfo(ctx, "Evaluator field key is empty, name:%v", *mapping.FieldSchema.Name) + continue + } + value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) + if err != nil { + logs.CtxInfo(ctx, "Extract field failed, err:%v", err) + continue + } + content, err := GetContentInfo(ctx, fieldSchema.GetContentType(), value) + if err != nil { + logs.CtxInfo(ctx, "GetContentInfo failed, err:%v", err) + return nil + } + fieldDatas = append(fieldDatas, &eval_set.FieldData{ + Key: gptr.Of(key), + Name: gptr.Of(fieldSchema.GetName()), + Content: content, + }) + } + } + } + return fieldDatas +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +func GetContentInfo(ctx context.Context, contentType common.ContentType, value string) (*common.Content, error) { + var content *common.Content + switch contentType { + case common.ContentTypeMultiPart: + var parts []tracespec.ModelMessagePart + err := json.Unmarshal([]byte(value), &parts) + if err != nil { + logs.CtxInfo(ctx, "Unmarshal multi part failed, err:%v", err) + return nil, err + } + var multiPart []*common.Content + for _, part := range parts { + // 本期仅支持回流图片的多模态数据,非ImageURL信息的,打包放进text + switch part.Type { + case tracespec.ModelMessagePartTypeImage: + if part.ImageURL == nil { + continue + } + multiPart = append(multiPart, &common.Content{ + ContentType: gptr.Of(common.ContentTypeImage), + Image: &common.Image{ + Name: gptr.Of(part.ImageURL.Name), + URL: gptr.Of(part.ImageURL.URL), + }, + }) + case tracespec.ModelMessagePartTypeText, tracespec.ModelMessagePartTypeFile: + multiPart = append(multiPart, &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(part.Text), + }) + default: + logs.CtxWarn(ctx, "Unsupported part type: %s", part.Type) + return nil, err + } + } + content = &common.Content{ + ContentType: gptr.Of(common.ContentTypeMultiPart), + MultiPart: multiPart, + } + default: + content = &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(value), + } + } + return content, nil +} + +func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { + taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) + if err != nil { + logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + if ShouldTriggerBackfill(currentTask) && taskRuns == nil { + err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: currentTask, + RunType: task.TaskRunTypeBackFill, + RunStartAt: time.Now().UnixMilli(), + RunEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), + }) + if err != nil { + logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + } + if ShouldTriggerNewData(ctx, currentTask) { + var runStartAt, runEndAt int64 + runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() + if !currentTask.GetRule().GetSampler().GetIsCycle() { + runEndAt = currentTask.GetRule().GetEffectiveTime().GetEndAt() + } else { + switch *currentTask.GetRule().GetSampler().CycleTimeUnit { + case task.TimeUnitDay: + runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() + case task.TimeUnitWeek: + runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() + default: + runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() + } + } + err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: currentTask, + RunType: task.TaskRunTypeNewData, + RunStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), + RunEndAt: runEndAt, + }) + err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) + if err != nil { + logs.CtxError(ctx, "OnCreateTaskChange failed, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + } + return nil +} + +func (p *AutoEvaluteProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { + switch taskOp { + case task.TaskStatusSuccess: + if currentTask.GetTaskStatus() != task.TaskStatusDisabled { + *currentTask.TaskStatus = task.TaskStatusSuccess + } + case task.TaskStatusRunning: + if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { + *currentTask.TaskStatus = task.TaskStatusRunning + } + case task.TaskStatusDisabled: + if currentTask.GetTaskStatus() != task.TaskStatusDisabled { + *currentTask.TaskStatus = task.TaskStatusDisabled + } + case task.TaskStatusPending: + if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { + *currentTask.TaskStatus = task.TaskStatusPending + } + default: + return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) + } + // 2、更新任务 + taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") + err := p.taskRepo.UpdateTask(ctx, taskPO) + if err != nil { + logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) + return err + } + return nil +} + +func (p *AutoEvaluteProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { + err := p.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ + Task: param.Task, + TaskRun: param.TaskRun, + }) + if err != nil { + logs.CtxError(ctx, "OnFinishTaskRunChange failed, taskRun:%+v, err:%v", param.TaskRun, err) + return err + } + if param.IsFinish { + logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v", param.Task.GetID(), param.TaskRun) + if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { + logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) + return err + } + } + return nil +} + +func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { + //todo:[xun]加锁 + currentTask := param.CurrentTask + ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) + sessionInfo := getSession(ctx, currentTask) + var evaluationSetColumns []string + var evaluatorVersionIds []int64 + var evaluatorFieldMappings []*expt.EvaluatorFieldMapping + evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id") + autoEvaluateConfigs := currentTask.GetTaskConfig().GetAutoEvaluateConfigs() + evaluationSetSchema, fromEvalSet := getBasicEvaluationSetSchema(evaluationSetColumns) + for _, autoEvaluateConfig := range autoEvaluateConfigs { + evaluatorVersionIds = append(evaluatorVersionIds, autoEvaluateConfig.EvaluatorVersionID) + filedMappings := autoEvaluateConfig.GetFieldMappings() + for _, fieldMapping := range filedMappings { + if fieldMapping.GetFieldSchema() == nil { + continue + } + fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ + FieldName: gptr.Of(fieldMapping.GetFieldSchema().GetName()), + FromFieldName: gptr.Of(fieldMapping.GetEvalSetName()), + }) + if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { + continue + } + // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, + evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ + Key: gptr.Of(fieldMapping.GetEvalSetName()), + Name: gptr.Of(fieldMapping.GetEvalSetName()), + Description: gptr.Of(fieldMapping.TraceFieldJsonpath), + ContentType: gptr.Of(fieldMapping.GetFieldSchema().GetContentType()), + //DefaultDisplayFormat: gptr.Of(dataset.FieldDisplayFormat_PlainText), + TextSchema: fieldMapping.GetFieldSchema().TextSchema, + //Hidden: gptr.Of(false), + }) + evaluationSetColumns = append(evaluationSetColumns, fieldMapping.GetEvalSetName()) + } + + evaluatorFieldMappings = append(evaluatorFieldMappings, &expt.EvaluatorFieldMapping{ + EvaluatorVersionID: autoEvaluateConfig.GetEvaluatorVersionID(), + FromEvalSet: fromEvalSet, + }) + } + category := getCategory(currentTask.TaskType) + schema := convertDatasetSchemaDTO2DO(evaluationSetSchema) + logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) + var datasetName, exptName string + if param.RunType == task.TaskRunTypeBackFill { + datasetName = fmt.Sprintf("自动化任务评测集_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("自动化任务实验_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + } else { + datasetName = fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("自动化任务实验_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + } + // 1、创建评测集 + datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( + 0, + currentTask.GetWorkspaceID(), + datasetName, + category, + schema, + sessionInfo, + )) + if err != nil { + logs.CtxError(ctx, "CreateDataset failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) + return err + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) + // 2、创建实验 + maxAliveTime := param.RunEndAt - param.RunStartAt + submitExperimentReq := rpc.SubmitExperimentReq{ + WorkspaceID: currentTask.GetWorkspaceID(), + EvalSetVersionID: gptr.Of(datasetID), + EvaluatorVersionIds: evaluatorVersionIds, + Name: ptr.Of(exptName), + Desc: gptr.Of("自动化任务实验"), + EvalSetID: gptr.Of(datasetID), + EvaluatorFieldMapping: evaluatorFieldMappings, + TargetFieldMapping: &expt.TargetFieldMapping{ + FromEvalSet: []*expt.FieldMapping{}, + }, + CreateEvalTargetParam: &eval_target.CreateEvalTargetParam{ + SourceTargetID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), + EvalTargetType: gptr.Of(eval_target_d.EvalTargetType_Trace), + }, + ExptType: gptr.Of(expt.ExptType_Online), + MaxAliveTime: gptr.Of(maxAliveTime), + SourceType: gptr.Of(expt.SourceType_AutoTask), + SourceID: gptr.Of(strconvh.FormatInt64(currentTask.GetID())), + Session: sessionInfo, + } + logs.CtxInfo(ctx, "[auto_task] SubmitExperiment:%+v", submitExperimentReq) + exptID, exptRunID, err := p.evaluationSvc.SubmitExperiment(ctx, &submitExperimentReq) + if err != nil { + logs.CtxError(ctx, "SubmitExperiment failed, workspace_id=%d, err=%#v", currentTask.GetWorkspaceID(), err) + return err + } + logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, exptID:%d, exptRunID:%d", exptID, exptRunID) + + evaluationSetConfig, err := p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, currentTask.GetWorkspaceID(), datasetID, category) + if err != nil { + logs.CtxError(ctx, "[task-debug] GetEvaluationSet err:%v", err) + return err + } + //effectiveTime := currentTask.GetRule().GetEffectiveTime() + + //var cycleStartAt, cycleEndAt, endAt int64 + //currentTime := time.Now().UnixMilli() + // + //if effectiveTime.StartAt != nil && effectiveTime.EndAt != nil { + // endAt = effectiveTime.GetEndAt() + // if len(taskConfig.TaskRuns) == 0 { + // // 首次创建 taskrun,从任务生效时间开始 + // cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) + // } else { + // // 找到最新的 cycleEndAt 作为新的 cycleStartAt + // for _, run := range taskConfig.TaskRuns { + // if run.RunStartAt.UnixMilli() > cycleStartAt { + // cycleStartAt = run.RunEndAt.UnixMilli() + // } + // } + // cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) + // } + // cycleEndAt = cycleStartAt + maxAliveTime + // + // // 确保周期开始时间不早于任务生效时间 + // if cycleStartAt < effectiveTime.GetStartAt() { + // cycleStartAt = effectiveTime.GetStartAt() + // cycleEndAt = cycleStartAt + maxAliveTime + // } + // + // // 确保周期结束时间不晚于任务结束时间 + // if cycleEndAt > effectiveTime.GetEndAt() { + // cycleEndAt = effectiveTime.GetEndAt() + // } + //} + + // 5、创建 taskrun + taskRunConfig := &task.TaskRunConfig{ + AutoEvaluateRunConfig: &task.AutoEvaluateRunConfig{ + ExptID: exptID, + ExptRunID: exptRunID, + EvalID: datasetID, + SchemaID: evaluationSetConfig.DatasetVersion.DatasetSchema.ID, + Schema: ptr.Of(ToJSONString(ctx, evaluationSetConfig.DatasetVersion.DatasetSchema.FieldSchemas)), + EndAt: param.RunEndAt, + CycleStartAt: param.RunStartAt, + CycleEndAt: param.RunEndAt, + Status: task.TaskStatusRunning, + }, + } + taskRun := &task_entity.TaskRun{ + TaskID: currentTask.GetID(), + WorkspaceID: currentTask.GetWorkspaceID(), + TaskType: param.RunType, + RunStatus: task.RunStatusRunning, + RunStartAt: time.UnixMilli(param.RunStartAt), + RunEndAt: time.UnixMilli(param.RunEndAt), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), + } + id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) + if err != nil { + logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) + return err + } + taskRun.ID = id + taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) + if err != nil { + return err + } + taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) + err = p.taskRepo.UpdateTask(ctx, taskConfig) + if err != nil { + return err + } + return nil +} + +func (p *AutoEvaluteProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { + session := getSession(ctx, param.Task) + taskRun := param.TaskRun + taskRunPO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) + if err := p.evaluationSvc.FinishExperiment(ctx, &rpc.FinishExperimentReq{ + WorkspaceID: param.Task.GetWorkspaceID(), + ExperimentID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID(), + ExperimentRunID: taskRunPO.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID(), + Session: session, + }); err != nil { + return err + } + // 设置taskRun状态为已完成 + taskRun.RunStatus = task.RunStatusDone + // 更新taskRun + err := p.taskRepo.UpdateTaskRun(ctx, taskRun) + if err != nil { + logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.ID, err) + return err + } + return nil +} diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go index 22729f858..ae25c6fb5 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go @@ -3,409 +3,367 @@ package processor -import ( - "context" - "fmt" - "time" - - "github.com/coze-dev/coze-loop/backend/infra/middleware/session" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" - dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" - tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" - task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" - obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" - "github.com/coze-dev/coze-loop/backend/pkg/errorx" - "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" - "github.com/coze-dev/coze-loop/backend/pkg/logs" -) - -var _ taskexe.Processor = (*DataReflowProcessor)(nil) - -type DataReflowProcessor struct { - datasetServiceAdaptor *service.DatasetServiceAdaptor - taskRepo repo.ITaskRepo - taskRunRepo repo.ITaskRunRepo -} - -func NewDataReflowProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, - taskRepo repo.ITaskRepo, - taskRunRepo repo.ITaskRunRepo) *DataReflowProcessor { - return &DataReflowProcessor{ - datasetServiceAdaptor: datasetServiceProvider, - taskRepo: taskRepo, - taskRunRepo: taskRunRepo, - } -} - -func (p *DataReflowProcessor) ValidateConfig(ctx context.Context, config any) error { - cfg, ok := config.(*task.Task) - if !ok { - return taskexe.ErrInvalidConfig - } - if cfg.GetTaskConfig().GetDataReflowConfig() == nil || len(cfg.GetTaskConfig().GetDataReflowConfig()) == 0 { - return taskexe.ErrInvalidConfig - } - - // todo:[xun]1、数据集是否存在,2、数据集是否重名 - return nil -} - -func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { - cfg, ok := config.(*task_entity.TaskRun) - if !ok { - return taskexe.ErrInvalidConfig - } - taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) - - taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) - taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - - p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) - p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - p.taskRepo.IncrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) - - if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || - (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { - logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) - p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) - p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - p.taskRepo.DecrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) - return nil - } - ctx = session.WithCtxUser(ctx, &session.User{ID: *trigger.Task.BaseInfo.CreatedBy.UserID}) - workspaceID := trigger.Task.GetWorkspaceID() - sessionInfo := getSession(ctx, trigger.Task) - var mapping []entity.FieldMapping - for _, dataReflowConfig := range trigger.Task.TaskConfig.DataReflowConfig { - mapping = ConvertFieldMappingsDTO2DO(dataReflowConfig.FieldMappings) - } - - category := entity.DatasetCategory_General - successItems, _, _ := buildDatasetItems(ctx, []*loop_span.Span{trigger.Span}, mapping, workspaceID, *trigger.Task.ID, entity.NewDataset( - taskRun.TaskRunConfig.GetDataReflowRunConfig().GetDatasetID(), - workspaceID, - "", - category, - convertDatasetSchemaDTO2DO(trigger.Task.TaskConfig.DataReflowConfig[0].GetDatasetSchema()), - sessionInfo, - )) - _, _, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, taskRun.TaskRunConfig.DataReflowRunConfig.DatasetID, category, successItems) - if err != nil { - logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor Invoke, AddDatasetItems err, taskID:%d, err:%v", *trigger.Task.ID, err) - p.taskRepo.IncrTaskRunFailCount(ctx, *trigger.Task.ID, taskRun.ID) - return err - } - - return nil -} - -func ConvertFieldMappingsDTO2DO(mappings []*dataset0.FieldMapping) []entity.FieldMapping { - if len(mappings) == 0 { - return nil - } - - result := make([]entity.FieldMapping, len(mappings)) - for i, mapping := range mappings { - result[i] = entity.FieldMapping{ - FieldSchema: entity.FieldSchema{ - Key: mapping.GetFieldSchema().Key, - Name: mapping.GetFieldSchema().GetName(), - Description: mapping.GetFieldSchema().GetDescription(), - ContentType: convertContentTypeDTO2DO(mapping.GetFieldSchema().GetContentType()), - TextSchema: mapping.GetFieldSchema().GetTextSchema(), - }, - TraceFieldKey: mapping.GetTraceFieldKey(), - TraceFieldJsonpath: mapping.GetTraceFieldJsonpath(), - } - } - - return result -} - -// shouldTriggerBackfill 判断是否需要发送历史回溯MQ -func ShouldTriggerBackfill(taskDO *task.Task) bool { - // 检查任务类型 - taskType := taskDO.GetTaskType() - if taskType != task.TaskTypeAutoEval && taskType != task.TaskTypeAutoDataReflow { - return false - } - - // 检查回填时间配置 - rule := taskDO.GetRule() - if rule == nil { - return false - } - - backfillTime := rule.GetBackfillEffectiveTime() - if backfillTime == nil { - return false - } - - return backfillTime.GetStartAt() > 0 && - backfillTime.GetEndAt() > 0 && - backfillTime.GetStartAt() < backfillTime.GetEndAt() -} - -func ShouldTriggerNewData(ctx context.Context, taskDO *task.Task) bool { - // 检查任务类型 - taskType := taskDO.GetTaskType() - if taskType != task.TaskTypeAutoEval && taskType != task.TaskTypeAutoDataReflow { - return false - } - rule := taskDO.GetRule() - if rule == nil { - return false - } - - effectiveTime := rule.GetEffectiveTime() - if effectiveTime == nil { - return false - } - logs.CtxInfo(ctx, "[auto_task] ShouldTriggerNewData, endAt:%d, startAt:%d", effectiveTime.GetEndAt(), effectiveTime.GetStartAt()) - - return effectiveTime.GetEndAt() > 0 && - effectiveTime.GetStartAt() > 0 && - effectiveTime.GetStartAt() < effectiveTime.GetEndAt() && - time.Now().After(time.UnixMilli(effectiveTime.GetStartAt())) -} -func (p *DataReflowProcessor) createOrUpdateDataset(ctx context.Context, workspaceID int64, category entity.DatasetCategory, dataReflowConfig *task.DataReflowConfig, session *common.Session) (*entity.Dataset, error) { - var err error - var datasetID int64 - - if dataReflowConfig.GetDatasetID() == 0 { - if dataReflowConfig.DatasetName == nil || *dataReflowConfig.DatasetName == "" { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("task name exist")) - } - if len(dataReflowConfig.DatasetSchema.FieldSchemas) == 0 { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("dataset schema is empty")) - } - - schema := convertDatasetSchemaDTO2DO(dataReflowConfig.GetDatasetSchema()) - datasetID, err = p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( - 0, - workspaceID, - dataReflowConfig.GetDatasetName(), - category, - schema, - session, - )) - if err != nil { - return nil, err - } - } else { - if dataReflowConfig.DatasetID == nil { - return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("dataset id is nil")) - } - datasetID = *dataReflowConfig.DatasetID - needUpdate := false - for _, schema := range dataReflowConfig.DatasetSchema.FieldSchemas { - if schema.Key == nil || *schema.Key == "" { - needUpdate = true - break - } - } - if needUpdate { - if err := p.datasetServiceAdaptor.GetDatasetProvider(category).UpdateDatasetSchema(ctx, entity.NewDataset( - datasetID, - workspaceID, - "", - category, - convertDatasetSchemaDTO2DO(dataReflowConfig.DatasetSchema), - nil, - )); err != nil { - return nil, err - } - } - } - - // 新增或修改评测集后,都需要重新查询一次,拿到fieldSchema里的key - return p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, workspaceID, datasetID, category) -} - -func (p *DataReflowProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { - // 1、创建/更新数据集 - session := getSession(ctx, currentTask) - category := getCategory(currentTask.TaskType) - dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() - var err error - // 1、创建数据集 - logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) - for _, dataReflowConfig := range dataReflowConfigs { - dataset, err := p.createOrUpdateDataset(ctx, currentTask.GetWorkspaceID(), category, dataReflowConfig, session) - if err != nil { - return err - } - currentTask.TaskConfig.DataReflowConfig[0] = &task.DataReflowConfig{ - DatasetID: ptr.Of(dataset.ID), - DatasetName: dataReflowConfig.DatasetName, - DatasetSchema: dataReflowConfig.DatasetSchema, - FieldMappings: dataReflowConfig.FieldMappings, - } - taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") - err = p.taskRepo.UpdateTask(ctx, taskPO) - if err != nil { - logs.CtxError(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - } - taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) - if err != nil { - logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - if ShouldTriggerBackfill(currentTask) && taskRuns == nil { - err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ - CurrentTask: currentTask, - RunType: task.TaskRunTypeBackFill, - RunStartAt: time.Now().UnixMilli(), - RunEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), - }) - if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) - if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - } - if ShouldTriggerNewData(ctx, currentTask) { - var runStartAt, runEndAt int64 - runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() - if !currentTask.GetRule().GetSampler().GetIsCycle() { - runEndAt = currentTask.GetRule().GetEffectiveTime().GetEndAt() - } else { - switch *currentTask.GetRule().GetSampler().CycleTimeUnit { - case task.TimeUnitDay: - runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() - case task.TimeUnitWeek: - runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() - default: - runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() - } - } - err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ - CurrentTask: currentTask, - RunType: task.TaskRunTypeNewData, - RunStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), - RunEndAt: runEndAt, - }) - err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) - if err != nil { - logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - } - return nil -} - -func (p *DataReflowProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { - switch taskOp { - case task.TaskStatusSuccess: - if currentTask.GetTaskStatus() != task.TaskStatusDisabled { - *currentTask.TaskStatus = task.TaskStatusSuccess - } - case task.TaskStatusRunning: - if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { - *currentTask.TaskStatus = task.TaskStatusRunning - } - case task.TaskStatusDisabled: - if currentTask.GetTaskStatus() != task.TaskStatusDisabled { - *currentTask.TaskStatus = task.TaskStatusDisabled - } - case task.TaskStatusPending: - if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { - *currentTask.TaskStatus = task.TaskStatusPending - } - default: - return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) - } - // 2、更新任务 - taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") - err := p.taskRepo.UpdateTask(ctx, taskPO) - if err != nil { - logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) - return err - } - return nil -} - -func (p *DataReflowProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { - err := p.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ - Task: param.Task, - TaskRun: param.TaskRun, - }) - if err != nil { - logs.CtxError(ctx, "OnFinishTaskRunChange failed, taskRun:%+v, err:%v", param.TaskRun, err) - return err - } - if param.IsFinish { - logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v", param.Task.GetID(), param.TaskRun) - if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { - logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) - return err - } - } - return nil -} - -func (p *DataReflowProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { - var taskRunConfig *task.TaskRunConfig - currentTask := param.CurrentTask - - taskRunConfig = &task.TaskRunConfig{ - DataReflowRunConfig: &task.DataReflowRunConfig{ - DatasetID: *currentTask.GetTaskConfig().GetDataReflowConfig()[0].DatasetID, - EndAt: param.RunEndAt, - CycleStartAt: param.RunStartAt, - CycleEndAt: param.RunEndAt, - Status: task.RunStatusRunning, - }, - } - taskRun := &task_entity.TaskRun{ - TaskID: currentTask.GetID(), - WorkspaceID: currentTask.GetWorkspaceID(), - TaskType: param.RunType, - RunStatus: task.RunStatusRunning, - RunStartAt: time.UnixMilli(param.RunStartAt), - RunEndAt: time.UnixMilli(param.RunEndAt), - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), - } - id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) - if err != nil { - logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) - return err - } - taskRun.ID = id - taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) - if err != nil { - return err - } - taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) - err = p.taskRepo.UpdateTask(ctx, taskConfig) - if err != nil { - return err - } - return nil -} -func (p *DataReflowProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { - taskRun := param.TaskRun - // 设置taskRun状态为已完成 - taskRun.RunStatus = task.RunStatusDone - // 更新taskRun - err := p.taskRepo.UpdateTaskRun(ctx, taskRun) - if err != nil { - logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.ID, err) - return err - } - return nil -} +// import ( +// +// "context" +// "fmt" +// "time" +// +// "github.com/coze-dev/coze-loop/backend/infra/middleware/session" +// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" +// dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" +// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" +// tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" +// task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" +// obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" +// "github.com/coze-dev/coze-loop/backend/pkg/errorx" +// "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" +// "github.com/coze-dev/coze-loop/backend/pkg/logs" +// +// ) +// +// var _ taskexe.Processor = (*DataReflowProcessor)(nil) +// +// type DataReflowProcessor struct { +// datasetServiceAdaptor *service.DatasetServiceAdaptor +// taskRepo repo.ITaskRepo +// taskRunRepo repo.ITaskRunRepo +// } +// +// func NewDataReflowProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, +// +// taskRepo repo.ITaskRepo, +// taskRunRepo repo.ITaskRunRepo) *DataReflowProcessor { +// return &DataReflowProcessor{ +// datasetServiceAdaptor: datasetServiceProvider, +// taskRepo: taskRepo, +// taskRunRepo: taskRunRepo, +// } +// } +// +// func (p *DataReflowProcessor) ValidateConfig(ctx context.Context, config any) error { +// cfg, ok := config.(*task.Task) +// if !ok { +// return taskexe.ErrInvalidConfig +// } +// if cfg.GetTaskConfig().GetDataReflowConfig() == nil || len(cfg.GetTaskConfig().GetDataReflowConfig()) == 0 { +// return taskexe.ErrInvalidConfig +// } +// +// // todo:[xun]1、数据集是否存在,2、数据集是否重名 +// return nil +// } +// +// func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { +// cfg, ok := config.(*task_entity.TaskRun) +// if !ok { +// return taskexe.ErrInvalidConfig +// } +// taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) +// +// taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) +// taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) +// +// p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) +// p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) +// p.taskRepo.IncrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) +// +// if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || +// (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { +// logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) +// p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) +// p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) +// p.taskRepo.DecrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) +// return nil +// } +// ctx = session.WithCtxUser(ctx, &session.User{ID: *trigger.Task.BaseInfo.CreatedBy.UserID}) +// workspaceID := trigger.Task.GetWorkspaceID() +// sessionInfo := getSession(ctx, trigger.Task) +// var mapping []entity.FieldMapping +// for _, dataReflowConfig := range trigger.Task.TaskConfig.DataReflowConfig { +// mapping = ConvertFieldMappingsDTO2DO(dataReflowConfig.FieldMappings) +// } +// +// category := entity.DatasetCategory_General +// successItems, _, _ := buildDatasetItems(ctx, []*loop_span.Span{trigger.Span}, mapping, workspaceID, *trigger.Task.ID, entity.NewDataset( +// taskRun.TaskRunConfig.GetDataReflowRunConfig().GetDatasetID(), +// workspaceID, +// "", +// category, +// convertDatasetSchemaDTO2DO(trigger.Task.TaskConfig.DataReflowConfig[0].GetDatasetSchema()), +// sessionInfo, +// )) +// _, _, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, taskRun.TaskRunConfig.DataReflowRunConfig.DatasetID, category, successItems) +// if err != nil { +// logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor Invoke, AddDatasetItems err, taskID:%d, err:%v", *trigger.Task.ID, err) +// p.taskRepo.IncrTaskRunFailCount(ctx, *trigger.Task.ID, taskRun.ID) +// return err +// } +// +// return nil +// } +// +// func ConvertFieldMappingsDTO2DO(mappings []*dataset0.FieldMapping) []entity.FieldMapping { +// if len(mappings) == 0 { +// return nil +// } +// +// result := make([]entity.FieldMapping, len(mappings)) +// for i, mapping := range mappings { +// result[i] = entity.FieldMapping{ +// FieldSchema: entity.FieldSchema{ +// Key: mapping.GetFieldSchema().Key, +// Name: mapping.GetFieldSchema().GetName(), +// Description: mapping.GetFieldSchema().GetDescription(), +// ContentType: convertContentTypeDTO2DO(mapping.GetFieldSchema().GetContentType()), +// TextSchema: mapping.GetFieldSchema().GetTextSchema(), +// }, +// TraceFieldKey: mapping.GetTraceFieldKey(), +// TraceFieldJsonpath: mapping.GetTraceFieldJsonpath(), +// } +// } +// +// return result +// } +// + +//func (p *DataReflowProcessor) createOrUpdateDataset(ctx context.Context, workspaceID int64, category entity.DatasetCategory, dataReflowConfig *task.DataReflowConfig, session *common.Session) (*entity.Dataset, error) { +// var err error +// var datasetID int64 +// +// if dataReflowConfig.GetDatasetID() == 0 { +// if dataReflowConfig.DatasetName == nil || *dataReflowConfig.DatasetName == "" { +// return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("task name exist")) +// } +// if len(dataReflowConfig.DatasetSchema.FieldSchemas) == 0 { +// return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("dataset schema is empty")) +// } +// +// schema := convertDatasetSchemaDTO2DO(dataReflowConfig.GetDatasetSchema()) +// datasetID, err = p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( +// 0, +// workspaceID, +// dataReflowConfig.GetDatasetName(), +// category, +// schema, +// session, +// )) +// if err != nil { +// return nil, err +// } +// } else { +// if dataReflowConfig.DatasetID == nil { +// return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("dataset id is nil")) +// } +// datasetID = *dataReflowConfig.DatasetID +// needUpdate := false +// for _, schema := range dataReflowConfig.DatasetSchema.FieldSchemas { +// if schema.Key == nil || *schema.Key == "" { +// needUpdate = true +// break +// } +// } +// if needUpdate { +// if err := p.datasetServiceAdaptor.GetDatasetProvider(category).UpdateDatasetSchema(ctx, entity.NewDataset( +// datasetID, +// workspaceID, +// "", +// category, +// convertDatasetSchemaDTO2DO(dataReflowConfig.DatasetSchema), +// nil, +// )); err != nil { +// return nil, err +// } +// } +// } +// +// // 新增或修改评测集后,都需要重新查询一次,拿到fieldSchema里的key +// return p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, workspaceID, datasetID, category) +//} +// +//func (p *DataReflowProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { +// // 1、创建/更新数据集 +// session := getSession(ctx, currentTask) +// category := getCategory(currentTask.TaskType) +// dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() +// var err error +// // 1、创建数据集 +// logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) +// for _, dataReflowConfig := range dataReflowConfigs { +// dataset, err := p.createOrUpdateDataset(ctx, currentTask.GetWorkspaceID(), category, dataReflowConfig, session) +// if err != nil { +// return err +// } +// currentTask.TaskConfig.DataReflowConfig[0] = &task.DataReflowConfig{ +// DatasetID: ptr.Of(dataset.ID), +// DatasetName: dataReflowConfig.DatasetName, +// DatasetSchema: dataReflowConfig.DatasetSchema, +// FieldMappings: dataReflowConfig.FieldMappings, +// } +// taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") +// err = p.taskRepo.UpdateTask(ctx, taskPO) +// if err != nil { +// logs.CtxError(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// } +// taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) +// if err != nil { +// logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// if ShouldTriggerBackfill(currentTask) && taskRuns == nil { +// err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ +// CurrentTask: currentTask, +// RunType: task.TaskRunTypeBackFill, +// RunStartAt: time.Now().UnixMilli(), +// RunEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), +// }) +// if err != nil { +// logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) +// if err != nil { +// logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// } +// if ShouldTriggerNewData(ctx, currentTask) { +// var runStartAt, runEndAt int64 +// runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() +// if !currentTask.GetRule().GetSampler().GetIsCycle() { +// runEndAt = currentTask.GetRule().GetEffectiveTime().GetEndAt() +// } else { +// switch *currentTask.GetRule().GetSampler().CycleTimeUnit { +// case task.TimeUnitDay: +// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() +// case task.TimeUnitWeek: +// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() +// default: +// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() +// } +// } +// err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ +// CurrentTask: currentTask, +// RunType: task.TaskRunTypeNewData, +// RunStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), +// RunEndAt: runEndAt, +// }) +// err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) +// if err != nil { +// logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// } +// return nil +//} +// +//func (p *DataReflowProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { +// switch taskOp { +// case task.TaskStatusSuccess: +// if currentTask.GetTaskStatus() != task.TaskStatusDisabled { +// *currentTask.TaskStatus = task.TaskStatusSuccess +// } +// case task.TaskStatusRunning: +// if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { +// *currentTask.TaskStatus = task.TaskStatusRunning +// } +// case task.TaskStatusDisabled: +// if currentTask.GetTaskStatus() != task.TaskStatusDisabled { +// *currentTask.TaskStatus = task.TaskStatusDisabled +// } +// case task.TaskStatusPending: +// if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { +// *currentTask.TaskStatus = task.TaskStatusPending +// } +// default: +// return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) +// } +// // 2、更新任务 +// taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") +// err := p.taskRepo.UpdateTask(ctx, taskPO) +// if err != nil { +// logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) +// return err +// } +// return nil +//} +// +//func (p *DataReflowProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { +// err := p.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ +// Task: param.Task, +// TaskRun: param.TaskRun, +// }) +// if err != nil { +// logs.CtxError(ctx, "OnFinishTaskRunChange failed, taskRun:%+v, err:%v", param.TaskRun, err) +// return err +// } +// if param.IsFinish { +// logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v", param.Task.GetID(), param.TaskRun) +// if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { +// logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) +// return err +// } +// } +// return nil +//} +// +//func (p *DataReflowProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { +// var taskRunConfig *task.TaskRunConfig +// currentTask := param.CurrentTask +// +// taskRunConfig = &task.TaskRunConfig{ +// DataReflowRunConfig: &task.DataReflowRunConfig{ +// DatasetID: *currentTask.GetTaskConfig().GetDataReflowConfig()[0].DatasetID, +// EndAt: param.RunEndAt, +// CycleStartAt: param.RunStartAt, +// CycleEndAt: param.RunEndAt, +// Status: task.RunStatusRunning, +// }, +// } +// taskRun := &task_entity.TaskRun{ +// TaskID: currentTask.GetID(), +// WorkspaceID: currentTask.GetWorkspaceID(), +// TaskType: param.RunType, +// RunStatus: task.RunStatusRunning, +// RunStartAt: time.UnixMilli(param.RunStartAt), +// RunEndAt: time.UnixMilli(param.RunEndAt), +// CreatedAt: time.Now(), +// UpdatedAt: time.Now(), +// RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), +// } +// id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) +// if err != nil { +// logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) +// return err +// } +// taskRun.ID = id +// taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) +// if err != nil { +// return err +// } +// taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) +// err = p.taskRepo.UpdateTask(ctx, taskConfig) +// if err != nil { +// return err +// } +// return nil +//} +//func (p *DataReflowProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { +// taskRun := param.TaskRun +// // 设置taskRun状态为已完成 +// taskRun.RunStatus = task.RunStatusDone +// // 更新taskRun +// err := p.taskRepo.UpdateTaskRun(ctx, taskRun) +// if err != nil { +// logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.ID, err) +// return err +// } +// return nil +//} diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go index 3c557abd8..7cedd572a 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go @@ -6,6 +6,7 @@ package processor import ( "context" "strconv" + "time" "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" @@ -28,3 +29,50 @@ func getSession(ctx context.Context, task *task.Task) *common.Session { //AppID: gptr.Of(int32(717152)), } } + +// shouldTriggerBackfill 判断是否需要发送历史回溯MQ +func ShouldTriggerBackfill(taskDO *task.Task) bool { + // 检查任务类型 + taskType := taskDO.GetTaskType() + if taskType != task.TaskTypeAutoEval && taskType != task.TaskTypeAutoDataReflow { + return false + } + + // 检查回填时间配置 + rule := taskDO.GetRule() + if rule == nil { + return false + } + + backfillTime := rule.GetBackfillEffectiveTime() + if backfillTime == nil { + return false + } + + return backfillTime.GetStartAt() > 0 && + backfillTime.GetEndAt() > 0 && + backfillTime.GetStartAt() < backfillTime.GetEndAt() +} + +func ShouldTriggerNewData(ctx context.Context, taskDO *task.Task) bool { + // 检查任务类型 + taskType := taskDO.GetTaskType() + if taskType != task.TaskTypeAutoEval && taskType != task.TaskTypeAutoDataReflow { + return false + } + rule := taskDO.GetRule() + if rule == nil { + return false + } + + effectiveTime := rule.GetEffectiveTime() + if effectiveTime == nil { + return false + } + logs.CtxInfo(ctx, "[auto_task] ShouldTriggerNewData, endAt:%d, startAt:%d", effectiveTime.GetEndAt(), effectiveTime.GetStartAt()) + + return effectiveTime.GetEndAt() > 0 && + effectiveTime.GetStartAt() > 0 && + effectiveTime.GetStartAt() < effectiveTime.GetEndAt() && + time.Now().After(time.UnixMilli(effectiveTime.GetStartAt())) +} From b6169902bb05c3ebd9a9f7bde358b9a5d4026e82 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 15:28:48 +0800 Subject: [PATCH 337/462] fix wire --- .../domain/task/service/task_service.go | 9 ++--- .../task/service/taskexe/processor/factory.go | 40 ------------------- .../task/service/taskexe/tracehub/backfill.go | 6 +-- .../taskexe/tracehub/scheduled_task.go | 7 +--- .../service/taskexe/tracehub/trace_hub.go | 13 ++---- 5 files changed, 10 insertions(+), 65 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index d52904185..bb9ff0ec2 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -82,6 +82,7 @@ func NewTaskServiceImpl( userProvider rpc.IUserProvider, idGenerator idgen.IIDGenerator, backfillProducer mq.IBackfillProducer, + taskProcessor processor.TaskProcessor, ) (ITaskService, error) { return &TaskServiceImpl{ TaskRepo: tRepo, @@ -89,6 +90,7 @@ func NewTaskServiceImpl( userProvider: userProvider, idGenerator: idGenerator, backfillProducer: backfillProducer, + taskProcessor: taskProcessor, }, nil } @@ -98,6 +100,7 @@ type TaskServiceImpl struct { userProvider rpc.IUserProvider idGenerator idgen.IIDGenerator backfillProducer mq.IBackfillProducer + taskProcessor processor.TaskProcessor } func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) { @@ -114,11 +117,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r logs.CtxError(ctx, "task name exist") return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("task name exist")) } - proc, err := processor.NewProcessor(ctx, req.Task.TaskType) - if err != nil { - logs.CtxError(ctx, "NewProcessor err:%v", err) - return nil, err - } + proc := t.taskProcessor.GetTaskProcessor(req.Task.GetTaskType()) // 校验配置项是否有效 if err = proc.ValidateConfig(ctx, req.Task); err != nil { logs.CtxError(ctx, "ValidateConfig err:%v", err) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/factory.go b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go index a6d29bd60..adc8e6bdd 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go @@ -4,50 +4,10 @@ package processor import ( - "context" - "fmt" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" - obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" - "github.com/coze-dev/coze-loop/backend/pkg/errorx" -) - -var ( - autoEvaluteProc *AutoEvaluteProcessor - dataReflowProc *DataReflowProcessor ) -func NewProcessor(ctx context.Context, taskType task.TaskType) (taskexe.Processor, error) { - switch taskType { - case task.TaskTypeAutoEval: - if autoEvaluteProc == nil { - return nil, errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg("nil proc of span_eval")) - } - return autoEvaluteProc, nil - case task.TaskTypeAutoDataReflow: - if dataReflowProc == nil { - return nil, errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg("nil proc of span_data_reflow")) - } - return dataReflowProc, nil - default: - return nil, errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg(fmt.Sprintf("invalid task_type='%s' when new processor", taskType))) - } -} - -func InitProcessor( - datasetServiceProvider *service.DatasetServiceAdaptor, - evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter, - taskRepo repo.ITaskRepo, - taskRunRepo repo.ITaskRunRepo) { - autoEvaluteProc = NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo) - dataReflowProc = NewDataReflowProcessor(datasetServiceProvider, taskRepo, taskRunRepo) -} - type TaskProcessor struct { taskProcessorMap map[task.TaskType]taskexe.Processor } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 5553d971a..b06b8c0fa 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -15,7 +15,6 @@ import ( tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service/trace/span_filter" @@ -91,10 +90,7 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity return nil, errors.New("task config not found") } taskConfigDO := tconv.TaskPO2DTO(ctx, taskConfig, nil) - proc, err := processor.NewProcessor(ctx, taskConfig.TaskType) - if err != nil { - return nil, err - } + proc := h.taskProcessor.GetTaskProcessor(taskConfig.TaskType) sub := &spanSubscriber{ taskID: taskConfigDO.GetID(), RWMutex: sync.RWMutex{}, diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index b5c352e7d..3acfc80d7 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -13,7 +13,6 @@ import ( tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" @@ -124,11 +123,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { taskInfo := tconv.TaskPO2DTO(ctx, taskPO, nil) endTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetEndAt()) startTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetStartAt()) - proc, err := processor.NewProcessor(ctx, taskInfo.TaskType) - if err != nil { - logs.CtxError(ctx, "NewProcessor err:%v", err) - continue - } + proc := h.taskProcessor.GetTaskProcessor(taskInfo.TaskType) // 达到任务时间期限 // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 086c0e5bf..004ff04c8 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -14,7 +14,6 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" @@ -38,14 +37,11 @@ type ITraceHubService interface { func NewTraceHubImpl( tRepo repo.ITaskRepo, tRunRepo repo.ITaskRunRepo, - datasetServiceProvider *service.DatasetServiceAdaptor, - evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter, traceRepo trace_repo.ITraceRepo, tenantProvider tenant.ITenantProvider, buildHelper service.TraceFilterProcessorBuilder, + taskProcessor *processor.TaskProcessor, ) (ITraceHubService, error) { - //processor.InitProcessor(datasetServiceProvider, evalService, evaluationService, tRepo, tRunRepo) // 创建两个不同间隔的独立定时器 scheduledTaskTicker := time.NewTicker(5 * time.Minute) // 任务状态生命周期管理 - 5分钟间隔 syncTaskTicker := time.NewTicker(2 * time.Minute) // 数据同步 - 1分钟间隔 @@ -58,6 +54,7 @@ func NewTraceHubImpl( traceRepo: traceRepo, tenantProvider: tenantProvider, buildHelper: buildHelper, + taskProcessor: taskProcessor, } // 立即启动定时任务 @@ -75,6 +72,7 @@ type TraceHubServiceImpl struct { taskRunRepo repo.ITaskRunRepo traceRepo trace_repo.ITraceRepo tenantProvider tenant.ITenantProvider + taskProcessor *processor.TaskProcessor buildHelper service.TraceFilterProcessorBuilder task *task.Task @@ -158,10 +156,7 @@ func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loo } taskList := tconv.TaskPOs2DOs(ctx, tasksPOList, nil) for _, taskDO := range taskList { - proc, err := processor.NewProcessor(ctx, taskDO.TaskType) - if err != nil { - return nil, err - } + proc := h.taskProcessor.GetTaskProcessor(taskDO.TaskType) subscribers = append(subscribers, &spanSubscriber{ taskID: taskDO.GetID(), RWMutex: sync.RWMutex{}, From d6f996a6ce0985ffcf19242cd25920fb8e46e879 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 15:39:28 +0800 Subject: [PATCH 338/462] fix wire --- backend/modules/observability/application/wire.go | 3 +-- .../domain/task/service/taskexe/processor/factory.go | 4 +--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 9a9dcff21..916e52d7a 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -27,7 +27,6 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" taskSvc "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" task_processor "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" @@ -200,7 +199,7 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase } func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) taskexe.Processor { + evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) task_processor.TaskProcessor { taskProcessor := task_processor.NewTaskProcessor() taskProcessor.Register(task.TaskTypeAutoEval, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) return taskProcessor diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/factory.go b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go index adc8e6bdd..131437f7f 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/factory.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/factory.go @@ -13,9 +13,7 @@ type TaskProcessor struct { } func NewTaskProcessor() *TaskProcessor { - return &TaskProcessor{ - taskProcessorMap: make(map[task.TaskType]taskexe.Processor), - } + return &TaskProcessor{} } func (t *TaskProcessor) Register(taskType task.TaskType, taskProcessor taskexe.Processor) { From 1411375f5948382adba7aea1776d78f2b2d588f1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 15:42:59 +0800 Subject: [PATCH 339/462] fix --- backend/modules/observability/application/wire.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 916e52d7a..925d2db49 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -199,7 +199,7 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase } func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) task_processor.TaskProcessor { + evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) *task_processor.TaskProcessor { taskProcessor := task_processor.NewTaskProcessor() taskProcessor.Register(task.TaskTypeAutoEval, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) return taskProcessor From 0401556c5dbb5f6e121ee1c7b935be1362515ff0 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 15:44:51 +0800 Subject: [PATCH 340/462] fix --- backend/modules/observability/application/wire.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 925d2db49..c0a15408d 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -266,7 +266,8 @@ func InitTaskApplication( exptService experimentservice.Client, datasetService datasetservice.Client, benefit benefit.IBenefitService, - fileClient fileservice.Client) (ITaskApplication, error) { + fileClient fileservice.Client, + taskProcessor task_processor.TaskProcessor) (ITaskApplication, error) { wire.Build(taskSet) return nil, nil } From 94a1a5d39dcb0cda0698024464680e8a5d33fe76 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 15:47:57 +0800 Subject: [PATCH 341/462] add wire gen --- .../modules/observability/application/wire.go | 3 +- .../observability/application/wire_gen.go | 28 ++++++++++++++----- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index c0a15408d..25fda2c6a 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -26,6 +26,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + trepo "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" taskSvc "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" task_processor "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub" @@ -199,7 +200,7 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase } func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo.ITaskRepo, taskRunRepo repo.ITaskRunRepo) *task_processor.TaskProcessor { + evaluationService rpc.IEvaluationRPCAdapter, taskRepo trepo.ITaskRepo, taskRunRepo trepo.ITaskRunRepo) *task_processor.TaskProcessor { taskProcessor := task_processor.NewTaskProcessor() taskProcessor.Register(task.TaskTypeAutoEval, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) return taskProcessor diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index bd022458a..095bab35d 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -23,13 +23,16 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/auth/authservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/file/fileservice" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/user/userservice" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" config2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + repo3 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" service2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/exporter" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/processor" + processor2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/collector/receiver" repo2 "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" @@ -194,7 +197,7 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb return iTraceIngestionApplication, nil } -func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, ckDb ck.Provider, redis2 redis.Cmdable, mqFactory mq.IFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client, benefit2 benefit.IBenefitService, fileClient fileservice.Client) (ITaskApplication, error) { +func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, ckDb ck.Provider, redis2 redis.Cmdable, mqFactory mq.IFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client, benefit2 benefit.IBenefitService, fileClient fileservice.Client, taskProcessor processor.TaskProcessor) (ITaskApplication, error) { iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) @@ -211,14 +214,13 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto if err != nil { return nil, err } - iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iTaskRunRepo, iUserProvider, idgen2, iBackfillProducer) + iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iTaskRunRepo, iUserProvider, idgen2, iBackfillProducer, taskProcessor) if err != nil { return nil, err } iAuthProvider := auth.NewAuthProvider(authClient) iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iEvaluationRPCAdapter := evaluation.NewEvaluationRPCProvider(exptService) - datasetServiceAdaptor := NewDatasetServiceAdapter(evalSetService, datasetService) iSpansDao, err := ck2.NewSpansCkDaoImpl(ckDb) if err != nil { return nil, err @@ -234,7 +236,9 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto iTenantProvider := tenant.NewTenantProvider(iTraceConfig) iFileProvider := file.NewFileRPCProvider(fileClient) traceFilterProcessorBuilder := NewTraceProcessorBuilder(iTraceConfig, iFileProvider, benefit2) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTaskRunRepo, datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder) + datasetServiceAdaptor := NewDatasetServiceAdapter(evalSetService, datasetService) + processorTaskProcessor := NewInitTaskProcessor(datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTaskRepo, iTaskRunRepo) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTaskRunRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor) if err != nil { return nil, err } @@ -263,7 +267,10 @@ var ( openApiSet = wire.NewSet( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) - taskSet = wire.NewSet(tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, traceDomainSet) + taskSet = wire.NewSet( + + NewInitTaskProcessor, tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, traceDomainSet, + ) ) func NewTraceProcessorBuilder( @@ -288,7 +295,7 @@ func NewTraceProcessorBuilder( func NewIngestionCollectorFactory(mqFactory mq.IFactory, traceRepo repo2.ITraceRepo) service.IngestionCollectorFactory { return service.NewIngestionCollectorFactory( []receiver.Factory{rmqreceiver.NewFactory(mqFactory)}, - []processor.Factory{queueprocessor.NewFactory()}, + []processor2.Factory{queueprocessor.NewFactory()}, []exporter.Factory{clickhouseexporter.NewFactory(traceRepo)}, ) } @@ -303,3 +310,10 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase adapter.Register(entity.DatasetCategory_Evaluation, evaluationset.NewEvaluationSetProvider(evalSetService, datasetProvider)) return adapter } + +func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, + evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo3.ITaskRepo, taskRunRepo repo3.ITaskRunRepo) *processor.TaskProcessor { + taskProcessor := processor.NewTaskProcessor() + taskProcessor.Register(task.TaskTypeAutoEval, processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) + return taskProcessor +} From d1fb467fe7e439cb76535afb9b914fc04f8e69fb Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 16:01:19 +0800 Subject: [PATCH 342/462] fix --- backend/modules/observability/application/wire.go | 4 +--- backend/modules/observability/application/wire_gen.go | 9 ++++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 25fda2c6a..f2c579c98 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -64,6 +64,7 @@ import ( var ( taskDomainSet = wire.NewSet( + NewInitTaskProcessor, taskSvc.NewTaskServiceImpl, obrepo.NewTaskRepoImpl, obrepo.NewTaskRunRepoImpl, @@ -117,13 +118,10 @@ var ( traceDomainSet, ) taskSet = wire.NewSet( - //NewDatasetServiceAdapter, - NewInitTaskProcessor, tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, - //evaluator.NewEvaluatorRPCProvider, evaluation.NewEvaluationRPCProvider, traceDomainSet, ) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 095bab35d..f83174d32 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -252,7 +252,9 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto // wire.go: var ( - taskDomainSet = wire.NewSet(service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, repo.NewTaskRunRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, dao.NewTaskRunDAO, mysql.NewTaskRunDaoImpl, producer.NewBackfillProducerImpl) + taskDomainSet = wire.NewSet( + NewInitTaskProcessor, service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, repo.NewTaskRunRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, dao.NewTaskRunDAO, mysql.NewTaskRunDaoImpl, producer.NewBackfillProducerImpl, + ) traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, evaluator.NewEvaluatorRPCProvider, NewDatasetServiceAdapter, taskDomainSet, @@ -267,10 +269,7 @@ var ( openApiSet = wire.NewSet( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) - taskSet = wire.NewSet( - - NewInitTaskProcessor, tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, traceDomainSet, - ) + taskSet = wire.NewSet(tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, traceDomainSet) ) func NewTraceProcessorBuilder( From e84da92a4dc02478914e5a85d46d06c37629cc74 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 16:37:21 +0800 Subject: [PATCH 343/462] fix --- backend/modules/observability/application/task.go | 4 ++++ backend/modules/observability/application/wire_gen.go | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 409254d7c..672150016 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -11,6 +11,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" + task_processor "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" @@ -34,6 +35,7 @@ func NewTaskApplication( evaluationService rpc.IEvaluationRPCAdapter, userService rpc.IUserProvider, tracehubSvc tracehub.ITraceHubService, + taskProcessor task_processor.TaskProcessor, ) (ITaskApplication, error) { return &TaskApplication{ taskSvc: taskService, @@ -42,6 +44,7 @@ func NewTaskApplication( evaluationSvc: evaluationService, userSvc: userService, tracehubSvc: tracehubSvc, + taskProcessor: taskProcessor, }, nil } @@ -52,6 +55,7 @@ type TaskApplication struct { evaluationSvc rpc.IEvaluationRPCAdapter userSvc rpc.IUserProvider tracehubSvc tracehub.ITraceHubService + taskProcessor task_processor.TaskProcessor } func (t *TaskApplication) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest) (*task.CheckTaskNameResponse, error) { diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index f83174d32..db3a02549 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -242,7 +242,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto if err != nil { return nil, err } - iTaskApplication, err := NewTaskApplication(iTaskService, iAuthProvider, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iUserProvider, iTraceHubService) + iTaskApplication, err := NewTaskApplication(iTaskService, iAuthProvider, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iUserProvider, iTraceHubService, taskProcessor) if err != nil { return nil, err } From e491b7950cf97316112c0733934790c6f3ebb1e6 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 17:10:55 +0800 Subject: [PATCH 344/462] fix wire --- backend/api/handler/coze/loop/apis/wire.go | 2 ++ backend/api/handler/coze/loop/apis/wire_gen.go | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/api/handler/coze/loop/apis/wire.go b/backend/api/handler/coze/loop/apis/wire.go index dc1e02760..e6bea9836 100644 --- a/backend/api/handler/coze/loop/apis/wire.go +++ b/backend/api/handler/coze/loop/apis/wire.go @@ -11,6 +11,7 @@ import ( "github.com/cloudwego/kitex/pkg/endpoint" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/experimentservice" + task_processor "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/google/wire" "github.com/coze-dev/coze-loop/backend/infra/ck" @@ -211,6 +212,7 @@ func InitObservabilityHandler( datasetClient datasetservice.Client, redis redis.Cmdable, experimentClient experimentservice.Client, + taskProcessor task_processor.TaskProcessor, ) (*ObservabilityHandler, error) { wire.Build( observabilitySet, diff --git a/backend/api/handler/coze/loop/apis/wire_gen.go b/backend/api/handler/coze/loop/apis/wire_gen.go index 7bbd291d2..fc7ec4fe1 100644 --- a/backend/api/handler/coze/loop/apis/wire_gen.go +++ b/backend/api/handler/coze/loop/apis/wire_gen.go @@ -8,7 +8,6 @@ package apis import ( "context" - "github.com/cloudwego/kitex/pkg/endpoint" "github.com/coze-dev/coze-loop/backend/infra/ck" "github.com/coze-dev/coze-loop/backend/infra/db" @@ -41,6 +40,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/foundation/application" application3 "github.com/coze-dev/coze-loop/backend/modules/llm/application" application6 "github.com/coze-dev/coze-loop/backend/modules/observability/application" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" application2 "github.com/coze-dev/coze-loop/backend/modules/prompt/application" "github.com/coze-dev/coze-loop/backend/pkg/conf" "github.com/google/wire" @@ -150,7 +150,7 @@ func InitDataHandler(ctx context.Context, idgen2 idgen.IIDGenerator, db2 db.Prov return dataHandler, nil } -func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Provider, meter metrics.Meter, mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, idgen2 idgen.IIDGenerator, benefit2 benefit.IBenefitService, fileClient fileservice.Client, authCli authservice.Client, userClient userservice.Client, evalClient evaluatorservice.Client, evalSetClient evaluationsetservice.Client, tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, datasetClient datasetservice.Client, redis2 redis.Cmdable, experimentClient experimentservice.Client) (*ObservabilityHandler, error) { +func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Provider, meter metrics.Meter, mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, idgen2 idgen.IIDGenerator, benefit2 benefit.IBenefitService, fileClient fileservice.Client, authCli authservice.Client, userClient userservice.Client, evalClient evaluatorservice.Client, evalSetClient evaluationsetservice.Client, tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, datasetClient datasetservice.Client, redis2 redis.Cmdable, experimentClient experimentservice.Client, taskProcessor processor.TaskProcessor) (*ObservabilityHandler, error) { iTraceApplication, err := application6.InitTraceApplication(db2, ckDb, redis2, meter, mqFactory, configFactory, idgen2, fileClient, benefit2, authCli, userClient, evalClient, evalSetClient, tagClient, datasetClient) if err != nil { return nil, err @@ -163,7 +163,7 @@ func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Prov if err != nil { return nil, err } - iTaskApplication, err := application6.InitTaskApplication(db2, idgen2, redis2, userClient, authCli, evalClient, evalSetClient, experimentClient) + iTaskApplication, err := application6.InitTaskApplication(db2, idgen2, configFactory, ckDb, redis2, mqFactory, userClient, authCli, evalClient, evalSetClient, experimentClient, datasetClient, benefit2, fileClient, taskProcessor) if err != nil { return nil, err } From ea9ee2fa443aef3166093f459f371162f17abd8d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 17:31:06 +0800 Subject: [PATCH 345/462] fix --- backend/modules/observability/application/wire_gen.go | 10 +++++----- .../observability/domain/task/service/task_service.go | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index db3a02549..af5dfa102 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -214,13 +214,15 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto if err != nil { return nil, err } - iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iTaskRunRepo, iUserProvider, idgen2, iBackfillProducer, taskProcessor) + datasetServiceAdaptor := NewDatasetServiceAdapter(evalSetService, datasetService) + iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) + iEvaluationRPCAdapter := evaluation.NewEvaluationRPCProvider(exptService) + processorTaskProcessor := NewInitTaskProcessor(datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTaskRepo, iTaskRunRepo) + iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iTaskRunRepo, iUserProvider, idgen2, iBackfillProducer, processorTaskProcessor) if err != nil { return nil, err } iAuthProvider := auth.NewAuthProvider(authClient) - iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) - iEvaluationRPCAdapter := evaluation.NewEvaluationRPCProvider(exptService) iSpansDao, err := ck2.NewSpansCkDaoImpl(ckDb) if err != nil { return nil, err @@ -236,8 +238,6 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto iTenantProvider := tenant.NewTenantProvider(iTraceConfig) iFileProvider := file.NewFileRPCProvider(fileClient) traceFilterProcessorBuilder := NewTraceProcessorBuilder(iTraceConfig, iFileProvider, benefit2) - datasetServiceAdaptor := NewDatasetServiceAdapter(evalSetService, datasetService) - processorTaskProcessor := NewInitTaskProcessor(datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTaskRepo, iTaskRunRepo) iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTaskRunRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor) if err != nil { return nil, err diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index bb9ff0ec2..a97ed3cbf 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -82,7 +82,7 @@ func NewTaskServiceImpl( userProvider rpc.IUserProvider, idGenerator idgen.IIDGenerator, backfillProducer mq.IBackfillProducer, - taskProcessor processor.TaskProcessor, + taskProcessor *processor.TaskProcessor, ) (ITaskService, error) { return &TaskServiceImpl{ TaskRepo: tRepo, @@ -90,7 +90,7 @@ func NewTaskServiceImpl( userProvider: userProvider, idGenerator: idGenerator, backfillProducer: backfillProducer, - taskProcessor: taskProcessor, + taskProcessor: *taskProcessor, }, nil } From 7941bca4cfc9a700b0a0fb749a0b43c955959984 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 17:47:31 +0800 Subject: [PATCH 346/462] fix --- .../task/service/taskexe/tracehub/scheduled_task.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 3acfc80d7..74c6b0468 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -103,7 +103,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { var tasks []*task.Task logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) for _, taskPO := range taskPOs { - var taskRun *entity.TaskRun + var taskRun entity.TaskRun // 计算 taskRunstat:只有当所有 run 都为 done 状态时才为 true allRunsDone := true if len(taskPO.TaskRuns) == 0 { @@ -113,7 +113,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 检查所有 TaskRuns 是否都为 done 状态 for _, taskRunPO := range taskPO.TaskRuns { if taskRunPO.RunStatus != task.RunStatusDone { - taskRun = taskRunPO + taskRun = *taskRunPO allRunsDone = false break } @@ -131,7 +131,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, - TaskRun: taskRun, + TaskRun: &taskRun, IsFinish: true, }) if err != nil { @@ -172,7 +172,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, - TaskRun: taskRun, + TaskRun: &taskRun, IsFinish: false, }) if err != nil { From d2a05bdcef6097c311354df3ed270ae97e1c9370 Mon Sep 17 00:00:00 2001 From: tpfz Date: Wed, 24 Sep 2025 19:58:32 +0800 Subject: [PATCH 347/462] add logs --- .../evaluation/domain/service/expt_run_scheduler_event_impl.go | 1 + .../evaluation/domain/service/expt_run_scheduler_mode_impl.go | 3 +++ 2 files changed, 4 insertions(+) diff --git a/backend/modules/evaluation/domain/service/expt_run_scheduler_event_impl.go b/backend/modules/evaluation/domain/service/expt_run_scheduler_event_impl.go index cc4274619..ef6d4b2c1 100644 --- a/backend/modules/evaluation/domain/service/expt_run_scheduler_event_impl.go +++ b/backend/modules/evaluation/domain/service/expt_run_scheduler_event_impl.go @@ -283,6 +283,7 @@ func (e *ExptSchedulerImpl) recordEvalItemRunLogs(ctx context.Context, event *en return err } time.Sleep(time.Millisecond * 50) + logs.CtxInfo(ctx, "[ExptEval] recordEvalItemRunLogs publish result, expt_id: %v, event: %v, item_id: %v, turn_evaluator_refs: %v", event.ExptID, event, item.ItemID, json.Jsonify(turnEvaluatorRefs)) err := mode.PublishResult(ctx, turnEvaluatorRefs, event) if err != nil { logs.CtxError(ctx, "publish online result fail, err: %v", err) diff --git a/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl.go b/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl.go index c4cd319a3..504ec7db6 100644 --- a/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl.go +++ b/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl.go @@ -532,6 +532,7 @@ func (e *ExptFailRetryExec) NextTick(ctx context.Context, event *entity.ExptSche func (e *ExptFailRetryExec) PublishResult(ctx context.Context, turnEvaluatorRefs []*entity.ExptTurnEvaluatorResultRef, event *entity.ExptScheduleEvent) error { if event.ExptType != entity.ExptType_Offline { // 不等于offline用于兼容历史数据,不带type的都先放行 + logs.CtxInfo(ctx, "[ExptEval] ExptFailRetryExec publishResult, expt_id: %v, event: %v", event.ExptID, event) return newExptBaseExec(e.manager, e.idem, e.configer, e.exptItemResultRepo, e.publisher, e.evaluatorRecordService).publishResult(ctx, turnEvaluatorRefs, event) } return nil @@ -660,6 +661,7 @@ func (e *ExptAppendExec) NextTick(ctx context.Context, event *entity.ExptSchedul } func (e *ExptAppendExec) PublishResult(ctx context.Context, turnEvaluatorRefs []*entity.ExptTurnEvaluatorResultRef, event *entity.ExptScheduleEvent) error { + logs.CtxInfo(ctx, "[ExptEval] ExptAppendExec publishResult, expt_id: %v, event: %v", event.ExptID, event) return newExptBaseExec(e.manager, e.idem, e.configer, e.exptItemResultRepo, e.publisher, e.evaluatorRecordService).publishResult(ctx, turnEvaluatorRefs, event) } @@ -772,6 +774,7 @@ func (e *exptBaseExec) exptEnd(ctx context.Context, event *entity.ExptScheduleEv } func (e *exptBaseExec) publishResult(ctx context.Context, turnEvaluatorRefs []*entity.ExptTurnEvaluatorResultRef, event *entity.ExptScheduleEvent) error { + logs.CtxInfo(ctx, "[ExptEval] publishResult, expt_id: %v, event: %v", event.ExptID, event) if len(turnEvaluatorRefs) == 0 { return nil } From 90cd39ca907363cc7f9a05a32c3c45103b0bdbe8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 20:47:58 +0800 Subject: [PATCH 348/462] change code frame --- .../observability/domain/task/entity/task.go | 10 + .../service/taskexe/processor/data_reflow.go | 369 ------------------ .../task/service/taskexe/tracehub/backfill.go | 299 ++++---------- .../service/taskexe/tracehub/trace_hub.go | 36 +- .../domain/task/service/taskexe/types.go | 5 + 5 files changed, 117 insertions(+), 602 deletions(-) delete mode 100644 backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go diff --git a/backend/modules/observability/domain/task/entity/task.go b/backend/modules/observability/domain/task/entity/task.go index ce863d0f1..5fb91e221 100644 --- a/backend/modules/observability/domain/task/entity/task.go +++ b/backend/modules/observability/domain/task/entity/task.go @@ -7,6 +7,7 @@ import ( "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" ) @@ -50,3 +51,12 @@ type TaskRun struct { CreatedAt time.Time // 创建时间 UpdatedAt time.Time // 更新时间 } + +func (t ObservabilityTask) IsFinished() bool { + switch t.TaskStatus { + case task.TaskStatusSuccess, task.TaskStatusDisabled, task.TaskStatusPending: + return true + default: + return false + } +} diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go b/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go deleted file mode 100644 index ae25c6fb5..000000000 --- a/backend/modules/observability/domain/task/service/taskexe/processor/data_reflow.go +++ /dev/null @@ -1,369 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 - -package processor - -// import ( -// -// "context" -// "fmt" -// "time" -// -// "github.com/coze-dev/coze-loop/backend/infra/middleware/session" -// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" -// dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" -// "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" -// tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" -// task_entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" -// obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" -// "github.com/coze-dev/coze-loop/backend/pkg/errorx" -// "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" -// "github.com/coze-dev/coze-loop/backend/pkg/logs" -// -// ) -// -// var _ taskexe.Processor = (*DataReflowProcessor)(nil) -// -// type DataReflowProcessor struct { -// datasetServiceAdaptor *service.DatasetServiceAdaptor -// taskRepo repo.ITaskRepo -// taskRunRepo repo.ITaskRunRepo -// } -// -// func NewDataReflowProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, -// -// taskRepo repo.ITaskRepo, -// taskRunRepo repo.ITaskRunRepo) *DataReflowProcessor { -// return &DataReflowProcessor{ -// datasetServiceAdaptor: datasetServiceProvider, -// taskRepo: taskRepo, -// taskRunRepo: taskRunRepo, -// } -// } -// -// func (p *DataReflowProcessor) ValidateConfig(ctx context.Context, config any) error { -// cfg, ok := config.(*task.Task) -// if !ok { -// return taskexe.ErrInvalidConfig -// } -// if cfg.GetTaskConfig().GetDataReflowConfig() == nil || len(cfg.GetTaskConfig().GetDataReflowConfig()) == 0 { -// return taskexe.ErrInvalidConfig -// } -// -// // todo:[xun]1、数据集是否存在,2、数据集是否重名 -// return nil -// } -// -// func (p *DataReflowProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { -// cfg, ok := config.(*task_entity.TaskRun) -// if !ok { -// return taskexe.ErrInvalidConfig -// } -// taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) -// -// taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) -// taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) -// -// p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) -// p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) -// p.taskRepo.IncrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) -// -// if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || -// (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { -// logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) -// p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) -// p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) -// p.taskRepo.DecrTaskRunSuccessCount(ctx, *trigger.Task.ID, taskRun.ID) -// return nil -// } -// ctx = session.WithCtxUser(ctx, &session.User{ID: *trigger.Task.BaseInfo.CreatedBy.UserID}) -// workspaceID := trigger.Task.GetWorkspaceID() -// sessionInfo := getSession(ctx, trigger.Task) -// var mapping []entity.FieldMapping -// for _, dataReflowConfig := range trigger.Task.TaskConfig.DataReflowConfig { -// mapping = ConvertFieldMappingsDTO2DO(dataReflowConfig.FieldMappings) -// } -// -// category := entity.DatasetCategory_General -// successItems, _, _ := buildDatasetItems(ctx, []*loop_span.Span{trigger.Span}, mapping, workspaceID, *trigger.Task.ID, entity.NewDataset( -// taskRun.TaskRunConfig.GetDataReflowRunConfig().GetDatasetID(), -// workspaceID, -// "", -// category, -// convertDatasetSchemaDTO2DO(trigger.Task.TaskConfig.DataReflowConfig[0].GetDatasetSchema()), -// sessionInfo, -// )) -// _, _, err := p.datasetServiceAdaptor.GetDatasetProvider(category).AddDatasetItems(ctx, taskRun.TaskRunConfig.DataReflowRunConfig.DatasetID, category, successItems) -// if err != nil { -// logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor Invoke, AddDatasetItems err, taskID:%d, err:%v", *trigger.Task.ID, err) -// p.taskRepo.IncrTaskRunFailCount(ctx, *trigger.Task.ID, taskRun.ID) -// return err -// } -// -// return nil -// } -// -// func ConvertFieldMappingsDTO2DO(mappings []*dataset0.FieldMapping) []entity.FieldMapping { -// if len(mappings) == 0 { -// return nil -// } -// -// result := make([]entity.FieldMapping, len(mappings)) -// for i, mapping := range mappings { -// result[i] = entity.FieldMapping{ -// FieldSchema: entity.FieldSchema{ -// Key: mapping.GetFieldSchema().Key, -// Name: mapping.GetFieldSchema().GetName(), -// Description: mapping.GetFieldSchema().GetDescription(), -// ContentType: convertContentTypeDTO2DO(mapping.GetFieldSchema().GetContentType()), -// TextSchema: mapping.GetFieldSchema().GetTextSchema(), -// }, -// TraceFieldKey: mapping.GetTraceFieldKey(), -// TraceFieldJsonpath: mapping.GetTraceFieldJsonpath(), -// } -// } -// -// return result -// } -// - -//func (p *DataReflowProcessor) createOrUpdateDataset(ctx context.Context, workspaceID int64, category entity.DatasetCategory, dataReflowConfig *task.DataReflowConfig, session *common.Session) (*entity.Dataset, error) { -// var err error -// var datasetID int64 -// -// if dataReflowConfig.GetDatasetID() == 0 { -// if dataReflowConfig.DatasetName == nil || *dataReflowConfig.DatasetName == "" { -// return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("task name exist")) -// } -// if len(dataReflowConfig.DatasetSchema.FieldSchemas) == 0 { -// return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("dataset schema is empty")) -// } -// -// schema := convertDatasetSchemaDTO2DO(dataReflowConfig.GetDatasetSchema()) -// datasetID, err = p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( -// 0, -// workspaceID, -// dataReflowConfig.GetDatasetName(), -// category, -// schema, -// session, -// )) -// if err != nil { -// return nil, err -// } -// } else { -// if dataReflowConfig.DatasetID == nil { -// return nil, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("dataset id is nil")) -// } -// datasetID = *dataReflowConfig.DatasetID -// needUpdate := false -// for _, schema := range dataReflowConfig.DatasetSchema.FieldSchemas { -// if schema.Key == nil || *schema.Key == "" { -// needUpdate = true -// break -// } -// } -// if needUpdate { -// if err := p.datasetServiceAdaptor.GetDatasetProvider(category).UpdateDatasetSchema(ctx, entity.NewDataset( -// datasetID, -// workspaceID, -// "", -// category, -// convertDatasetSchemaDTO2DO(dataReflowConfig.DatasetSchema), -// nil, -// )); err != nil { -// return nil, err -// } -// } -// } -// -// // 新增或修改评测集后,都需要重新查询一次,拿到fieldSchema里的key -// return p.datasetServiceAdaptor.GetDatasetProvider(category).GetDataset(ctx, workspaceID, datasetID, category) -//} -// -//func (p *DataReflowProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { -// // 1、创建/更新数据集 -// session := getSession(ctx, currentTask) -// category := getCategory(currentTask.TaskType) -// dataReflowConfigs := currentTask.GetTaskConfig().GetDataReflowConfig() -// var err error -// // 1、创建数据集 -// logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) -// for _, dataReflowConfig := range dataReflowConfigs { -// dataset, err := p.createOrUpdateDataset(ctx, currentTask.GetWorkspaceID(), category, dataReflowConfig, session) -// if err != nil { -// return err -// } -// currentTask.TaskConfig.DataReflowConfig[0] = &task.DataReflowConfig{ -// DatasetID: ptr.Of(dataset.ID), -// DatasetName: dataReflowConfig.DatasetName, -// DatasetSchema: dataReflowConfig.DatasetSchema, -// FieldMappings: dataReflowConfig.FieldMappings, -// } -// taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") -// err = p.taskRepo.UpdateTask(ctx, taskPO) -// if err != nil { -// logs.CtxError(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// } -// taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) -// if err != nil { -// logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// if ShouldTriggerBackfill(currentTask) && taskRuns == nil { -// err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ -// CurrentTask: currentTask, -// RunType: task.TaskRunTypeBackFill, -// RunStartAt: time.Now().UnixMilli(), -// RunEndAt: time.Now().UnixMilli() + (currentTask.GetRule().GetBackfillEffectiveTime().GetEndAt() - currentTask.GetRule().GetBackfillEffectiveTime().GetStartAt()), -// }) -// if err != nil { -// logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) -// if err != nil { -// logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// } -// if ShouldTriggerNewData(ctx, currentTask) { -// var runStartAt, runEndAt int64 -// runStartAt = currentTask.GetRule().GetEffectiveTime().GetStartAt() -// if !currentTask.GetRule().GetSampler().GetIsCycle() { -// runEndAt = currentTask.GetRule().GetEffectiveTime().GetEndAt() -// } else { -// switch *currentTask.GetRule().GetSampler().CycleTimeUnit { -// case task.TimeUnitDay: -// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() -// case task.TimeUnitWeek: -// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() -// default: -// runEndAt = runStartAt + (*currentTask.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() -// } -// } -// err = p.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ -// CurrentTask: currentTask, -// RunType: task.TaskRunTypeNewData, -// RunStartAt: currentTask.GetRule().GetEffectiveTime().GetStartAt(), -// RunEndAt: runEndAt, -// }) -// err = p.OnUpdateTaskChange(ctx, currentTask, task.TaskStatusRunning) -// if err != nil { -// logs.CtxError(ctx, "OnCreateChangeProcessor failed, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// } -// return nil -//} -// -//func (p *DataReflowProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { -// switch taskOp { -// case task.TaskStatusSuccess: -// if currentTask.GetTaskStatus() != task.TaskStatusDisabled { -// *currentTask.TaskStatus = task.TaskStatusSuccess -// } -// case task.TaskStatusRunning: -// if currentTask.GetTaskStatus() != task.TaskStatusDisabled && currentTask.GetTaskStatus() != task.TaskStatusSuccess { -// *currentTask.TaskStatus = task.TaskStatusRunning -// } -// case task.TaskStatusDisabled: -// if currentTask.GetTaskStatus() != task.TaskStatusDisabled { -// *currentTask.TaskStatus = task.TaskStatusDisabled -// } -// case task.TaskStatusPending: -// if currentTask.GetTaskStatus() == task.TaskStatusPending || currentTask.GetTaskStatus() == task.TaskStatusUnstarted { -// *currentTask.TaskStatus = task.TaskStatusPending -// } -// default: -// return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) -// } -// // 2、更新任务 -// taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") -// err := p.taskRepo.UpdateTask(ctx, taskPO) -// if err != nil { -// logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) -// return err -// } -// return nil -//} -// -//func (p *DataReflowProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { -// err := p.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ -// Task: param.Task, -// TaskRun: param.TaskRun, -// }) -// if err != nil { -// logs.CtxError(ctx, "OnFinishTaskRunChange failed, taskRun:%+v, err:%v", param.TaskRun, err) -// return err -// } -// if param.IsFinish { -// logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v", param.Task.GetID(), param.TaskRun) -// if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { -// logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) -// return err -// } -// } -// return nil -//} -// -//func (p *DataReflowProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { -// var taskRunConfig *task.TaskRunConfig -// currentTask := param.CurrentTask -// -// taskRunConfig = &task.TaskRunConfig{ -// DataReflowRunConfig: &task.DataReflowRunConfig{ -// DatasetID: *currentTask.GetTaskConfig().GetDataReflowConfig()[0].DatasetID, -// EndAt: param.RunEndAt, -// CycleStartAt: param.RunStartAt, -// CycleEndAt: param.RunEndAt, -// Status: task.RunStatusRunning, -// }, -// } -// taskRun := &task_entity.TaskRun{ -// TaskID: currentTask.GetID(), -// WorkspaceID: currentTask.GetWorkspaceID(), -// TaskType: param.RunType, -// RunStatus: task.RunStatusRunning, -// RunStartAt: time.UnixMilli(param.RunStartAt), -// RunEndAt: time.UnixMilli(param.RunEndAt), -// CreatedAt: time.Now(), -// UpdatedAt: time.Now(), -// RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), -// } -// id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) -// if err != nil { -// logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) -// return err -// } -// taskRun.ID = id -// taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) -// if err != nil { -// return err -// } -// taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) -// err = p.taskRepo.UpdateTask(ctx, taskConfig) -// if err != nil { -// return err -// } -// return nil -//} -//func (p *DataReflowProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { -// taskRun := param.TaskRun -// // 设置taskRun状态为已完成 -// taskRun.RunStatus = task.RunStatusDone -// // 更新taskRun -// err := p.taskRepo.UpdateTaskRun(ctx, taskRun) -// if err != nil { -// logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.ID, err) -// return err -// } -// return nil -//} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index b06b8c0fa..4be6b7840 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -5,7 +5,6 @@ package tracehub import ( "context" - "encoding/json" "errors" "sync" "time" @@ -25,26 +24,26 @@ import ( "github.com/coze-dev/coze-loop/backend/pkg/logs" ) +const pageSize = 100 + func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { - // 设置当前任务上下文 - // 不 + // 1. 设置当前任务上下文 ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") sub, err := h.setBackfillTask(ctx, event) if err != nil { return err } - // 1. 判断回溯任务是否已完成 - 避免重复执行 - if h.isBackfillDone(ctx) { - logs.CtxInfo(ctx, "backfill already completed, task_id=%d", h.task.GetID()) - return nil - } - - // 2. 启动任务 - 更新任务状态为运行中 - if err := h.startTask(ctx); err != nil { - logs.CtxError(ctx, "start backfill task failed, task_id=%d, err=%v", h.task.GetID(), err) + // 2. 判断回溯任务是否已完成 - 避免重复执行 + isDone, err := h.isBackfillDone(ctx, sub) + if err != nil { + logs.CtxError(ctx, "check backfill task done failed, task_id=%d, err=%v", sub.t.GetID(), err) return err } + if isDone { + logs.CtxInfo(ctx, "backfill already completed, task_id=%d", sub.t.GetID()) + return nil + } // 3. 创建并发控制机制 - 设置上下文和等待组 subCtx, cancel := context.WithCancel(ctx) @@ -65,9 +64,9 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi }) // 5. 获取 span 数据 - 从观测服务获取需要处理的数据 - listErr := h.listSpans(subCtx) + listErr := h.listSpans(subCtx, sub) if listErr != nil { - logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", h.task.GetID(), listErr) + logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", sub.t.GetID(), listErr) // continue on error,不中断处理流程 } @@ -76,7 +75,7 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi wg.Wait() // 6. 同步等待完成 - 确保所有数据处理完毕 - return h.onHandleDone(ctx, listErr) + return h.onHandleDone(ctx, listErr, sub) } // setBackfillTask 设置当前回填任务的上下文 @@ -103,139 +102,59 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity runType: task.TaskRunTypeBackFill, taskRunRepo: h.taskRunRepo, } - // 解析任务规则 - var rule *task.Rule - if taskConfig.Sampler != nil && *taskConfig.Sampler != "" { - var sampler task.Sampler - if err := json.Unmarshal([]byte(*taskConfig.Sampler), &sampler); err == nil { - rule = &task.Rule{ - Sampler: &sampler, - } - } - } - - // 转换为 task.Task 结构 - taskStatus := task.TaskStatusUnstarted // 默认状态 - h.task = &task.Task{ - ID: &taskConfig.ID, - WorkspaceID: &taskConfig.WorkspaceID, - TaskStatus: &taskStatus, - Rule: rule, - } return sub, nil } // isBackfillDone 检查回填任务是否已完成 -func (h *TraceHubServiceImpl) isBackfillDone(ctx context.Context) bool { - if h.task == nil { - return false - } - - // 检查任务状态是否为已完成 - status := h.task.GetTaskStatus() - return status == task.TaskStatusSuccess || status == task.TaskStatusDisabled -} - -// startTask 启动回填任务 -func (h *TraceHubServiceImpl) startTask(ctx context.Context) error { - if h.task == nil { - return errors.New("task not initialized") - } - - // 这里可以添加任务状态更新逻辑 - logs.CtxInfo(ctx, "starting backfill task, task_id=%d", h.task.GetID()) - return nil -} - -func (h *TraceHubServiceImpl) listSpans(ctx context.Context) error { - // 1. 获取任务配置 - task, err := h.taskRepo.GetTask(ctx, h.task.GetID(), nil, nil) +func (h *TraceHubServiceImpl) isBackfillDone(ctx context.Context, sub *spanSubscriber) (bool, error) { + taskRun, err := h.taskRunRepo.GetBackfillTaskRun(ctx, ptr.Of(sub.t.GetWorkspaceID()), sub.t.GetID()) if err != nil { - logs.CtxError(ctx, "get task config failed, task_id=%d, err=%v", h.task.GetID(), err) - return err + logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), err) + return true, err } - if task == nil { - return errors.New("task config not found") + if taskRun == nil { + logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), err) + return true, err } - taskConfig := tconv.TaskPO2DTO(ctx, task, nil) - // 2. 解析回填时间窗口 - backfillTime, err := h.parseBackfillTime(ctx, task) - if err != nil { - logs.CtxError(ctx, "parse backfill time failed, task_id=%d, err=%v", h.task.GetID(), err) - return err - } + return taskRun.RunStatus == task.RunStatusDone, nil +} - // 3. 获取租户信息 - tenants, err := h.getTenantsForTask(ctx, task) +func (h *TraceHubServiceImpl) listSpans(ctx context.Context, sub *spanSubscriber) error { + backfillTime := sub.t.GetRule().GetBackfillEffectiveTime() + tenants, err := h.getTenants(ctx, loop_span.PlatformType(sub.t.GetRule().GetSpanFilters().GetPlatformType())) if err != nil { - logs.CtxError(ctx, "get tenants failed, task_id=%d, err=%v", h.task.GetID(), err) + logs.CtxError(ctx, "get tenants failed, task_id=%d, err=%v", sub.t.GetID(), err) return err } - // 4. 构建查询参数 + // todo: 从配置中获取分页大小 + //batchSize := c.tccCfg.BackfillProcessConfig().ListPageSize + //if batchSize == 0 { + // batchSize = pageSize + //} + // 构建查询参数 listParam := &repo.ListSpansParam{ Tenants: tenants, - Filters: h.buildSpanFilters(ctx, taskConfig), + Filters: h.buildSpanFilters(ctx, sub.t), StartAt: backfillTime.GetStartAt(), EndAt: backfillTime.GetEndAt(), - Limit: 1000, // 分页大小 + Limit: pageSize, // 分页大小 DescByStartTime: true, NotQueryAnnotation: true, // 回填时不需要查询注解 } - - // 5. 分页查询并发送数据 - return h.fetchAndSendSpans(ctx, listParam) -} - -// parseBackfillTime 解析回填时间窗口 -func (h *TraceHubServiceImpl) parseBackfillTime(ctx context.Context, taskConfig *entity.ObservabilityTask) (*task.EffectiveTime, error) { - // 优先使用 BackfillEffectiveTime - if taskConfig.BackfillEffectiveTime != nil && *taskConfig.BackfillEffectiveTime != "" { - var backfillTime task.EffectiveTime - if err := json.Unmarshal([]byte(*taskConfig.BackfillEffectiveTime), &backfillTime); err != nil { - logs.CtxWarn(ctx, "parse backfill effective time failed, use default, task_id=%d, err=%v", h.task.GetID(), err) - } else { - return &backfillTime, nil - } + taskRun, err := h.taskRunRepo.GetBackfillTaskRun(ctx, ptr.Of(sub.t.GetWorkspaceID()), sub.t.GetID()) + if err != nil { + logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), err) + return err } - return nil, errors.New("backfill effective time not found") - - //// 使用任务的有效时间 - //if taskConfig.EffectiveTime != nil && *taskConfig.EffectiveTime != "" { - // var effectiveTime task.EffectiveTime - // if err := json.Unmarshal([]byte(*taskConfig.EffectiveTime), &effectiveTime); err != nil { - // logs.CtxWarn(ctx, "parse effective time failed, use default, task_id=%d, err=%v", h.task.GetID(), err) - // } else { - // return &effectiveTime, nil - // } - //} - // - //// 使用默认时间窗口:过去24小时 - //now := time.Now().UnixMilli() - //startTime := now - 24*60*60*1000 // 24小时前 - //return &task.EffectiveTime{ - // StartAt: &startTime, - // EndAt: &now, - //}, nil -} - -// getTenantsForTask 获取任务的租户信息 -func (h *TraceHubServiceImpl) getTenantsForTask(ctx context.Context, taskConfig *entity.ObservabilityTask) ([]string, error) { - var platformType loop_span.PlatformType = loop_span.PlatformCozeLoop // 默认值 - - // 从 SpanFilter 中解析平台类型 - if taskConfig.SpanFilter != nil && *taskConfig.SpanFilter != "" { - var spanFilter map[string]interface{} - if err := json.Unmarshal([]byte(*taskConfig.SpanFilter), &spanFilter); err == nil { - if platform, ok := spanFilter["platform_type"].(string); ok { - platformType = loop_span.PlatformType(platform) - } - } + taskRunDTO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) + if taskRunDTO.BackfillRunDetail.LastSpanPageToken != nil { + listParam.PageToken = *taskRunDTO.BackfillRunDetail.LastSpanPageToken } - - return h.getTenants(ctx, platformType) + // 分页查询并发送数据 + return h.fetchAndSendSpans(ctx, listParam, sub) } type ListSpansReq struct { @@ -331,22 +250,19 @@ func (h *TraceHubServiceImpl) combineFilters(filters ...*loop_span.FilterFields) } // fetchAndSendSpans 分页获取并发送 span 数据 -func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam *repo.ListSpansParam) error { - pageToken := "" +func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam *repo.ListSpansParam, sub *spanSubscriber) error { totalCount := int64(0) - + pageToken := listParam.PageToken for { - listParam.PageToken = pageToken - result, err := h.traceRepo.ListSpans(ctx, listParam) if err != nil { - logs.CtxError(ctx, "list spans failed, task_id=%d, page_token=%s, err=%v", h.task.GetID(), pageToken, err) + logs.CtxError(ctx, "list spans failed, task_id=%d, page_token=%s, err=%v", sub.t.GetID(), pageToken, err) return err } if len(result.Spans) > 0 { // 发送到通道 - flushReq := &flushReq{ + flush := &flushReq{ retrievedSpanCount: int64(len(result.Spans)), pageToken: result.PageToken, spans: result.Spans, @@ -354,17 +270,17 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * } select { - case h.flushCh <- flushReq: + case h.flushCh <- flush: totalCount += int64(len(result.Spans)) - logs.CtxInfo(ctx, "sent %d spans to flush channel, total=%d, task_id=%d", len(result.Spans), totalCount, h.task.GetID()) + logs.CtxInfo(ctx, "sent %d spans to flush channel, total=%d, task_id=%d", len(result.Spans), totalCount, sub.t.GetID()) case <-ctx.Done(): - logs.CtxWarn(ctx, "context cancelled while sending spans, task_id=%d", h.task.GetID()) + logs.CtxWarn(ctx, "context cancelled while sending spans, task_id=%d", sub.t.GetID()) return ctx.Err() } } if !result.HasMore { - logs.CtxInfo(ctx, "completed listing spans, total_count=%d, task_id=%d", totalCount, h.task.GetID()) + logs.CtxInfo(ctx, "completed listing spans, total_count=%d, task_id=%d", totalCount, sub.t.GetID()) break } @@ -383,20 +299,17 @@ func (h *TraceHubServiceImpl) flushSpans(ctx context.Context, sub *spanSubscribe return } - flushed, sampled, err := h.doFlush(ctx, fr, sub) + _, _, err := h.doFlush(ctx, fr, sub) if err != nil { - logs.CtxError(ctx, "flush spans failed, task_id=%d, err=%v", h.task.GetID(), err) + logs.CtxError(ctx, "flush spans failed, task_id=%d, err=%v", sub.t.GetID(), err) // 收集错误,继续处理 h.flushErrLock.Lock() h.flushErr = append(h.flushErr, err) h.flushErrLock.Unlock() } - // 记录处理结果 - h.recordFlushResult(ctx, fr, flushed, sampled, err) - case <-ctx.Done(): - logs.CtxWarn(ctx, "flush spans context cancelled, task_id=%d", h.task.GetID()) + logs.CtxWarn(ctx, "flush spans context cancelled, task_id=%d", sub.t.GetID()) return } } @@ -407,74 +320,45 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp return 0, 0, nil } - logs.CtxInfo(ctx, "processing %d spans for backfill, task_id=%d", len(fr.spans), h.task.GetID()) + logs.CtxInfo(ctx, "processing %d spans for backfill, task_id=%d", len(fr.spans), sub.t.GetID()) - // 1. 数据预处理和过滤 - validSpans := h.filterValidSpans(fr.spans) - if len(validSpans) == 0 { - logs.CtxInfo(ctx, "no valid spans after filtering, task_id=%d", h.task.GetID()) - return 0, 0, nil - } - - // 2. 应用采样逻辑 - sampledSpans := h.applySampling(validSpans) + // 应用采样逻辑 + sampledSpans := h.applySampling(fr.spans, sub) if len(sampledSpans) == 0 { - logs.CtxInfo(ctx, "no spans after sampling, task_id=%d", h.task.GetID()) - return len(validSpans), 0, nil + logs.CtxInfo(ctx, "no spans after sampling, task_id=%d", sub.t.GetID()) + return len(fr.spans), 0, nil } - // 3. 执行具体的业务逻辑处理 + // 执行具体的业务逻辑处理 err := h.processSpansForBackfill(ctx, sampledSpans, sub) if err != nil { - logs.CtxError(ctx, "process spans failed, task_id=%d, err=%v", h.task.GetID(), err) - return len(validSpans), len(sampledSpans), err + logs.CtxError(ctx, "process spans failed, task_id=%d, err=%v", sub.t.GetID(), err) + return len(fr.spans), len(sampledSpans), err + } + taskRun, err := h.taskRunRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) + taskRunDTO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) + taskRunDTO.BackfillRunDetail.LastSpanPageToken = ptr.Of(fr.pageToken) + err = h.taskRunRepo.UpdateTaskRunWithOCC(ctx, taskRunDTO.ID, taskRunDTO.WorkspaceID, map[string]interface{}{ + "backfill_detail": taskRunDTO.BackfillRunDetail, + }) + if err != nil { + logs.CtxError(ctx, "update task run failed, task_id=%d, err=%v", sub.t.GetID(), err) + return len(fr.spans), len(sampledSpans), err } logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", - len(sampledSpans), len(validSpans), h.task.GetID()) + len(sampledSpans), len(fr.spans), sub.t.GetID()) - return len(validSpans), len(sampledSpans), nil -} - -// filterValidSpans 过滤有效的 span 数据 -func (h *TraceHubServiceImpl) filterValidSpans(spans []*loop_span.Span) []*loop_span.Span { - validSpans := make([]*loop_span.Span, 0, len(spans)) - - for _, span := range spans { - if h.isValidSpan(span) { - validSpans = append(validSpans, span) - } - } - - return validSpans -} - -// isValidSpan 检查 span 是否有效 -func (h *TraceHubServiceImpl) isValidSpan(span *loop_span.Span) bool { - if span == nil { - return false - } - - // 基本字段检查 - if span.SpanID == "" || span.TraceID == "" || span.WorkspaceID == "" { - return false - } - - // 时间有效性检查 - if span.StartTime <= 0 { - return false - } - - return true + return len(fr.spans), len(sampledSpans), nil } // applySampling 应用采样逻辑 -func (h *TraceHubServiceImpl) applySampling(spans []*loop_span.Span) []*loop_span.Span { - if h.task == nil || h.task.Rule == nil { +func (h *TraceHubServiceImpl) applySampling(spans []*loop_span.Span, sub *spanSubscriber) []*loop_span.Span { + if sub.t == nil || sub.t.Rule == nil { return spans } - sampler := h.task.GetRule().GetSampler() + sampler := sub.t.GetRule().GetSampler() if sampler == nil { return spans } @@ -515,7 +399,7 @@ func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans batch := spans[i:end] if err := h.processBatchSpans(ctx, batch, sub); err != nil { logs.CtxError(ctx, "process batch spans failed, task_id=%d, batch_start=%d, err=%v", - h.task.GetID(), i, err) + sub.t.GetID(), i, err) // 继续处理下一批,不因单批失败而中断 continue } @@ -545,8 +429,8 @@ func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*lo func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *loop_span.Span, sub *spanSubscriber) error { // 根据任务类型执行相应的处理逻辑 logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", - span.SpanID, span.TraceID, h.task.GetID()) - taskRunConfig, err := h.taskRunRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.taskID) + span.SpanID, span.TraceID, sub.t.GetID()) + taskRunConfig, err := h.taskRunRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) if err != nil { logs.CtxWarn(ctx, "GetLatestNewDataTaskRun, task_id=%d, err=%v", sub.taskID, err) return err @@ -582,26 +466,11 @@ func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *l return err } - // 这里可以添加具体的处理逻辑: - // 1. 数据验证 - // 2. 格式转换 - // 3. 业务逻辑处理 - // 4. 存储或转发 - return nil } -// recordFlushResult 记录刷新结果 -func (h *TraceHubServiceImpl) recordFlushResult(ctx context.Context, fr *flushReq, flushed, sampled int, err error) { - if err != nil { - logs.CtxError(ctx, "flush result: error=%v, task_id=%d", err, h.task.GetID()) - } else { - logs.CtxInfo(ctx, "flush result: flushed=%d, sampled=%d, task_id=%d", flushed, sampled, h.task.GetID()) - } -} - // onHandleDone 处理完成回调 -func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error) error { +func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error, sub *spanSubscriber) error { // 收集所有错误 h.flushErrLock.Lock() allErrors := append([]error{}, h.flushErr...) @@ -611,11 +480,11 @@ func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error) e h.flushErrLock.Unlock() if len(allErrors) > 0 { - logs.CtxWarn(ctx, "backfill completed with %d errors, task_id=%d", len(allErrors), h.task.GetID()) + logs.CtxWarn(ctx, "backfill completed with %d errors, task_id=%d", len(allErrors), sub.t.GetID()) // 返回第一个错误作为代表 return allErrors[0] } - logs.CtxInfo(ctx, "backfill completed successfully, task_id=%d", h.task.GetID()) + logs.CtxInfo(ctx, "backfill completed successfully, task_id=%d", sub.t.GetID()) return nil } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 004ff04c8..66f73dbbe 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -73,9 +73,8 @@ type TraceHubServiceImpl struct { traceRepo trace_repo.ITraceRepo tenantProvider tenant.ITenantProvider taskProcessor *processor.TaskProcessor + buildHelper service.TraceFilterProcessorBuilder - buildHelper service.TraceFilterProcessorBuilder - task *task.Task flushCh chan *flushReq flushErrLock sync.Mutex flushErr []error @@ -192,22 +191,6 @@ func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loo return subscribers[:keep], merr.ErrorOrNil() } -func (h *TraceHubServiceImpl) dispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { - merr := &multierror.Error{} - for _, sub := range subs { - if sub.t.GetTaskStatus() != task.TaskStatusRunning { - continue - } - logs.CtxInfo(ctx, " sub.AddSpan: %v", sub) - if err := sub.AddSpan(ctx, span); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "add span to subscriber, task_id=%d", sub.taskID)) - continue - } - logs.CtxInfo(ctx, "add span to subscriber, task_id=%d, log_id=%s, trace_id=%s, span_id=%s", sub.taskID, - span.LogID, span.TraceID, span.SpanID) - } - return merr.ErrorOrNil() -} func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { merr := &multierror.Error{} var needDispatchSubs []*spanSubscriber @@ -341,6 +324,23 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S return merr.ErrorOrNil() } +func (h *TraceHubServiceImpl) dispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { + merr := &multierror.Error{} + for _, sub := range subs { + if sub.t.GetTaskStatus() != task.TaskStatusRunning { + continue + } + logs.CtxInfo(ctx, " sub.AddSpan: %v", sub) + if err := sub.AddSpan(ctx, span); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "add span to subscriber, task_id=%d", sub.taskID)) + continue + } + logs.CtxInfo(ctx, "add span to subscriber, task_id=%d, log_id=%s, trace_id=%s, span_id=%s", sub.taskID, + span.LogID, span.TraceID, span.SpanID) + } + return merr.ErrorOrNil() +} + func (h *TraceHubServiceImpl) Close() { close(h.stopChan) } diff --git a/backend/modules/observability/domain/task/service/taskexe/types.go b/backend/modules/observability/domain/task/service/taskexe/types.go index df54bf1af..e2d1c113d 100644 --- a/backend/modules/observability/domain/task/service/taskexe/types.go +++ b/backend/modules/observability/domain/task/service/taskexe/types.go @@ -52,6 +52,11 @@ type OnFinishTaskChangeReq struct { IsFinish bool } +type EndTaskError struct { + TaskID int64 + Status task.TaskStatus + Reason string +} type Processor interface { ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 Invoke(ctx context.Context, config any, trigger *Trigger) error // 根据不同类型进行执行,如rpc回调、mq投递等 From 12b8a84a73af3d573dcf64c3022010aa59be185f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Wed, 24 Sep 2025 21:36:09 +0800 Subject: [PATCH 349/462] code change --- .../domain/task/service/task_service.go | 37 +- .../taskexe/processor/auto_evaluate.go | 317 ------------------ .../task/service/taskexe/processor/noop.go | 6 - .../task/service/taskexe/processor/utils.go | 228 +++++++++++++ .../domain/task/service/taskexe/types.go | 28 -- 5 files changed, 246 insertions(+), 370 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index a97ed3cbf..b10817a60 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -19,6 +19,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" @@ -201,25 +202,23 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e if validTaskStatus != "" { if validTaskStatus == task.TaskStatusDisabled { // 禁用操作处理 - //proc, err := processor.NewProcessor(ctx, task.TaskTypeAutoEval) - //if err != nil { - // logs.CtxError(ctx, "CreateTask NewProcessor err:%v", err) - // return err - //} - //taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) - //taskRuns := tconv.TaskRunPOs2DOs(ctx, taskPO.TaskRuns, nil) - //var taskRun *task.TaskRun - //for _, tr := range taskRuns { - // if tr.RunStatus == task.RunStatusRunning { - // taskRun = tr - // break - // } - //} - //if err = proc.Finish(ctx, taskRun, &taskexe.Trigger{Task: taskConfig, Span: nil, IsFinish: false}); err != nil { - // logs.CtxError(ctx, "proc Finish err:%v", err) - // return err - // - //} + proc := t.taskProcessor.GetTaskProcessor(taskPO.TaskType) + taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) + var taskRun *entity.TaskRun + for _, tr := range taskPO.TaskRuns { + if tr.RunStatus == task.RunStatusRunning { + taskRun = tr + break + } + } + if err = proc.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ + Task: taskConfig, + TaskRun: taskRun, + }); err != nil { + logs.CtxError(ctx, "proc Finish err:%v", err) + return err + + } } taskPO.TaskStatus = *req.TaskStatus } diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index c129ce8cf..f649f8879 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -11,9 +11,7 @@ import ( "github.com/apaxa-go/helper/strconvh" "github.com/bytedance/gg/gptr" - "github.com/bytedance/sonic" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" eval_target_d "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_target" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" @@ -30,11 +28,9 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" - "github.com/coze-dev/coze-loop/backend/pkg/json" "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/lang/slices" "github.com/coze-dev/coze-loop/backend/pkg/logs" - "github.com/coze-dev/cozeloop-go/spec/tracespec" ) var _ taskexe.Processor = (*AutoEvaluteProcessor)(nil) @@ -158,287 +154,6 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * return nil } -func ToJSONString(ctx context.Context, obj interface{}) string { - if obj == nil { - return "" - } - jsonData, err := sonic.Marshal(obj) - if err != nil { - logs.CtxError(ctx, "JSON marshal error: %v", err) - return "" - } - jsonStr := string(jsonData) - return jsonStr -} - -func resetStartTime(currentTime int64, originalStartTime int64, maxAliveTime int64) int64 { - if currentTime > originalStartTime { - // 计算需要跳过的周期数 - timeDiff := currentTime - originalStartTime - skipCycles := timeDiff / maxAliveTime - - // 跳过过期的时间段,直接计算新的周期开始时间 - return originalStartTime + (skipCycles * maxAliveTime) - } - return originalStartTime -} - -func getBasicEvaluationSetSchema(basicColumns []string) (*dataset0.DatasetSchema, []*expt.FieldMapping) { - evaluationSetSchema := dataset0.NewDatasetSchema() - var fromEvalSet []*expt.FieldMapping - for _, column := range basicColumns { - evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ - Key: gptr.Of(column), - Name: gptr.Of(column), - Description: gptr.Of(column), - ContentType: gptr.Of(common.ContentTypeText), - TextSchema: gptr.Of("{\"type\": \"string\"}"), - }) - fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ - FieldName: gptr.Of(column), - FromFieldName: gptr.Of(column), - }) - } - return evaluationSetSchema, fromEvalSet -} - -// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -// convertDatasetSchemaDTO2DO 转换数据集模式 -func convertDatasetSchemaDTO2DO(schema *dataset0.DatasetSchema) entity.DatasetSchema { - if schema == nil { - return entity.DatasetSchema{} - } - - result := entity.DatasetSchema{} - - if schema.IsSetFieldSchemas() { - fieldSchemas := schema.GetFieldSchemas() - result.FieldSchemas = make([]entity.FieldSchema, len(fieldSchemas)) - for i, fs := range fieldSchemas { - key := fs.GetKey() - if key == "" { - key = fs.GetName() - } - name := fs.GetName() - description := fs.GetDescription() - textSchema := fs.GetTextSchema() - result.FieldSchemas[i] = entity.FieldSchema{ - Key: &key, - Name: name, - Description: description, - ContentType: convertContentTypeDTO2DO(fs.GetContentType()), - TextSchema: textSchema, - } - } - } - - return result -} - -// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -// convertContentTypeDTO2DO 转换内容类型 -func convertContentTypeDTO2DO(contentType common.ContentType) entity.ContentType { - switch contentType { - case common.ContentTypeText: - return entity.ContentType_Text - case common.ContentTypeImage: - return entity.ContentType_Image - case common.ContentTypeAudio: - return entity.ContentType_Audio - case common.ContentTypeMultiPart: - return entity.ContentType_MultiPart - default: - return entity.ContentType_Text - } -} - -func getCategory(taskType task.TaskType) entity.DatasetCategory { - switch taskType { - case task.TaskTypeAutoEval: - return entity.DatasetCategory_Evaluation - default: - return entity.DatasetCategory_General - } -} - -// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, - evaluationSetSchema string) (turns []*eval_set.Turn) { - turns = make([]*eval_set.Turn, 0, len(spans)) - for _, span := range spans { - fieldData := buildItem(ctx, span, fieldMappings, evaluationSetSchema) - if len(fieldData) == 0 { - continue - } - turns = append(turns, &eval_set.Turn{ - FieldDataList: fieldData, - }) - } - return turns -} - -func buildDatasetItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []entity.FieldMapping, - workspaceID, taskID int64, dataset *entity.Dataset, -) (successItems, failedItems, allItems []*entity.DatasetItem) { - successItems = make([]*entity.DatasetItem, 0, len(spans)) - failedItems = make([]*entity.DatasetItem, 0) - allItems = make([]*entity.DatasetItem, 0, len(spans)) - for i, span := range spans { - item := buildDatasetItem(ctx, span, i, fieldMappings, workspaceID, taskID, dataset) - allItems = append(allItems, item) - if len(item.Error) > 0 { - failedItems = append(failedItems, item) - } else { - successItems = append(successItems, item) - } - } - - return successItems, failedItems, allItems -} - -func buildDatasetItem(ctx context.Context, span *loop_span.Span, i int, fieldMappings []entity.FieldMapping, workspaceID, taskID int64, - dataset *entity.Dataset, -) *entity.DatasetItem { - item := entity.NewDatasetItem(workspaceID, dataset.ID, span) - for _, mapping := range fieldMappings { - value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) - if err != nil { - // 非json但使用了jsonpath,也不报错,置空 - logs.CtxInfo(ctx, "Extract field failed, err:%v", err) - } - - content, errCode := entity.GetContentInfo(ctx, mapping.FieldSchema.ContentType, value) - if errCode == entity.DatasetErrorType_MismatchSchema { - item.AddError("invalid multi part", entity.DatasetErrorType_MismatchSchema, nil) - continue - } - - // 前端传入的是Name,评测集需要的是key,需要做一下mapping - key := dataset.GetFieldSchemaKeyByName(mapping.FieldSchema.Name) - if key == "" { - logs.CtxInfo(ctx, "Dataset field key is empty, name:%v", mapping.FieldSchema.Name) - item.AddError("Dataset field key is empty", entity.DatasetErrorType_InternalError, nil) - continue - } - item.AddFieldData(key, mapping.FieldSchema.Name, content) - item.ItemKey = gptr.Of(fmt.Sprintf("%s_%s_%s", taskID, span.TraceID, span.SpanID)) - } - return item -} - -// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, - evaluationSetSchema string) []*eval_set.FieldData { - var fieldDatas []*eval_set.FieldData - fieldDatas = append(fieldDatas, &eval_set.FieldData{ - Key: gptr.Of("trace_id"), - Name: gptr.Of("trace_id"), - Content: &common.Content{ - ContentType: gptr.Of(common.ContentTypeText), - Text: gptr.Of(span.TraceID), - }, - }) - fieldDatas = append(fieldDatas, &eval_set.FieldData{ - Key: gptr.Of("span_id"), - Name: gptr.Of("span_id"), - Content: &common.Content{ - ContentType: gptr.Of(common.ContentTypeText), - Text: gptr.Of(span.SpanID), - }, - }) - for _, mapping := range fieldMappings { - // 前端传入的是Name,评测集需要的是key,需要做一下mapping - if mapping.EvalSetName == nil { - logs.CtxInfo(ctx, "Evaluator field name is nil") - continue - } - var evaluationSetSchemas []*eval_set.FieldSchema - if evaluationSetSchema == "" { - logs.CtxInfo(ctx, "Evaluation set schema is nil") - continue - } - err := json.Unmarshal([]byte(evaluationSetSchema), &evaluationSetSchemas) - if err != nil { - logs.CtxInfo(ctx, "Unmarshal evaluation set schema failed, err:%v", err) - continue - } - for _, fieldSchema := range evaluationSetSchemas { - if fieldSchema.GetKey() == *mapping.EvalSetName { - key := fieldSchema.GetKey() - if key == "" { - logs.CtxInfo(ctx, "Evaluator field key is empty, name:%v", *mapping.FieldSchema.Name) - continue - } - value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) - if err != nil { - logs.CtxInfo(ctx, "Extract field failed, err:%v", err) - continue - } - content, err := GetContentInfo(ctx, fieldSchema.GetContentType(), value) - if err != nil { - logs.CtxInfo(ctx, "GetContentInfo failed, err:%v", err) - return nil - } - fieldDatas = append(fieldDatas, &eval_set.FieldData{ - Key: gptr.Of(key), - Name: gptr.Of(fieldSchema.GetName()), - Content: content, - }) - } - } - } - return fieldDatas -} - -// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 -func GetContentInfo(ctx context.Context, contentType common.ContentType, value string) (*common.Content, error) { - var content *common.Content - switch contentType { - case common.ContentTypeMultiPart: - var parts []tracespec.ModelMessagePart - err := json.Unmarshal([]byte(value), &parts) - if err != nil { - logs.CtxInfo(ctx, "Unmarshal multi part failed, err:%v", err) - return nil, err - } - var multiPart []*common.Content - for _, part := range parts { - // 本期仅支持回流图片的多模态数据,非ImageURL信息的,打包放进text - switch part.Type { - case tracespec.ModelMessagePartTypeImage: - if part.ImageURL == nil { - continue - } - multiPart = append(multiPart, &common.Content{ - ContentType: gptr.Of(common.ContentTypeImage), - Image: &common.Image{ - Name: gptr.Of(part.ImageURL.Name), - URL: gptr.Of(part.ImageURL.URL), - }, - }) - case tracespec.ModelMessagePartTypeText, tracespec.ModelMessagePartTypeFile: - multiPart = append(multiPart, &common.Content{ - ContentType: gptr.Of(common.ContentTypeText), - Text: gptr.Of(part.Text), - }) - default: - logs.CtxWarn(ctx, "Unsupported part type: %s", part.Type) - return nil, err - } - } - content = &common.Content{ - ContentType: gptr.Of(common.ContentTypeMultiPart), - MultiPart: multiPart, - } - default: - content = &common.Content{ - ContentType: gptr.Of(common.ContentTypeText), - Text: gptr.Of(value), - } - } - return content, nil -} - func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { @@ -646,38 +361,6 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param logs.CtxError(ctx, "[task-debug] GetEvaluationSet err:%v", err) return err } - //effectiveTime := currentTask.GetRule().GetEffectiveTime() - - //var cycleStartAt, cycleEndAt, endAt int64 - //currentTime := time.Now().UnixMilli() - // - //if effectiveTime.StartAt != nil && effectiveTime.EndAt != nil { - // endAt = effectiveTime.GetEndAt() - // if len(taskConfig.TaskRuns) == 0 { - // // 首次创建 taskrun,从任务生效时间开始 - // cycleStartAt = resetStartTime(currentTime, effectiveTime.GetStartAt(), maxAliveTime) - // } else { - // // 找到最新的 cycleEndAt 作为新的 cycleStartAt - // for _, run := range taskConfig.TaskRuns { - // if run.RunStartAt.UnixMilli() > cycleStartAt { - // cycleStartAt = run.RunEndAt.UnixMilli() - // } - // } - // cycleStartAt = resetStartTime(currentTime, cycleStartAt, maxAliveTime) - // } - // cycleEndAt = cycleStartAt + maxAliveTime - // - // // 确保周期开始时间不早于任务生效时间 - // if cycleStartAt < effectiveTime.GetStartAt() { - // cycleStartAt = effectiveTime.GetStartAt() - // cycleEndAt = cycleStartAt + maxAliveTime - // } - // - // // 确保周期结束时间不晚于任务结束时间 - // if cycleEndAt > effectiveTime.GetEndAt() { - // cycleEndAt = effectiveTime.GetEndAt() - // } - //} // 5、创建 taskrun taskRunConfig := &task.TaskRunConfig{ diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/noop.go b/backend/modules/observability/domain/task/service/taskexe/processor/noop.go index 4311387a1..aab1e8752 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/noop.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/noop.go @@ -24,31 +24,25 @@ func (p *NoopTaskProcessor) ValidateConfig(ctx context.Context, config any) erro } func (p *NoopTaskProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { - return nil } func (p *NoopTaskProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { - return nil } func (p *NoopTaskProcessor) OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error { - return nil } func (p *NoopTaskProcessor) OnFinishTaskChange(ctx context.Context, param taskexe.OnFinishTaskChangeReq) error { - return nil } func (p *NoopTaskProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { - return nil } func (p *NoopTaskProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { - return nil } diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go index 7cedd572a..2924cc5a8 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go @@ -9,10 +9,18 @@ import ( "time" "github.com/bytedance/gg/gptr" + "github.com/bytedance/sonic" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" + dataset0 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/pkg/json" "github.com/coze-dev/coze-loop/backend/pkg/logs" + "github.com/coze-dev/cozeloop-go/spec/tracespec" ) func getSession(ctx context.Context, task *task.Task) *common.Session { @@ -30,6 +38,15 @@ func getSession(ctx context.Context, task *task.Task) *common.Session { } } +func getCategory(taskType task.TaskType) entity.DatasetCategory { + switch taskType { + case task.TaskTypeAutoEval: + return entity.DatasetCategory_Evaluation + default: + return entity.DatasetCategory_General + } +} + // shouldTriggerBackfill 判断是否需要发送历史回溯MQ func ShouldTriggerBackfill(taskDO *task.Task) bool { // 检查任务类型 @@ -76,3 +93,214 @@ func ShouldTriggerNewData(ctx context.Context, taskDO *task.Task) bool { effectiveTime.GetStartAt() < effectiveTime.GetEndAt() && time.Now().After(time.UnixMilli(effectiveTime.GetStartAt())) } + +func ToJSONString(ctx context.Context, obj interface{}) string { + if obj == nil { + return "" + } + jsonData, err := sonic.Marshal(obj) + if err != nil { + logs.CtxError(ctx, "JSON marshal error: %v", err) + return "" + } + jsonStr := string(jsonData) + return jsonStr +} + +func getBasicEvaluationSetSchema(basicColumns []string) (*dataset0.DatasetSchema, []*expt.FieldMapping) { + evaluationSetSchema := dataset0.NewDatasetSchema() + var fromEvalSet []*expt.FieldMapping + for _, column := range basicColumns { + evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ + Key: gptr.Of(column), + Name: gptr.Of(column), + Description: gptr.Of(column), + ContentType: gptr.Of(common.ContentTypeText), + TextSchema: gptr.Of("{\"type\": \"string\"}"), + }) + fromEvalSet = append(fromEvalSet, &expt.FieldMapping{ + FieldName: gptr.Of(column), + FromFieldName: gptr.Of(column), + }) + } + return evaluationSetSchema, fromEvalSet +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +// convertDatasetSchemaDTO2DO 转换数据集模式 +func convertDatasetSchemaDTO2DO(schema *dataset0.DatasetSchema) entity.DatasetSchema { + if schema == nil { + return entity.DatasetSchema{} + } + + result := entity.DatasetSchema{} + + if schema.IsSetFieldSchemas() { + fieldSchemas := schema.GetFieldSchemas() + result.FieldSchemas = make([]entity.FieldSchema, len(fieldSchemas)) + for i, fs := range fieldSchemas { + key := fs.GetKey() + if key == "" { + key = fs.GetName() + } + name := fs.GetName() + description := fs.GetDescription() + textSchema := fs.GetTextSchema() + result.FieldSchemas[i] = entity.FieldSchema{ + Key: &key, + Name: name, + Description: description, + ContentType: convertContentTypeDTO2DO(fs.GetContentType()), + TextSchema: textSchema, + } + } + } + + return result +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +// convertContentTypeDTO2DO 转换内容类型 +func convertContentTypeDTO2DO(contentType common.ContentType) entity.ContentType { + switch contentType { + case common.ContentTypeText: + return entity.ContentType_Text + case common.ContentTypeImage: + return entity.ContentType_Image + case common.ContentTypeAudio: + return entity.ContentType_Audio + case common.ContentTypeMultiPart: + return entity.ContentType_MultiPart + default: + return entity.ContentType_Text + } +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, + evaluationSetSchema string) (turns []*eval_set.Turn) { + turns = make([]*eval_set.Turn, 0, len(spans)) + for _, span := range spans { + fieldData := buildItem(ctx, span, fieldMappings, evaluationSetSchema) + if len(fieldData) == 0 { + continue + } + turns = append(turns, &eval_set.Turn{ + FieldDataList: fieldData, + }) + } + return turns +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, + evaluationSetSchema string) []*eval_set.FieldData { + var fieldDatas []*eval_set.FieldData + fieldDatas = append(fieldDatas, &eval_set.FieldData{ + Key: gptr.Of("trace_id"), + Name: gptr.Of("trace_id"), + Content: &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(span.TraceID), + }, + }) + fieldDatas = append(fieldDatas, &eval_set.FieldData{ + Key: gptr.Of("span_id"), + Name: gptr.Of("span_id"), + Content: &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(span.SpanID), + }, + }) + for _, mapping := range fieldMappings { + // 前端传入的是Name,评测集需要的是key,需要做一下mapping + if mapping.EvalSetName == nil { + logs.CtxInfo(ctx, "Evaluator field name is nil") + continue + } + var evaluationSetSchemas []*eval_set.FieldSchema + if evaluationSetSchema == "" { + logs.CtxInfo(ctx, "Evaluation set schema is nil") + continue + } + err := json.Unmarshal([]byte(evaluationSetSchema), &evaluationSetSchemas) + if err != nil { + logs.CtxInfo(ctx, "Unmarshal evaluation set schema failed, err:%v", err) + continue + } + for _, fieldSchema := range evaluationSetSchemas { + if fieldSchema.GetKey() == *mapping.EvalSetName { + key := fieldSchema.GetKey() + if key == "" { + logs.CtxInfo(ctx, "Evaluator field key is empty, name:%v", *mapping.FieldSchema.Name) + continue + } + value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) + if err != nil { + logs.CtxInfo(ctx, "Extract field failed, err:%v", err) + continue + } + content, err := GetContentInfo(ctx, fieldSchema.GetContentType(), value) + if err != nil { + logs.CtxInfo(ctx, "GetContentInfo failed, err:%v", err) + return nil + } + fieldDatas = append(fieldDatas, &eval_set.FieldData{ + Key: gptr.Of(key), + Name: gptr.Of(fieldSchema.GetName()), + Content: content, + }) + } + } + } + return fieldDatas +} + +// todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 +func GetContentInfo(ctx context.Context, contentType common.ContentType, value string) (*common.Content, error) { + var content *common.Content + switch contentType { + case common.ContentTypeMultiPart: + var parts []tracespec.ModelMessagePart + err := json.Unmarshal([]byte(value), &parts) + if err != nil { + logs.CtxInfo(ctx, "Unmarshal multi part failed, err:%v", err) + return nil, err + } + var multiPart []*common.Content + for _, part := range parts { + // 本期仅支持回流图片的多模态数据,非ImageURL信息的,打包放进text + switch part.Type { + case tracespec.ModelMessagePartTypeImage: + if part.ImageURL == nil { + continue + } + multiPart = append(multiPart, &common.Content{ + ContentType: gptr.Of(common.ContentTypeImage), + Image: &common.Image{ + Name: gptr.Of(part.ImageURL.Name), + URL: gptr.Of(part.ImageURL.URL), + }, + }) + case tracespec.ModelMessagePartTypeText, tracespec.ModelMessagePartTypeFile: + multiPart = append(multiPart, &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(part.Text), + }) + default: + logs.CtxWarn(ctx, "Unsupported part type: %s", part.Type) + return nil, err + } + } + content = &common.Content{ + ContentType: gptr.Of(common.ContentTypeMultiPart), + MultiPart: multiPart, + } + default: + content = &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(value), + } + } + return content, nil +} diff --git a/backend/modules/observability/domain/task/service/taskexe/types.go b/backend/modules/observability/domain/task/service/taskexe/types.go index e2d1c113d..7bd18051e 100644 --- a/backend/modules/observability/domain/task/service/taskexe/types.go +++ b/backend/modules/observability/domain/task/service/taskexe/types.go @@ -17,25 +17,12 @@ type Trigger struct { Span *loop_span.Span IsFinish bool } -type Config struct { - DatasetID *int64 `json:"dataset_id"` - Task *task.Task -} var ( ErrInvalidConfig = errors.New("invalid config") ErrInvalidTrigger = errors.New("invalid span trigger") ) -type TaskOp string - -const ( - TaskOpUndefined TaskOp = "undefined" - TaskOpCreateBackfill TaskOp = "create_backfill" - TaskOpNewData TaskOp = "create_new_data" - TaskOpFinish TaskOp = "finish" -) - type OnCreateTaskRunChangeReq struct { CurrentTask *task.Task RunType task.TaskRunType @@ -52,25 +39,10 @@ type OnFinishTaskChangeReq struct { IsFinish bool } -type EndTaskError struct { - TaskID int64 - Status task.TaskStatus - Reason string -} type Processor interface { ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 Invoke(ctx context.Context, config any, trigger *Trigger) error // 根据不同类型进行执行,如rpc回调、mq投递等 - //Finish(ctx context.Context, config any, trigger *Trigger) error //Finish - //OnCreateChangeProcessor(ctx context.Context, task *task.Task) error //OnchangeProcessor 调用 evaluation 接口进行前期物料准备 - - //OnChangeProcessor(ctx context.Context, config *Config, isBackFill bool) error //OnCreateChangeProcessor - //OnUpdateChangeProcessor(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error //OnUpdateChangeProcessor - //OnFinishChangeProcessor(ctx context.Context, task *task.Task) error //OnFinishChangeProcessor - - //OnCreateTaskRunProcessor(ctx context.Context, currentTask *task.Task, runConfig *task.TaskRunConfig, runType task.TaskRunType) (*task_entity.TaskRun, error) //OnCreateTaskRunProcessor - //OnFinishTaskRunProcessor(ctx context.Context, taskRun *task_entity.TaskRun) error //OnFinishTaskRunProcessor - OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error OnFinishTaskChange(ctx context.Context, param OnFinishTaskChangeReq) error From e715fca16fa0c62d628492fb60de8c3b6d3c246b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 11:57:20 +0800 Subject: [PATCH 350/462] add debug log --- .../task/service/taskexe/processor/auto_evaluate.go | 2 +- .../domain/task/service/taskexe/tracehub/trace_hub.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index f649f8879..f24d8d868 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -248,7 +248,7 @@ func (p *AutoEvaluteProcessor) OnFinishTaskChange(ctx context.Context, param tas return err } if param.IsFinish { - logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v", param.Task.GetID(), param.TaskRun) + logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v,isFinish:%v", param.Task.GetID(), param.TaskRun, param.IsFinish) if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) return err diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 66f73dbbe..0125f5514 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -262,6 +262,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S endTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) // 达到任务时间期限 if time.Now().After(endTime) { + logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: taskRunConfig, @@ -274,12 +275,12 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } // 达到任务上限 if taskCount+1 > sampler.GetSampleSize() { + logs.CtxWarn(ctx, "taskCount+1 > sampler.GetSampleSize() Finish processor, task_id=%d", sub.taskID) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: taskRunConfig, IsFinish: true, }); err != nil { - logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } @@ -288,13 +289,12 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) // 达到单次任务时间期限 if time.Now().After(cycleEndTime) { - logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") + logs.CtxInfo(ctx, "time.Now().After(cycleEndTime) Finish processor, task_id=%d", sub.taskID) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: taskRunConfig, IsFinish: false, }); err != nil { - logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } @@ -308,12 +308,12 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } // 达到单次任务上限 if taskRunCount+1 > sampler.GetCycleCount() { + logs.CtxWarn(ctx, "taskRunCount+1 > sampler.GetCycleCount(), task_id=%d", sub.taskID) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: taskRunConfig, IsFinish: false, }); err != nil { - logs.CtxWarn(ctx, "taskRunCount+1 > sampler.GetCycleCount(), task_id=%d", sub.taskID) merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) continue } From 5077fb44a42d0e0fe85ce533f0a223b2dd60fe02 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 12:53:39 +0800 Subject: [PATCH 351/462] add debug log --- .../domain/task/service/taskexe/tracehub/scheduled_task.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 74c6b0468..8901e7344 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -167,6 +167,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } if taskInfo.GetTaskStatus() == task.TaskStatusRunning && taskInfo.GetRule().GetSampler().GetIsCycle() { + logs.CtxInfo(ctx, "taskID:%d, taskRun.RunEndAt:%v", taskInfo.GetID(), taskRun.RunEndAt) // 达到单次任务时间期限 if time.Now().After(taskRun.RunEndAt) { logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") From 700feb54f8bce2343cd7f08d7a754998ea52ea39 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 12:58:45 +0800 Subject: [PATCH 352/462] add debug log --- .../domain/task/service/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 0125f5514..7ea244e73 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -262,7 +262,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S endTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) // 达到任务时间期限 if time.Now().After(endTime) { - logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) + logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d, endTime=%v, now=%v", sub.taskID, endTime, time.Now()) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: taskRunConfig, From 4e52e71ccd0c27c26c551e627c0b23e63648beac Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 13:45:03 +0800 Subject: [PATCH 353/462] fix time --- .../domain/task/service/taskexe/tracehub/trace_hub.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 7ea244e73..a6c7a26d7 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -259,7 +259,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, taskRunConfig.ID) logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) - endTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) + endTime := time.UnixMilli(sub.t.GetRule().GetEffectiveTime().GetEndAt()) // 达到任务时间期限 if time.Now().After(endTime) { logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d, endTime=%v, now=%v", sub.taskID, endTime, time.Now()) From 4432fcd2dca60eb79861aa02a258260461fec78d Mon Sep 17 00:00:00 2001 From: tpfz Date: Thu, 25 Sep 2025 14:55:01 +0800 Subject: [PATCH 354/462] add run_id --- .../modules/evaluation/domain/service/expt_run_item_impl.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/modules/evaluation/domain/service/expt_run_item_impl.go b/backend/modules/evaluation/domain/service/expt_run_item_impl.go index 5b8843d73..0813cb5e1 100644 --- a/backend/modules/evaluation/domain/service/expt_run_item_impl.go +++ b/backend/modules/evaluation/domain/service/expt_run_item_impl.go @@ -200,6 +200,9 @@ func (e *ExptItemEvalCtxExecutor) buildExptTurnEvalCtx(ctx context.Context, turn if fieldData.Name == "span_id" { etec.Ext["span_id"] = fieldData.Content.GetText() } + if fieldData.Name == "run_id" { + etec.Ext["run_id"] = fieldData.Content.GetText() + } } etec.Ext["task_id"] = eiec.Expt.SourceID etec.Ext["workspace_id"] = strconv.FormatInt(eiec.Expt.SpaceID, 10) From 4495a5bf4d8871fbd2a5847d7dbba565e00a9a0e Mon Sep 17 00:00:00 2001 From: tpfz Date: Thu, 25 Sep 2025 14:55:46 +0800 Subject: [PATCH 355/462] add run_id --- .../modules/evaluation/domain/service/expt_run_item_impl.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/modules/evaluation/domain/service/expt_run_item_impl.go b/backend/modules/evaluation/domain/service/expt_run_item_impl.go index 0813cb5e1..c8402967d 100644 --- a/backend/modules/evaluation/domain/service/expt_run_item_impl.go +++ b/backend/modules/evaluation/domain/service/expt_run_item_impl.go @@ -203,6 +203,9 @@ func (e *ExptItemEvalCtxExecutor) buildExptTurnEvalCtx(ctx context.Context, turn if fieldData.Name == "run_id" { etec.Ext["run_id"] = fieldData.Content.GetText() } + if fieldData.Name == "trace_id" { + etec.Ext["trace_id"] = fieldData.Content.GetText() + } } etec.Ext["task_id"] = eiec.Expt.SourceID etec.Ext["workspace_id"] = strconv.FormatInt(eiec.Expt.SpaceID, 10) From c1a8d9f6783d2c8c2102e395401b28f49b5baf1f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 14:56:03 +0800 Subject: [PATCH 356/462] fix callback --- .../service/taskexe/processor/auto_evaluate.go | 15 +++++++-------- .../task/service/taskexe/processor/utils.go | 8 ++++++++ .../task/service/taskexe/tracehub/callback.go | 15 +++++++-------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index f24d8d868..fc4acf39d 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -6,7 +6,6 @@ package processor import ( "context" "fmt" - "strconv" "time" "github.com/apaxa-go/helper/strconvh" @@ -138,12 +137,12 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * AllowPartialAdd: gptr.Of(true), ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), - Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), - "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, - "start_time": strconvh.FormatInt64(trigger.Span.StartTime), - "task_id": strconvh.FormatInt64(trigger.Task.GetID()), - "task_run_id": strconvh.FormatInt64(taskRun.ID), - "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, + //Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), + // "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, + // "start_time": strconvh.FormatInt64(trigger.Span.StartTime), + // "task_id": strconvh.FormatInt64(trigger.Task.GetID()), + // "task_run_id": strconvh.FormatInt64(taskRun.ID), + // "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, Session: session, }) if err != nil { @@ -265,7 +264,7 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param var evaluationSetColumns []string var evaluatorVersionIds []int64 var evaluatorFieldMappings []*expt.EvaluatorFieldMapping - evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id") + evaluationSetColumns = append(evaluationSetColumns, "span_id", "trace_id", "run_id") autoEvaluateConfigs := currentTask.GetTaskConfig().GetAutoEvaluateConfigs() evaluationSetSchema, fromEvalSet := getBasicEvaluationSetSchema(evaluationSetColumns) for _, autoEvaluateConfig := range autoEvaluateConfigs { diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go index 2924cc5a8..b617c5f5a 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go @@ -212,6 +212,14 @@ func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task. Text: gptr.Of(span.SpanID), }, }) + fieldDatas = append(fieldDatas, &eval_set.FieldData{ + Key: gptr.Of("run_id"), + Name: gptr.Of("run_id"), + Content: &common.Content{ + ContentType: gptr.Of(common.ContentTypeText), + Text: gptr.Of(span.SpanID), + }, + }) for _, mapping := range fieldMappings { // 前端传入的是Name,评测集需要的是key,需要做一下mapping if mapping.EvalSetName == nil { diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go index 6110faf5f..590bc528c 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go @@ -42,9 +42,9 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr if err != nil { return err } - //todo:loopspan下 - platform_type := event.Ext["platform_type"] - tenants, err := h.getTenants(ctx, loop_span.PlatformType(platform_type)) + ////todo:loopspan下 + //platform_type := event.Ext["platform_type"] + tenants, err := h.getTenants(ctx, loop_span.PlatformType("loop_all")) if err != nil { return err } @@ -126,8 +126,8 @@ func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResu return err } workspaceIDStr := turn.Ext["workspace_id"] - platform_type := turn.Ext["platform_type"] - tenants, err := h.getTenants(ctx, loop_span.PlatformType(platform_type)) + //platform_type := turn.Ext["platform_type"] + tenants, err := h.getTenants(ctx, loop_span.PlatformType("loop_all")) if err != nil { return err } @@ -136,7 +136,7 @@ func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResu []string{spanID}, traceID, workspaceIDStr, - startTime/1000-5*time.Second.Milliseconds(), + startTime/1000-24*7*time.Hour.Milliseconds(), startTime/1000+5*time.Second.Milliseconds(), ) if len(spans) == 0 { @@ -234,7 +234,7 @@ func (h *TraceHubServiceImpl) getSpan(ctx context.Context, tenants []string, spa // updateTaskRunStatusCount 根据Status更新Redis计数 func (h *TraceHubServiceImpl) updateTaskRunStatusCount(ctx context.Context, taskID int64, turn *entity.OnlineExptTurnEvalResult) error { // 从Ext中获取taskRunID - taskRunIDStr := turn.Ext["task_run_id"] + taskRunIDStr := turn.Ext["run_id"] if taskRunIDStr == "" { return fmt.Errorf("task_run_id not found in ext") } @@ -243,7 +243,6 @@ func (h *TraceHubServiceImpl) updateTaskRunStatusCount(ctx context.Context, task if err != nil { return fmt.Errorf("invalid task_run_id: %s, err: %v", taskRunIDStr, err) } - // 根据Status增加相应计数 switch turn.Status { case entity.EvaluatorRunStatus_Success: From a47c3a0dc560b0c99ffa0d43632829636dae0b3c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 15:05:23 +0800 Subject: [PATCH 357/462] fix time --- .../modules/observability/application/wire.go | 1 + .../task/service/taskexe/tracehub/callback.go | 20 ++++++++++++++++++- .../service/taskexe/tracehub/trace_hub.go | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index f2c579c98..cf16fad8d 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -255,6 +255,7 @@ func InitTaskApplication( db db.Provider, idgen idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, + benefit benefit.IBenefitService, ckDb ck.Provider, redis redis.Cmdable, mqFactory mq.IFactory, diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go index 590bc528c..01ca11fa4 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go @@ -9,6 +9,7 @@ import ( "strconv" "time" + "github.com/coze-dev/coze-loop/backend/infra/external/benefit" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" @@ -126,17 +127,34 @@ func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResu return err } workspaceIDStr := turn.Ext["workspace_id"] + workspaceID, err := strconv.ParseInt(workspaceIDStr, 10, 64) + if err != nil { + return err + } //platform_type := turn.Ext["platform_type"] tenants, err := h.getTenants(ctx, loop_span.PlatformType("loop_all")) if err != nil { return err } + var storageDuration int64 = 1 + res, err := h.benefitSvc.CheckTraceBenefit(ctx, &benefit.CheckTraceBenefitParams{ + ConnectorUID: session.UserIDInCtxOrEmpty(ctx), + SpaceID: workspaceID, + }) + if err != nil { + logs.CtxWarn(ctx, "fail to check trace benefit, %v", err) + } else if res == nil { + logs.CtxWarn(ctx, "fail to get trace benefit, got nil response") + } else if res != nil { + storageDuration = res.StorageDuration + } + spans, err := h.getSpan(ctx, tenants, []string{spanID}, traceID, workspaceIDStr, - startTime/1000-24*7*time.Hour.Milliseconds(), + startTime/1000-(24*time.Duration(storageDuration)*time.Hour).Milliseconds(), startTime/1000+5*time.Second.Milliseconds(), ) if len(spans) == 0 { diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index a6c7a26d7..f9064e134 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -11,6 +11,7 @@ import ( "time" "github.com/bytedance/gg/gslice" + "github.com/coze-dev/coze-loop/backend/infra/external/benefit" "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" @@ -41,6 +42,7 @@ func NewTraceHubImpl( tenantProvider tenant.ITenantProvider, buildHelper service.TraceFilterProcessorBuilder, taskProcessor *processor.TaskProcessor, + benefitSvc benefit.IBenefitService, ) (ITraceHubService, error) { // 创建两个不同间隔的独立定时器 scheduledTaskTicker := time.NewTicker(5 * time.Minute) // 任务状态生命周期管理 - 5分钟间隔 @@ -55,6 +57,7 @@ func NewTraceHubImpl( tenantProvider: tenantProvider, buildHelper: buildHelper, taskProcessor: taskProcessor, + benefitSvc: benefitSvc, } // 立即启动定时任务 @@ -74,6 +77,7 @@ type TraceHubServiceImpl struct { tenantProvider tenant.ITenantProvider taskProcessor *processor.TaskProcessor buildHelper service.TraceFilterProcessorBuilder + benefitSvc benefit.IBenefitService flushCh chan *flushReq flushErrLock sync.Mutex From 65e91d1ea64ac2c06e72251b18c0064d24f822c5 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 15:06:04 +0800 Subject: [PATCH 358/462] fix wire gen --- backend/modules/observability/application/wire.go | 1 - backend/modules/observability/application/wire_gen.go | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index cf16fad8d..17003edf2 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -265,7 +265,6 @@ func InitTaskApplication( evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client, - benefit benefit.IBenefitService, fileClient fileservice.Client, taskProcessor task_processor.TaskProcessor) (ITaskApplication, error) { wire.Build(taskSet) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index af5dfa102..d7d2fc674 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -197,7 +197,7 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb return iTraceIngestionApplication, nil } -func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, ckDb ck.Provider, redis2 redis.Cmdable, mqFactory mq.IFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client, benefit2 benefit.IBenefitService, fileClient fileservice.Client, taskProcessor processor.TaskProcessor) (ITaskApplication, error) { +func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, benefit2 benefit.IBenefitService, ckDb ck.Provider, redis2 redis.Cmdable, mqFactory mq.IFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client, fileClient fileservice.Client, taskProcessor processor.TaskProcessor) (ITaskApplication, error) { iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) @@ -238,7 +238,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto iTenantProvider := tenant.NewTenantProvider(iTraceConfig) iFileProvider := file.NewFileRPCProvider(fileClient) traceFilterProcessorBuilder := NewTraceProcessorBuilder(iTraceConfig, iFileProvider, benefit2) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTaskRunRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTaskRunRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor, benefit2) if err != nil { return nil, err } From bbfc8be2b1e32fb8e3e7adc51c6cedf00279f110 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 15:23:04 +0800 Subject: [PATCH 359/462] fix --- .../domain/task/service/task_service.go | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index b10817a60..06cb98489 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -19,7 +19,6 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" @@ -202,23 +201,22 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e if validTaskStatus != "" { if validTaskStatus == task.TaskStatusDisabled { // 禁用操作处理 - proc := t.taskProcessor.GetTaskProcessor(taskPO.TaskType) - taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) - var taskRun *entity.TaskRun - for _, tr := range taskPO.TaskRuns { - if tr.RunStatus == task.RunStatusRunning { - taskRun = tr - break - } - } - if err = proc.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ - Task: taskConfig, - TaskRun: taskRun, - }); err != nil { - logs.CtxError(ctx, "proc Finish err:%v", err) - return err - - } + //proc := t.taskProcessor.GetTaskProcessor(taskPO.TaskType) + //taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) + //var taskRun *entity.TaskRun + //for _, tr := range taskPO.TaskRuns { + // if tr.RunStatus == task.RunStatusRunning { + // taskRun = tr + // break + // } + //} + //if err = proc.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ + // Task: taskConfig, + // TaskRun: taskRun, + //}); err != nil { + // logs.CtxError(ctx, "proc Finish err:%v", err) + // return err + //} } taskPO.TaskStatus = *req.TaskStatus } From 1bea8e1ba47e0b4fc4ef08398731dc6220a9bddd Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 16:17:49 +0800 Subject: [PATCH 360/462] fix --- .../task/service/taskexe/processor/auto_evaluate.go | 2 +- .../domain/task/service/taskexe/processor/utils.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index fc4acf39d..599cebce2 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -105,7 +105,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { mapping = append(mapping, autoEvaluateConfig.FieldMappings...) } - turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema()) + turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema(), taskRun.ID) if len(turns) == 0 { logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") return nil diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go index b617c5f5a..4196c0f78 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go @@ -178,10 +178,10 @@ func convertContentTypeDTO2DO(contentType common.ContentType) entity.ContentType // todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, - evaluationSetSchema string) (turns []*eval_set.Turn) { + evaluationSetSchema string, taskRunID string) (turns []*eval_set.Turn) { turns = make([]*eval_set.Turn, 0, len(spans)) for _, span := range spans { - fieldData := buildItem(ctx, span, fieldMappings, evaluationSetSchema) + fieldData := buildItem(ctx, span, fieldMappings, evaluationSetSchema, taskRunID) if len(fieldData) == 0 { continue } @@ -194,7 +194,7 @@ func buildItems(ctx context.Context, spans []*loop_span.Span, fieldMappings []*t // todo:[xun]和手动回流的代码逻辑一样,需要抽取公共代码 func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task.EvaluateFieldMapping, - evaluationSetSchema string) []*eval_set.FieldData { + evaluationSetSchema string, taskRunID string) []*eval_set.FieldData { var fieldDatas []*eval_set.FieldData fieldDatas = append(fieldDatas, &eval_set.FieldData{ Key: gptr.Of("trace_id"), @@ -217,7 +217,7 @@ func buildItem(ctx context.Context, span *loop_span.Span, fieldMappings []*task. Name: gptr.Of("run_id"), Content: &common.Content{ ContentType: gptr.Of(common.ContentTypeText), - Text: gptr.Of(span.SpanID), + Text: gptr.Of(taskRunID), }, }) for _, mapping := range fieldMappings { From b9630ca70993e5c036e26aa791ef93f611462a76 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 16:19:28 +0800 Subject: [PATCH 361/462] fix --- .../domain/task/service/taskexe/processor/auto_evaluate.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 599cebce2..726a2644b 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -6,6 +6,7 @@ package processor import ( "context" "fmt" + "strconv" "time" "github.com/apaxa-go/helper/strconvh" @@ -105,7 +106,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { mapping = append(mapping, autoEvaluateConfig.FieldMappings...) } - turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema(), taskRun.ID) + turns := buildItems(ctx, []*loop_span.Span{trigger.Span}, mapping, taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetSchema(), strconv.FormatInt(taskRun.ID, 10)) if len(turns) == 0 { logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") return nil From 7e93e416f4899d4b556c0b379f2f38df1b281729 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 17:17:30 +0800 Subject: [PATCH 362/462] feat: [Coda] add detailed logging to track context cancellation reasons in backfill.go (LogID: 20250925170706010091109004992A774) Co-Authored-By: Coda --- .../task/service/taskexe/tracehub/backfill.go | 149 ++++++++++++++++-- 1 file changed, 132 insertions(+), 17 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 4be6b7840..8ea09d945 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -29,10 +29,14 @@ const pageSize = 100 func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 1. 设置当前任务上下文 ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + logs.CtxInfo(ctx, "starting backfill task, event_task_id=%d", event.TaskID) + sub, err := h.setBackfillTask(ctx, event) if err != nil { + logs.CtxError(ctx, "failed to set backfill task, event_task_id=%d, err=%v", event.TaskID, err) return err } + logs.CtxInfo(ctx, "backfill task setup completed, task_id=%d", sub.t.GetID()) // 2. 判断回溯任务是否已完成 - 避免重复执行 isDone, err := h.isBackfillDone(ctx, sub) @@ -47,34 +51,46 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi // 3. 创建并发控制机制 - 设置上下文和等待组 subCtx, cancel := context.WithCancel(ctx) - defer cancel() + defer func() { + logs.CtxInfo(ctx, "cancelling backfill context, task_id=%d", sub.t.GetID()) + cancel() + }() wg := sync.WaitGroup{} + logs.CtxInfo(ctx, "created backfill context and wait group, task_id=%d", sub.t.GetID()) // 初始化 flushCh 通道和错误收集器 h.flushCh = make(chan *flushReq, 100) // 缓冲通道,避免阻塞 h.flushErrLock.Lock() h.flushErr = nil // 重置错误收集器 h.flushErrLock.Unlock() + logs.CtxInfo(ctx, "initialized flush channel and error collector, task_id=%d", sub.t.GetID()) // 4. 启动异步刷新处理 - 通过 goroutine 实现并发处理 wg.Add(1) + logs.CtxInfo(ctx, "starting flush spans goroutine, task_id=%d", sub.t.GetID()) goroutine.Go(ctx, func() { defer wg.Done() h.flushSpans(subCtx, sub) }) // 5. 获取 span 数据 - 从观测服务获取需要处理的数据 + logs.CtxInfo(ctx, "starting to list spans, task_id=%d", sub.t.GetID()) listErr := h.listSpans(subCtx, sub) if listErr != nil { logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", sub.t.GetID(), listErr) // continue on error,不中断处理流程 + } else { + logs.CtxInfo(ctx, "completed listing spans, task_id=%d", sub.t.GetID()) } // 关闭通道并等待处理完成 + logs.CtxInfo(ctx, "closing flush channel and waiting for completion, task_id=%d", sub.t.GetID()) close(h.flushCh) wg.Wait() + logs.CtxInfo(ctx, "all goroutines completed, task_id=%d", sub.t.GetID()) // 6. 同步等待完成 - 确保所有数据处理完毕 + logs.CtxInfo(ctx, "handling backfill completion, task_id=%d", sub.t.GetID()) return h.onHandleDone(ctx, listErr, sub) } @@ -252,14 +268,25 @@ func (h *TraceHubServiceImpl) combineFilters(filters ...*loop_span.FilterFields) // fetchAndSendSpans 分页获取并发送 span 数据 func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam *repo.ListSpansParam, sub *spanSubscriber) error { totalCount := int64(0) + pageCount := 0 pageToken := listParam.PageToken + + logs.CtxInfo(ctx, "starting to fetch spans, initial_page_token=%s, task_id=%d", pageToken, sub.t.GetID()) + for { + pageCount++ + logs.CtxDebug(ctx, "fetching page #%d, page_token=%s, task_id=%d", pageCount, pageToken, sub.t.GetID()) + result, err := h.traceRepo.ListSpans(ctx, listParam) if err != nil { - logs.CtxError(ctx, "list spans failed, task_id=%d, page_token=%s, err=%v", sub.t.GetID(), pageToken, err) + logs.CtxError(ctx, "list spans failed, page #%d, task_id=%d, page_token=%s, err=%v", + pageCount, sub.t.GetID(), pageToken, err) return err } + logs.CtxInfo(ctx, "fetched page #%d with %d spans, has_more=%t, task_id=%d", + pageCount, len(result.Spans), result.HasMore, sub.t.GetID()) + if len(result.Spans) > 0 { // 发送到通道 flush := &flushReq{ @@ -272,44 +299,99 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * select { case h.flushCh <- flush: totalCount += int64(len(result.Spans)) - logs.CtxInfo(ctx, "sent %d spans to flush channel, total=%d, task_id=%d", len(result.Spans), totalCount, sub.t.GetID()) + logs.CtxInfo(ctx, "sent page #%d (%d spans) to flush channel, total_spans=%d, task_id=%d", + pageCount, len(result.Spans), totalCount, sub.t.GetID()) case <-ctx.Done(): - logs.CtxWarn(ctx, "context cancelled while sending spans, task_id=%d", sub.t.GetID()) - return ctx.Err() + ctxErr := ctx.Err() + logs.CtxWarn(ctx, "context cancelled while sending spans on page #%d, task_id=%d, context_error=%v, total_processed=%d", + pageCount, sub.t.GetID(), ctxErr, totalCount) + + // 详细分析取消原因 + if errors.Is(ctxErr, context.Canceled) { + logs.CtxWarn(ctx, "fetch operation cancelled manually, page #%d, task_id=%d", pageCount, sub.t.GetID()) + } else if errors.Is(ctxErr, context.DeadlineExceeded) { + logs.CtxWarn(ctx, "fetch operation timed out, page #%d, task_id=%d", pageCount, sub.t.GetID()) + } + return ctxErr } + } else { + logs.CtxInfo(ctx, "page #%d returned no spans, task_id=%d", pageCount, sub.t.GetID()) } if !result.HasMore { - logs.CtxInfo(ctx, "completed listing spans, total_count=%d, task_id=%d", totalCount, sub.t.GetID()) + logs.CtxInfo(ctx, "completed listing spans, total_pages=%d, total_spans=%d, task_id=%d", + pageCount, totalCount, sub.t.GetID()) break } pageToken = result.PageToken + listParam.PageToken = pageToken + logs.CtxDebug(ctx, "continuing to next page, new_page_token=%s, task_id=%d", pageToken, sub.t.GetID()) } return nil } func (h *TraceHubServiceImpl) flushSpans(ctx context.Context, sub *spanSubscriber) { + logs.CtxInfo(ctx, "flush spans goroutine started, task_id=%d", sub.t.GetID()) + defer logs.CtxInfo(ctx, "flush spans goroutine exited, task_id=%d", sub.t.GetID()) + + processedCount := 0 for { select { case fr, ok := <-h.flushCh: if !ok { // 通道已关闭,退出 + logs.CtxInfo(ctx, "flush channel closed, processed %d batches, task_id=%d", processedCount, sub.t.GetID()) return } + processedCount++ + logs.CtxDebug(ctx, "processing flush request #%d with %d spans, task_id=%d", + processedCount, fr.retrievedSpanCount, sub.t.GetID()) + _, _, err := h.doFlush(ctx, fr, sub) if err != nil { - logs.CtxError(ctx, "flush spans failed, task_id=%d, err=%v", sub.t.GetID(), err) + logs.CtxError(ctx, "flush spans failed, batch #%d, task_id=%d, err=%v", + processedCount, sub.t.GetID(), err) // 收集错误,继续处理 h.flushErrLock.Lock() h.flushErr = append(h.flushErr, err) h.flushErrLock.Unlock() + } else { + logs.CtxDebug(ctx, "successfully processed flush request #%d, task_id=%d", + processedCount, sub.t.GetID()) } case <-ctx.Done(): - logs.CtxWarn(ctx, "flush spans context cancelled, task_id=%d", sub.t.GetID()) + // 详细分析上下文取消的原因 + ctxErr := ctx.Err() + logs.CtxWarn(ctx, "flush spans context cancelled, task_id=%d, processed_batches=%d, context_error=%v", + sub.t.GetID(), processedCount, ctxErr) + + // 进一步区分取消原因 + if errors.Is(ctxErr, context.Canceled) { + logs.CtxWarn(ctx, "context was manually cancelled (context.Canceled), task_id=%d, likely due to parent context cancellation or explicit cancel() call", + sub.t.GetID()) + } else if errors.Is(ctxErr, context.DeadlineExceeded) { + logs.CtxWarn(ctx, "context deadline exceeded (context.DeadlineExceeded), task_id=%d, operation timed out", + sub.t.GetID()) + } else { + logs.CtxWarn(ctx, "unknown context cancellation reason, task_id=%d, error=%v", + sub.t.GetID(), ctxErr) + } + + // 检查是否还有待处理的数据 + select { + case fr, ok := <-h.flushCh: + if ok { + logs.CtxWarn(ctx, "context cancelled but flush channel still has data, remaining_spans=%d, task_id=%d", + fr.retrievedSpanCount, sub.t.GetID()) + } + default: + logs.CtxInfo(ctx, "no remaining data in flush channel when context cancelled, task_id=%d", sub.t.GetID()) + } + return } } @@ -317,37 +399,58 @@ func (h *TraceHubServiceImpl) flushSpans(ctx context.Context, sub *spanSubscribe func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *spanSubscriber) (flushed, sampled int, _ error) { if fr == nil || len(fr.spans) == 0 { + logs.CtxDebug(ctx, "flush request is empty, skipping, task_id=%d", sub.t.GetID()) return 0, 0, nil } - logs.CtxInfo(ctx, "processing %d spans for backfill, task_id=%d", len(fr.spans), sub.t.GetID()) + logs.CtxInfo(ctx, "starting to process %d spans for backfill, page_token=%s, no_more=%t, task_id=%d", + len(fr.spans), fr.pageToken, fr.noMore, sub.t.GetID()) // 应用采样逻辑 + logs.CtxDebug(ctx, "applying sampling logic, original_count=%d, task_id=%d", len(fr.spans), sub.t.GetID()) sampledSpans := h.applySampling(fr.spans, sub) if len(sampledSpans) == 0 { - logs.CtxInfo(ctx, "no spans after sampling, task_id=%d", sub.t.GetID()) + logs.CtxInfo(ctx, "no spans after sampling, original_count=%d, task_id=%d", len(fr.spans), sub.t.GetID()) return len(fr.spans), 0, nil } + logs.CtxInfo(ctx, "sampling completed, sampled_count=%d, original_count=%d, task_id=%d", + len(sampledSpans), len(fr.spans), sub.t.GetID()) // 执行具体的业务逻辑处理 + logs.CtxDebug(ctx, "starting business logic processing, sampled_spans=%d, task_id=%d", + len(sampledSpans), sub.t.GetID()) err := h.processSpansForBackfill(ctx, sampledSpans, sub) if err != nil { - logs.CtxError(ctx, "process spans failed, task_id=%d, err=%v", sub.t.GetID(), err) + logs.CtxError(ctx, "process spans failed, sampled_spans=%d, task_id=%d, err=%v", + len(sampledSpans), sub.t.GetID(), err) return len(fr.spans), len(sampledSpans), err } + logs.CtxDebug(ctx, "business logic processing completed, task_id=%d", sub.t.GetID()) + + // 更新任务运行状态 + logs.CtxDebug(ctx, "updating task run with page token, page_token=%s, task_id=%d", + fr.pageToken, sub.t.GetID()) taskRun, err := h.taskRunRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) + if err != nil { + logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), err) + return len(fr.spans), len(sampledSpans), err + } + taskRunDTO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) taskRunDTO.BackfillRunDetail.LastSpanPageToken = ptr.Of(fr.pageToken) err = h.taskRunRepo.UpdateTaskRunWithOCC(ctx, taskRunDTO.ID, taskRunDTO.WorkspaceID, map[string]interface{}{ "backfill_detail": taskRunDTO.BackfillRunDetail, }) if err != nil { - logs.CtxError(ctx, "update task run failed, task_id=%d, err=%v", sub.t.GetID(), err) + logs.CtxError(ctx, "update task run failed, task_run_id=%d, task_id=%d, err=%v", + taskRunDTO.ID, sub.t.GetID(), err) return len(fr.spans), len(sampledSpans), err } + logs.CtxDebug(ctx, "task run updated successfully, page_token=%s, task_id=%d", + fr.pageToken, sub.t.GetID()) - logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", - len(sampledSpans), len(fr.spans), sub.t.GetID()) + logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), page_token=%s, task_id=%d", + len(sampledSpans), len(fr.spans), fr.pageToken, sub.t.GetID()) return len(fr.spans), len(sampledSpans), nil } @@ -471,20 +574,32 @@ func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *l // onHandleDone 处理完成回调 func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error, sub *spanSubscriber) error { + logs.CtxInfo(ctx, "handling backfill completion, task_id=%d", sub.t.GetID()) + // 收集所有错误 h.flushErrLock.Lock() allErrors := append([]error{}, h.flushErr...) + flushErrorCount := len(h.flushErr) if listErr != nil { allErrors = append(allErrors, listErr) } h.flushErrLock.Unlock() if len(allErrors) > 0 { - logs.CtxWarn(ctx, "backfill completed with %d errors, task_id=%d", len(allErrors), sub.t.GetID()) + logs.CtxWarn(ctx, "backfill completed with errors, total_errors=%d, flush_errors=%d, list_error=%v, task_id=%d", + len(allErrors), flushErrorCount, listErr, sub.t.GetID()) + + // 详细记录所有错误 + for i, err := range allErrors { + logs.CtxError(ctx, "backfill error #%d: %v, task_id=%d", i+1, err, sub.t.GetID()) + } + // 返回第一个错误作为代表 + logs.CtxError(ctx, "returning first error as representative, error=%v, task_id=%d", + allErrors[0], sub.t.GetID()) return allErrors[0] } - logs.CtxInfo(ctx, "backfill completed successfully, task_id=%d", sub.t.GetID()) + logs.CtxInfo(ctx, "backfill completed successfully without errors, task_id=%d", sub.t.GetID()) return nil -} +} \ No newline at end of file From 5e8d563624e9aa2968cdb9085cfc510e08bb7419 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 19:40:40 +0800 Subject: [PATCH 363/462] fix --- .../task/service/taskexe/tracehub/backfill.go | 149 ++---------------- 1 file changed, 17 insertions(+), 132 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 8ea09d945..4be6b7840 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -29,14 +29,10 @@ const pageSize = 100 func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 1. 设置当前任务上下文 ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") - logs.CtxInfo(ctx, "starting backfill task, event_task_id=%d", event.TaskID) - sub, err := h.setBackfillTask(ctx, event) if err != nil { - logs.CtxError(ctx, "failed to set backfill task, event_task_id=%d, err=%v", event.TaskID, err) return err } - logs.CtxInfo(ctx, "backfill task setup completed, task_id=%d", sub.t.GetID()) // 2. 判断回溯任务是否已完成 - 避免重复执行 isDone, err := h.isBackfillDone(ctx, sub) @@ -51,46 +47,34 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi // 3. 创建并发控制机制 - 设置上下文和等待组 subCtx, cancel := context.WithCancel(ctx) - defer func() { - logs.CtxInfo(ctx, "cancelling backfill context, task_id=%d", sub.t.GetID()) - cancel() - }() + defer cancel() wg := sync.WaitGroup{} - logs.CtxInfo(ctx, "created backfill context and wait group, task_id=%d", sub.t.GetID()) // 初始化 flushCh 通道和错误收集器 h.flushCh = make(chan *flushReq, 100) // 缓冲通道,避免阻塞 h.flushErrLock.Lock() h.flushErr = nil // 重置错误收集器 h.flushErrLock.Unlock() - logs.CtxInfo(ctx, "initialized flush channel and error collector, task_id=%d", sub.t.GetID()) // 4. 启动异步刷新处理 - 通过 goroutine 实现并发处理 wg.Add(1) - logs.CtxInfo(ctx, "starting flush spans goroutine, task_id=%d", sub.t.GetID()) goroutine.Go(ctx, func() { defer wg.Done() h.flushSpans(subCtx, sub) }) // 5. 获取 span 数据 - 从观测服务获取需要处理的数据 - logs.CtxInfo(ctx, "starting to list spans, task_id=%d", sub.t.GetID()) listErr := h.listSpans(subCtx, sub) if listErr != nil { logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", sub.t.GetID(), listErr) // continue on error,不中断处理流程 - } else { - logs.CtxInfo(ctx, "completed listing spans, task_id=%d", sub.t.GetID()) } // 关闭通道并等待处理完成 - logs.CtxInfo(ctx, "closing flush channel and waiting for completion, task_id=%d", sub.t.GetID()) close(h.flushCh) wg.Wait() - logs.CtxInfo(ctx, "all goroutines completed, task_id=%d", sub.t.GetID()) // 6. 同步等待完成 - 确保所有数据处理完毕 - logs.CtxInfo(ctx, "handling backfill completion, task_id=%d", sub.t.GetID()) return h.onHandleDone(ctx, listErr, sub) } @@ -268,25 +252,14 @@ func (h *TraceHubServiceImpl) combineFilters(filters ...*loop_span.FilterFields) // fetchAndSendSpans 分页获取并发送 span 数据 func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam *repo.ListSpansParam, sub *spanSubscriber) error { totalCount := int64(0) - pageCount := 0 pageToken := listParam.PageToken - - logs.CtxInfo(ctx, "starting to fetch spans, initial_page_token=%s, task_id=%d", pageToken, sub.t.GetID()) - for { - pageCount++ - logs.CtxDebug(ctx, "fetching page #%d, page_token=%s, task_id=%d", pageCount, pageToken, sub.t.GetID()) - result, err := h.traceRepo.ListSpans(ctx, listParam) if err != nil { - logs.CtxError(ctx, "list spans failed, page #%d, task_id=%d, page_token=%s, err=%v", - pageCount, sub.t.GetID(), pageToken, err) + logs.CtxError(ctx, "list spans failed, task_id=%d, page_token=%s, err=%v", sub.t.GetID(), pageToken, err) return err } - logs.CtxInfo(ctx, "fetched page #%d with %d spans, has_more=%t, task_id=%d", - pageCount, len(result.Spans), result.HasMore, sub.t.GetID()) - if len(result.Spans) > 0 { // 发送到通道 flush := &flushReq{ @@ -299,99 +272,44 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * select { case h.flushCh <- flush: totalCount += int64(len(result.Spans)) - logs.CtxInfo(ctx, "sent page #%d (%d spans) to flush channel, total_spans=%d, task_id=%d", - pageCount, len(result.Spans), totalCount, sub.t.GetID()) + logs.CtxInfo(ctx, "sent %d spans to flush channel, total=%d, task_id=%d", len(result.Spans), totalCount, sub.t.GetID()) case <-ctx.Done(): - ctxErr := ctx.Err() - logs.CtxWarn(ctx, "context cancelled while sending spans on page #%d, task_id=%d, context_error=%v, total_processed=%d", - pageCount, sub.t.GetID(), ctxErr, totalCount) - - // 详细分析取消原因 - if errors.Is(ctxErr, context.Canceled) { - logs.CtxWarn(ctx, "fetch operation cancelled manually, page #%d, task_id=%d", pageCount, sub.t.GetID()) - } else if errors.Is(ctxErr, context.DeadlineExceeded) { - logs.CtxWarn(ctx, "fetch operation timed out, page #%d, task_id=%d", pageCount, sub.t.GetID()) - } - return ctxErr + logs.CtxWarn(ctx, "context cancelled while sending spans, task_id=%d", sub.t.GetID()) + return ctx.Err() } - } else { - logs.CtxInfo(ctx, "page #%d returned no spans, task_id=%d", pageCount, sub.t.GetID()) } if !result.HasMore { - logs.CtxInfo(ctx, "completed listing spans, total_pages=%d, total_spans=%d, task_id=%d", - pageCount, totalCount, sub.t.GetID()) + logs.CtxInfo(ctx, "completed listing spans, total_count=%d, task_id=%d", totalCount, sub.t.GetID()) break } pageToken = result.PageToken - listParam.PageToken = pageToken - logs.CtxDebug(ctx, "continuing to next page, new_page_token=%s, task_id=%d", pageToken, sub.t.GetID()) } return nil } func (h *TraceHubServiceImpl) flushSpans(ctx context.Context, sub *spanSubscriber) { - logs.CtxInfo(ctx, "flush spans goroutine started, task_id=%d", sub.t.GetID()) - defer logs.CtxInfo(ctx, "flush spans goroutine exited, task_id=%d", sub.t.GetID()) - - processedCount := 0 for { select { case fr, ok := <-h.flushCh: if !ok { // 通道已关闭,退出 - logs.CtxInfo(ctx, "flush channel closed, processed %d batches, task_id=%d", processedCount, sub.t.GetID()) return } - processedCount++ - logs.CtxDebug(ctx, "processing flush request #%d with %d spans, task_id=%d", - processedCount, fr.retrievedSpanCount, sub.t.GetID()) - _, _, err := h.doFlush(ctx, fr, sub) if err != nil { - logs.CtxError(ctx, "flush spans failed, batch #%d, task_id=%d, err=%v", - processedCount, sub.t.GetID(), err) + logs.CtxError(ctx, "flush spans failed, task_id=%d, err=%v", sub.t.GetID(), err) // 收集错误,继续处理 h.flushErrLock.Lock() h.flushErr = append(h.flushErr, err) h.flushErrLock.Unlock() - } else { - logs.CtxDebug(ctx, "successfully processed flush request #%d, task_id=%d", - processedCount, sub.t.GetID()) } case <-ctx.Done(): - // 详细分析上下文取消的原因 - ctxErr := ctx.Err() - logs.CtxWarn(ctx, "flush spans context cancelled, task_id=%d, processed_batches=%d, context_error=%v", - sub.t.GetID(), processedCount, ctxErr) - - // 进一步区分取消原因 - if errors.Is(ctxErr, context.Canceled) { - logs.CtxWarn(ctx, "context was manually cancelled (context.Canceled), task_id=%d, likely due to parent context cancellation or explicit cancel() call", - sub.t.GetID()) - } else if errors.Is(ctxErr, context.DeadlineExceeded) { - logs.CtxWarn(ctx, "context deadline exceeded (context.DeadlineExceeded), task_id=%d, operation timed out", - sub.t.GetID()) - } else { - logs.CtxWarn(ctx, "unknown context cancellation reason, task_id=%d, error=%v", - sub.t.GetID(), ctxErr) - } - - // 检查是否还有待处理的数据 - select { - case fr, ok := <-h.flushCh: - if ok { - logs.CtxWarn(ctx, "context cancelled but flush channel still has data, remaining_spans=%d, task_id=%d", - fr.retrievedSpanCount, sub.t.GetID()) - } - default: - logs.CtxInfo(ctx, "no remaining data in flush channel when context cancelled, task_id=%d", sub.t.GetID()) - } - + logs.CtxWarn(ctx, "flush spans context cancelled, task_id=%d", sub.t.GetID()) return } } @@ -399,58 +317,37 @@ func (h *TraceHubServiceImpl) flushSpans(ctx context.Context, sub *spanSubscribe func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *spanSubscriber) (flushed, sampled int, _ error) { if fr == nil || len(fr.spans) == 0 { - logs.CtxDebug(ctx, "flush request is empty, skipping, task_id=%d", sub.t.GetID()) return 0, 0, nil } - logs.CtxInfo(ctx, "starting to process %d spans for backfill, page_token=%s, no_more=%t, task_id=%d", - len(fr.spans), fr.pageToken, fr.noMore, sub.t.GetID()) + logs.CtxInfo(ctx, "processing %d spans for backfill, task_id=%d", len(fr.spans), sub.t.GetID()) // 应用采样逻辑 - logs.CtxDebug(ctx, "applying sampling logic, original_count=%d, task_id=%d", len(fr.spans), sub.t.GetID()) sampledSpans := h.applySampling(fr.spans, sub) if len(sampledSpans) == 0 { - logs.CtxInfo(ctx, "no spans after sampling, original_count=%d, task_id=%d", len(fr.spans), sub.t.GetID()) + logs.CtxInfo(ctx, "no spans after sampling, task_id=%d", sub.t.GetID()) return len(fr.spans), 0, nil } - logs.CtxInfo(ctx, "sampling completed, sampled_count=%d, original_count=%d, task_id=%d", - len(sampledSpans), len(fr.spans), sub.t.GetID()) // 执行具体的业务逻辑处理 - logs.CtxDebug(ctx, "starting business logic processing, sampled_spans=%d, task_id=%d", - len(sampledSpans), sub.t.GetID()) err := h.processSpansForBackfill(ctx, sampledSpans, sub) if err != nil { - logs.CtxError(ctx, "process spans failed, sampled_spans=%d, task_id=%d, err=%v", - len(sampledSpans), sub.t.GetID(), err) + logs.CtxError(ctx, "process spans failed, task_id=%d, err=%v", sub.t.GetID(), err) return len(fr.spans), len(sampledSpans), err } - logs.CtxDebug(ctx, "business logic processing completed, task_id=%d", sub.t.GetID()) - - // 更新任务运行状态 - logs.CtxDebug(ctx, "updating task run with page token, page_token=%s, task_id=%d", - fr.pageToken, sub.t.GetID()) taskRun, err := h.taskRunRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) - if err != nil { - logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), err) - return len(fr.spans), len(sampledSpans), err - } - taskRunDTO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) taskRunDTO.BackfillRunDetail.LastSpanPageToken = ptr.Of(fr.pageToken) err = h.taskRunRepo.UpdateTaskRunWithOCC(ctx, taskRunDTO.ID, taskRunDTO.WorkspaceID, map[string]interface{}{ "backfill_detail": taskRunDTO.BackfillRunDetail, }) if err != nil { - logs.CtxError(ctx, "update task run failed, task_run_id=%d, task_id=%d, err=%v", - taskRunDTO.ID, sub.t.GetID(), err) + logs.CtxError(ctx, "update task run failed, task_id=%d, err=%v", sub.t.GetID(), err) return len(fr.spans), len(sampledSpans), err } - logs.CtxDebug(ctx, "task run updated successfully, page_token=%s, task_id=%d", - fr.pageToken, sub.t.GetID()) - logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), page_token=%s, task_id=%d", - len(sampledSpans), len(fr.spans), fr.pageToken, sub.t.GetID()) + logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", + len(sampledSpans), len(fr.spans), sub.t.GetID()) return len(fr.spans), len(sampledSpans), nil } @@ -574,32 +471,20 @@ func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *l // onHandleDone 处理完成回调 func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error, sub *spanSubscriber) error { - logs.CtxInfo(ctx, "handling backfill completion, task_id=%d", sub.t.GetID()) - // 收集所有错误 h.flushErrLock.Lock() allErrors := append([]error{}, h.flushErr...) - flushErrorCount := len(h.flushErr) if listErr != nil { allErrors = append(allErrors, listErr) } h.flushErrLock.Unlock() if len(allErrors) > 0 { - logs.CtxWarn(ctx, "backfill completed with errors, total_errors=%d, flush_errors=%d, list_error=%v, task_id=%d", - len(allErrors), flushErrorCount, listErr, sub.t.GetID()) - - // 详细记录所有错误 - for i, err := range allErrors { - logs.CtxError(ctx, "backfill error #%d: %v, task_id=%d", i+1, err, sub.t.GetID()) - } - + logs.CtxWarn(ctx, "backfill completed with %d errors, task_id=%d", len(allErrors), sub.t.GetID()) // 返回第一个错误作为代表 - logs.CtxError(ctx, "returning first error as representative, error=%v, task_id=%d", - allErrors[0], sub.t.GetID()) return allErrors[0] } - logs.CtxInfo(ctx, "backfill completed successfully without errors, task_id=%d", sub.t.GetID()) + logs.CtxInfo(ctx, "backfill completed successfully, task_id=%d", sub.t.GetID()) return nil -} \ No newline at end of file +} From 31e91b678c1b27cfb0164af7d2f9557cd1461ab6 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 19:46:26 +0800 Subject: [PATCH 364/462] fix panic --- .../domain/task/service/taskexe/tracehub/backfill.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 4be6b7840..617383e30 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -150,7 +150,7 @@ func (h *TraceHubServiceImpl) listSpans(ctx context.Context, sub *spanSubscriber return err } taskRunDTO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) - if taskRunDTO.BackfillRunDetail.LastSpanPageToken != nil { + if taskRunDTO.BackfillRunDetail != nil && taskRunDTO.BackfillRunDetail.LastSpanPageToken != nil { listParam.PageToken = *taskRunDTO.BackfillRunDetail.LastSpanPageToken } // 分页查询并发送数据 From 351b951bbd58ae36d034e15bd8c423f32b5dbe9f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 20:01:10 +0800 Subject: [PATCH 365/462] add SearchDatasets --- .../modules/observability/domain/component/rpc/dataset.go | 5 +++++ .../observability/infra/rpc/evaluationset/evaluation_set.go | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/backend/modules/observability/domain/component/rpc/dataset.go b/backend/modules/observability/domain/component/rpc/dataset.go index b1602bd09..96901e3d8 100644 --- a/backend/modules/observability/domain/component/rpc/dataset.go +++ b/backend/modules/observability/domain/component/rpc/dataset.go @@ -17,6 +17,7 @@ type IDatasetProvider interface { UpdateDatasetSchema(ctx context.Context, dataset *entity.Dataset) error GetDataset(ctx context.Context, workspaceID, datasetID int64, category entity.DatasetCategory) (*entity.Dataset, error) ClearDatasetItems(ctx context.Context, workspaceID, datasetID int64, category entity.DatasetCategory) error + SearchDatasets(ctx context.Context, workspaceID int64, datasetID *int64, category entity.DatasetCategory, name *string) ([]*entity.Dataset, error) AddDatasetItems(ctx context.Context, datasetID int64, category entity.DatasetCategory, items []*entity.DatasetItem) ([]*entity.DatasetItem, []entity.ItemErrorGroup, error) ValidateDatasetItems(ctx context.Context, dataset *entity.Dataset, items []*entity.DatasetItem, ignoreCurrentCount *bool) ([]*entity.DatasetItem, []entity.ItemErrorGroup, error) } @@ -54,3 +55,7 @@ func (d *noopDatasetProvider) AddDatasetItems(ctx context.Context, datasetID int func (d *noopDatasetProvider) ValidateDatasetItems(ctx context.Context, dataset *entity.Dataset, items []*entity.DatasetItem, ignoreCurrentCount *bool) ([]*entity.DatasetItem, []entity.ItemErrorGroup, error) { return nil, nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("dataset category is invalid")) } + +func (d *noopDatasetProvider) SearchDatasets(ctx context.Context, workspaceID int64, datasetID *int64, category entity.DatasetCategory, name *string) ([]*entity.Dataset, error) { + return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("dataset category is invalid")) +} diff --git a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go index 9b77950f5..9381aac23 100644 --- a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go +++ b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go @@ -141,6 +141,11 @@ func (d *EvaluationSetProvider) GetDataset(ctx context.Context, workspaceID, dat return dataset, nil } +// SearchDatasets 搜索数据集 +func (d *EvaluationSetProvider) SearchDatasets(ctx context.Context, workspaceID int64, datasetID *int64, category entity.DatasetCategory, name *string) ([]*entity.Dataset, error) { + return nil, nil +} + // ClearDatasetItems 清空数据集项 func (d *EvaluationSetProvider) ClearDatasetItems(ctx context.Context, workspaceID, datasetID int64, category entity.DatasetCategory) error { if workspaceID == 0 { From 03a9a3130d87dfa1c910a9a55afdf7d31869d795 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 20:09:53 +0800 Subject: [PATCH 366/462] fix SearchDatasets(ctx context.Context, workspaceID in --- backend/modules/observability/domain/component/rpc/dataset.go | 4 ++-- .../observability/infra/rpc/evaluationset/evaluation_set.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/component/rpc/dataset.go b/backend/modules/observability/domain/component/rpc/dataset.go index 96901e3d8..616a8673e 100644 --- a/backend/modules/observability/domain/component/rpc/dataset.go +++ b/backend/modules/observability/domain/component/rpc/dataset.go @@ -17,7 +17,7 @@ type IDatasetProvider interface { UpdateDatasetSchema(ctx context.Context, dataset *entity.Dataset) error GetDataset(ctx context.Context, workspaceID, datasetID int64, category entity.DatasetCategory) (*entity.Dataset, error) ClearDatasetItems(ctx context.Context, workspaceID, datasetID int64, category entity.DatasetCategory) error - SearchDatasets(ctx context.Context, workspaceID int64, datasetID *int64, category entity.DatasetCategory, name *string) ([]*entity.Dataset, error) + SearchDatasets(ctx context.Context, workspaceID int64, datasetID int64, category entity.DatasetCategory, name string) ([]*entity.Dataset, error) AddDatasetItems(ctx context.Context, datasetID int64, category entity.DatasetCategory, items []*entity.DatasetItem) ([]*entity.DatasetItem, []entity.ItemErrorGroup, error) ValidateDatasetItems(ctx context.Context, dataset *entity.Dataset, items []*entity.DatasetItem, ignoreCurrentCount *bool) ([]*entity.DatasetItem, []entity.ItemErrorGroup, error) } @@ -56,6 +56,6 @@ func (d *noopDatasetProvider) ValidateDatasetItems(ctx context.Context, dataset return nil, nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("dataset category is invalid")) } -func (d *noopDatasetProvider) SearchDatasets(ctx context.Context, workspaceID int64, datasetID *int64, category entity.DatasetCategory, name *string) ([]*entity.Dataset, error) { +func (d *noopDatasetProvider) SearchDatasets(ctx context.Context, workspaceID int64, datasetID int64, category entity.DatasetCategory, name string) ([]*entity.Dataset, error) { return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("dataset category is invalid")) } diff --git a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go index 9381aac23..72a73b53b 100644 --- a/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go +++ b/backend/modules/observability/infra/rpc/evaluationset/evaluation_set.go @@ -142,7 +142,7 @@ func (d *EvaluationSetProvider) GetDataset(ctx context.Context, workspaceID, dat } // SearchDatasets 搜索数据集 -func (d *EvaluationSetProvider) SearchDatasets(ctx context.Context, workspaceID int64, datasetID *int64, category entity.DatasetCategory, name *string) ([]*entity.Dataset, error) { +func (d *EvaluationSetProvider) SearchDatasets(ctx context.Context, workspaceID int64, datasetID int64, category entity.DatasetCategory, name string) ([]*entity.Dataset, error) { return nil, nil } From 77261067e93ddbd03f040b5497ad7d2bdd3633ab Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 20:44:11 +0800 Subject: [PATCH 367/462] fix RawSpanConvertToLoopSpan --- backend/modules/observability/domain/task/entity/event.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go index 0c622ff32..8890408ef 100644 --- a/backend/modules/observability/domain/task/entity/event.go +++ b/backend/modules/observability/domain/task/entity/event.go @@ -127,6 +127,7 @@ func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { s.Tags["fornax_space_id"] = "" } spaceID := s.Tags["fornax_space_id"].(string) + spanType := s.Tags["span_type"].(string) result := &loop_span.Span{ StartTime: s.StartTimeInUs / 1000, @@ -139,7 +140,7 @@ func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { CallType: callType, WorkspaceID: spaceID, SpanName: s.SpanName, - SpanType: s.SpanType, + SpanType: spanType, Method: s.Method, StatusCode: s.StatusCode, Input: s.SensitiveTags.Input, From 7ab9988946cdea01caf7f8348695da7a475e1eb7 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 25 Sep 2025 21:14:29 +0800 Subject: [PATCH 368/462] add debuglog --- .../service/taskexe/tracehub/subscriber.go | 42 +------------------ 1 file changed, 1 insertion(+), 41 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go index ccd982d88..5e43c9614 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go @@ -79,49 +79,9 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, if task == nil || task.Rule == nil { return false, nil } - //var customFilterFields, obsFilterFields, filterFields []*loop_span.FilterField - //platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(context.Background(), loop_span.PlatformType(task.Rule.SpanFilters.GetPlatformType())) - //if err != nil { - // return false, err - //} - //builtinFilter, err := buildBuiltinFilters(ctx, platformFilter, &ListSpansReq{ - // WorkspaceID: task.GetWorkspaceID(), - // SpanListType: loop_span.SpanListType(task.GetRule().GetSpanFilters().GetSpanListType()), - //}) - //if err != nil { - // return false, err - //} - //if builtinFilter == nil { - // return false, err - //} - // - //for _, v := range builtinFilter.FilterFields { - // obsFilterFields = append(obsFilterFields, &loop_span.FilterField{ - // FieldName: v.FieldName, - // FieldType: v.FieldType, - // Values: v.Values, - // QueryType: v.QueryType, - // QueryAndOr: v.QueryAndOr, - // SubFilter: v.SubFilter, - // }) - //} - //filterFields = append(filterFields, obsFilterFields...) - //for _, v := range task.Rule.SpanFilters.Filters.FilterFields { - // customFilterFields = append(customFilterFields, &loop_span.FilterField{ - // FieldName: v.GetFieldName(), - // FieldType: loop_span.FieldType(v.GetFieldType()), - // Values: v.Values, - // QueryType: ptr.Of(loop_span.QueryTypeEnum(v.GetQueryType())), - // QueryAndOr: ptr.Of(loop_span.QueryAndOrEnum(v.GetQueryAndOr())), - // }) - //} - //filterFields = append(filterFields, customFilterFields...) - //filter := &loop_span.FilterFields{ - // FilterFields: filterFields, - // QueryAndOr: gptr.Of(loop_span.QueryAndOrEnumAnd), - //} filters := s.buildSpanFilters(ctx, task) + logs.CtxInfo(ctx, "spanSubscriber Match, taskID: %d, span: %v, filters: %v", s.taskID, span, filters) if !filters.Satisfied(span) { return false, nil } From e8c6d7a310715db06c0d36a4901493066c37b373 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 11:45:22 +0800 Subject: [PATCH 369/462] feat: [Coda] implement FilterFieldsDO2DTO conversion function (LogID: 20250928114148010091110241630A99A) Co-Authored-By: Coda --- .../application/convertor/filter.go | 37 +++++++++++++++++++ .../domain/trace/entity/loop_span/filter.go | 17 +++++++++ 2 files changed, 54 insertions(+) diff --git a/backend/modules/observability/application/convertor/filter.go b/backend/modules/observability/application/convertor/filter.go index 59c7367a5..a23b9ee53 100644 --- a/backend/modules/observability/application/convertor/filter.go +++ b/backend/modules/observability/application/convertor/filter.go @@ -51,3 +51,40 @@ func fieldTypeDTO2DO(fieldType *filter.FieldType) loop_span.FieldType { } return loop_span.FieldType(*fieldType) } + +func FilterFieldsDO2DTO(f *loop_span.FilterFields) *filter.FilterFields { + if f == nil { + return nil + } + ret := &filter.FilterFields{} + if f.QueryAndOr != nil { + ret.QueryAndOr = ptr.Of(filter.QueryRelation(*f.QueryAndOr)) + } + ret.FilterFields = make([]*filter.FilterField, 0) + for _, field := range f.FilterFields { + if field == nil { + continue + } + fField := &filter.FilterField{ + FieldName: ptr.Of(field.FieldName), + Values: field.Values, + FieldType: fieldTypeDO2DTO(field.FieldType), + } + if field.QueryAndOr != nil { + fField.QueryAndOr = ptr.Of(filter.QueryRelation(*field.QueryAndOr)) + } + if field.QueryType != nil { + fField.QueryType = ptr.Of(filter.QueryType(*field.QueryType)) + } + if field.SubFilter != nil { + fField.SubFilter = FilterFieldsDO2DTO(field.SubFilter) + } + ret.FilterFields = append(ret.FilterFields, fField) + } + return ret +} + +func fieldTypeDO2DTO(fieldType loop_span.FieldType) *filter.FieldType { + result := filter.FieldType(fieldType) + return &result +} \ No newline at end of file diff --git a/backend/modules/observability/domain/trace/entity/loop_span/filter.go b/backend/modules/observability/domain/trace/entity/loop_span/filter.go index ad23e124e..6fd8e2102 100644 --- a/backend/modules/observability/domain/trace/entity/loop_span/filter.go +++ b/backend/modules/observability/domain/trace/entity/loop_span/filter.go @@ -11,6 +11,7 @@ import ( "strings" "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -472,3 +473,19 @@ func anyToFloat64(val any) (float64, error) { return 0, fmt.Errorf("invalid float") } } + +func CombineFilters(filters ...*FilterFields) *FilterFields { + filterAggr := &FilterFields{ + QueryAndOr: ptr.Of(QueryAndOrEnumAnd), + } + for _, f := range filters { + if f == nil { + continue + } + filterAggr.FilterFields = append(filterAggr.FilterFields, &FilterField{ + QueryAndOr: ptr.Of(QueryAndOrEnumAnd), + SubFilter: f, + }) + } + return filterAggr +} \ No newline at end of file From 4583ad977e332e58c2792f29fcfef4e0c5ffb3e8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 11:49:23 +0800 Subject: [PATCH 370/462] feat: [Coda] implement combineFilters function in task service (LogID: 20250928114148010091110241630A99A) Co-Authored-By: Coda --- .../domain/task/service/task_service.go | 63 ++++++++++++++++++- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 06cb98489..76db5ad63 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -14,12 +14,16 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/mq" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service/trace/span_filter" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" @@ -101,6 +105,7 @@ type TaskServiceImpl struct { idGenerator idgen.IIDGenerator backfillProducer mq.IBackfillProducer taskProcessor processor.TaskProcessor + buildHelper service.TraceFilterProcessorBuilder } func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (resp *CreateTaskResp, err error) { @@ -129,7 +134,12 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r } // 创建task req.Task.TaskStatus = ptr.Of(task.TaskStatusUnstarted) - taskPO := tconv.TaskDTO2PO(ctx, req.Task, userID) + spanFilers, err := t.buildSpanFilters(ctx, req.Task.GetRule().GetSpanFilters(), req.Task.GetWorkspaceID()) + if err != nil { + return nil, err + } + + taskPO := tconv.TaskDTO2PO(ctx, req.Task, userID, spanFilers) id, err := t.TaskRepo.CreateTask(ctx, taskPO) if err != nil { return nil, err @@ -164,6 +174,55 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r return &CreateTaskResp{TaskID: &id}, nil } + +func (t *TaskServiceImpl) buildSpanFilters(ctx context.Context, spanFilterFields *filter.SpanFilterFields, workspaceID int64) (*filter.SpanFilterFields, error) { + + switch spanFilterFields.GetPlatformType() { + case common.PlatformTypeCozeBot, common.PlatformTypeProject, common.PlatformTypeWorkflow, common.PlatformTypeInnerCozeBot: + platformFilter, err := t.buildHelper.BuildPlatformRelatedFilter(ctx, loop_span.PlatformType(spanFilterFields.GetPlatformType())) + if err != nil { + return nil, err + } + env := &span_filter.SpanEnv{ + WorkspaceID: workspaceID, + } + basicFilter, forceQuery, err := platformFilter.BuildBasicSpanFilter(ctx, env) + if err != nil { + return nil, err + } else if len(basicFilter) == 0 && !forceQuery { // if it's null, no need to query from ck + return nil, nil + } + basicFilterFields := &loop_span.FilterFields{ + QueryAndOr: ptr.Of(loop_span.QueryAndOrEnumAnd), + FilterFields: basicFilter, + } + filters := combineFilters(convertor.FilterFieldsDO2DTO(basicFilterFields), spanFilterFields.Filters) + return &filter.SpanFilterFields{ + Filters: filters, + PlatformType: spanFilterFields.PlatformType, + SpanListType: spanFilterFields.SpanListType, + }, nil + default: + return spanFilterFields, nil + } +} + +func combineFilters(filters ...*filter.FilterFields) *filter.FilterFields { + filterAggr := &filter.FilterFields{ + QueryAndOr: ptr.Of(filter.QueryRelationAnd), + } + for _, f := range filters { + if f == nil { + continue + } + filterAggr.FilterFields = append(filterAggr.FilterFields, &filter.FilterField{ + QueryAndOr: ptr.Of(filter.QueryRelationAnd), + SubFilter: f, + }) + } + return filterAggr +} + func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (err error) { taskPO, err := t.TaskRepo.GetTask(ctx, req.TaskID, &req.WorkspaceID, nil) if err != nil { @@ -365,4 +424,4 @@ func (t *TaskServiceImpl) toJSONString(ctx context.Context, obj interface{}) str return "" } return string(jsonData) -} +} \ No newline at end of file From 93ae57dd411993212396e7934b06fa3844353233 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 11:49:45 +0800 Subject: [PATCH 371/462] add coze proc --- .../application/convertor/task/task.go | 13 ++++++++++--- .../task/service/taskexe/processor/auto_evaluate.go | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index ed447a8d9..f3bf32d9a 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -235,7 +235,7 @@ func CheckTaskStatus(ctx context.Context, taskStatus task.TaskStatus, currentTas return validTaskStatus, nil } -func TaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.ObservabilityTask { +func TaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string, spanFilters *filter.SpanFilterFields) *entity.ObservabilityTask { if taskDO == nil { return nil } @@ -257,6 +257,13 @@ func TaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.O updatedBy = taskDO.GetBaseInfo().GetUpdatedBy().GetUserID() } } + var spanFilterDO *filter.SpanFilterFields + if spanFilters != nil { + spanFilterDO = spanFilters + } else { + spanFilterDO = taskDO.GetRule().GetSpanFilters() + } + return &entity.ObservabilityTask{ ID: taskDO.GetID(), WorkspaceID: taskDO.GetWorkspaceID(), @@ -265,7 +272,7 @@ func TaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.O TaskType: taskDO.GetTaskType(), TaskStatus: taskDO.GetTaskStatus(), TaskDetail: ptr.Of(ToJSONString(ctx, taskDO.GetTaskDetail())), - SpanFilter: SpanFilterDTO2PO(ctx, taskDO.GetRule().GetSpanFilters(), taskDO.GetWorkspaceID()), + SpanFilter: SpanFilterDTO2PO(ctx, spanFilterDO), EffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetEffectiveTime())), Sampler: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetSampler())), TaskConfig: TaskConfigDTO2PO(ctx, taskDO.GetTaskConfig()), @@ -276,7 +283,7 @@ func TaskDTO2PO(ctx context.Context, taskDO *task.Task, userID string) *entity.O BackfillEffectiveTime: ptr.Of(ToJSONString(ctx, taskDO.GetRule().GetBackfillEffectiveTime())), } } -func SpanFilterDTO2PO(ctx context.Context, filters *filter.SpanFilterFields, workspaceID int64) *string { +func SpanFilterDTO2PO(ctx context.Context, filters *filter.SpanFilterFields) *string { var filtersDO *loop_span.FilterFields if filters.GetFilters() != nil { filtersDO = convertor.FilterFieldsDTO2DO(filters.GetFilters()) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 726a2644b..26cbdba94 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -229,7 +229,7 @@ func (p *AutoEvaluteProcessor) OnUpdateTaskChange(ctx context.Context, currentTa return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) } // 2、更新任务 - taskPO := tconv.TaskDTO2PO(ctx, currentTask, "") + taskPO := tconv.TaskDTO2PO(ctx, currentTask, "", nil) err := p.taskRepo.UpdateTask(ctx, taskPO) if err != nil { logs.CtxError(ctx, "[auto_task] OnUpdateChangeProcessor, UpdateTask err, taskID:%d, err:%v", currentTask.GetID(), err) From d349926c826c3412f21e3342eb068a3a3aa8191d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 11:54:26 +0800 Subject: [PATCH 372/462] add wire --- backend/modules/observability/application/wire_gen.go | 6 +++--- .../observability/domain/task/service/task_service.go | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index d7d2fc674..bcd46170d 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -218,7 +218,9 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iEvaluationRPCAdapter := evaluation.NewEvaluationRPCProvider(exptService) processorTaskProcessor := NewInitTaskProcessor(datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTaskRepo, iTaskRunRepo) - iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iTaskRunRepo, iUserProvider, idgen2, iBackfillProducer, processorTaskProcessor) + iFileProvider := file.NewFileRPCProvider(fileClient) + traceFilterProcessorBuilder := NewTraceProcessorBuilder(iTraceConfig, iFileProvider, benefit2) + iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iTaskRunRepo, iUserProvider, idgen2, iBackfillProducer, processorTaskProcessor, traceFilterProcessorBuilder) if err != nil { return nil, err } @@ -236,8 +238,6 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto return nil, err } iTenantProvider := tenant.NewTenantProvider(iTraceConfig) - iFileProvider := file.NewFileRPCProvider(fileClient) - traceFilterProcessorBuilder := NewTraceProcessorBuilder(iTraceConfig, iFileProvider, benefit2) iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTaskRunRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor, benefit2) if err != nil { return nil, err diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 76db5ad63..16314fafd 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -87,6 +87,7 @@ func NewTaskServiceImpl( idGenerator idgen.IIDGenerator, backfillProducer mq.IBackfillProducer, taskProcessor *processor.TaskProcessor, + buildHelper service.TraceFilterProcessorBuilder, ) (ITaskService, error) { return &TaskServiceImpl{ TaskRepo: tRepo, @@ -95,6 +96,7 @@ func NewTaskServiceImpl( idGenerator: idGenerator, backfillProducer: backfillProducer, taskProcessor: *taskProcessor, + buildHelper: buildHelper, }, nil } @@ -424,4 +426,4 @@ func (t *TaskServiceImpl) toJSONString(ctx context.Context, obj interface{}) str return "" } return string(jsonData) -} \ No newline at end of file +} From 0e1eeda72bcf32e7eacaf714c65aeaf32fd62393 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 12:12:49 +0800 Subject: [PATCH 373/462] fix: [Coda] handle SubFilter in task repo filter processing (LogID: 20250928114148010091110241630A99A) Co-Authored-By: Coda --- .../service/taskexe/tracehub/trace_hub.go | 4 +- .../observability/infra/repo/mysql/task.go | 26 ++++++++++- .../infra/repo/redis/dao/task.go | 44 +++++++++---------- 3 files changed, 48 insertions(+), 26 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index f9064e134..80f4b5b4b 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -104,10 +104,10 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS return nil } logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) - spaceList, _ := h.taskRepo.GetObjListWithTask(ctx) + spaceList, botList := h.taskRepo.GetObjListWithTask(ctx) logs.CtxInfo(ctx, "space list: %v", spaceList) // 1.2 过滤掉不在 spaceList 中的 span - if !gslice.Contains(spaceList, span.WorkspaceID) { + if !gslice.Contains(spaceList, span.WorkspaceID) || !gslice.Contains(botList, span.TagsString["bot_id"]) { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) logs.CtxInfo(ctx, "no space found for span, %s", logSuffix) return nil diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index dbaf00856..d627b3c6b 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -12,6 +12,7 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/db" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" genquery "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/query" @@ -391,7 +392,7 @@ func (v *TaskDaoImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin // 查询非终态任务的workspace_id,使用DISTINCT去重 qd = qd.Where(q.ObservabilityTask.TaskStatus.NotIn("success", "disabled")) - qd = qd.Select(q.ObservabilityTask.WorkspaceID).Distinct() + //qd = qd.Select(q.ObservabilityTask.WorkspaceID).Distinct() results, err := qd.Find() if err != nil { @@ -400,12 +401,33 @@ func (v *TaskDaoImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin // 转换为字符串数组 var spaceList []string + var botList []string for _, task := range results { spaceList = append(spaceList, strconv.FormatInt(task.WorkspaceID, 10)) + spanFilter := tconv.SpanFilterPO2DO(ctx, task.SpanFilter) + if spanFilter != nil && spanFilter.Filters.FilterFields != nil { + extractBotIDFromFilters(spanFilter.Filters.FilterFields, &botList) + } } // botList暂时返回空数组,因为Task表中没有bot_id字段 - var botList []string return spaceList, botList, nil +} + +// extractBotIDFromFilters 递归提取过滤器中的 bot_id 值,包括 SubFilter +func extractBotIDFromFilters(filterFields []*filter.FilterField, botList *[]string) { + for _, filterField := range filterFields { + if filterField == nil { + continue + } + // 检查当前 FilterField 的 FieldName + if filterField.FieldName != nil && *filterField.FieldName == "bot_id" { + *botList = append(*botList, filterField.Values...) + } + // 递归处理 SubFilter + if filterField.SubFilter != nil && filterField.SubFilter.FilterFields != nil { + extractBotIDFromFilters(filterField.SubFilter.FilterFields, botList) + } + } } \ No newline at end of file diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 52331dc3b..3615db606 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -370,9 +370,9 @@ func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin gotBotList, err := p.cmdable.Get(ctx, botKey).Result() if err != nil { if redis.IsNilError(err) { - return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) // 缓存未命中 + return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", botKey) // 缓存未命中 } - return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) + return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", botKey) } var botList []string if err = json.Unmarshal(conv.UnsafeStringToBytes(gotBotList), &botList); err != nil { @@ -569,19 +569,19 @@ func (p *TaskDAOImpl) IncrTaskCount(ctx context.Context, taskID int64, ttl time. logs.CtxError(ctx, "redis incr task count failed", "key", key, "err", err) return 0, errorx.Wrapf(err, "redis incr task count key: %v", key) } - + // 设置TTL if err := p.cmdable.Expire(ctx, key, ttl).Err(); err != nil { logs.CtxWarn(ctx, "failed to set TTL for task count", "key", key, "err", err) } - + return result, nil } // DecrTaskCount 原子减少任务计数,确保不会变为负数 func (p *TaskDAOImpl) DecrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) { key := p.makeTaskCountCacheKey(taskID) - + // 先获取当前值 current, err := p.cmdable.Get(ctx, key).Int64() if err != nil { @@ -592,19 +592,19 @@ func (p *TaskDAOImpl) DecrTaskCount(ctx context.Context, taskID int64, ttl time. logs.CtxError(ctx, "redis get task count failed before decr", "key", key, "err", err) return 0, errorx.Wrapf(err, "redis get task count key: %v", key) } - + // 如果当前值已经是0或负数,不再减少 if current <= 0 { return 0, nil } - + // 执行减操作 result, err := p.cmdable.Decr(ctx, key).Result() if err != nil { logs.CtxError(ctx, "redis decr task count failed", "key", key, "err", err) return 0, errorx.Wrapf(err, "redis decr task count key: %v", key) } - + // 如果减少后变为负数,重置为0 if result < 0 { if err := p.cmdable.Set(ctx, key, 0, ttl).Err(); err != nil { @@ -612,12 +612,12 @@ func (p *TaskDAOImpl) DecrTaskCount(ctx context.Context, taskID int64, ttl time. } return 0, nil } - + // 设置TTL if err := p.cmdable.Expire(ctx, key, ttl).Err(); err != nil { logs.CtxWarn(ctx, "failed to set TTL for task count", "key", key, "err", err) } - + return result, nil } @@ -629,19 +629,19 @@ func (p *TaskDAOImpl) IncrTaskRunCount(ctx context.Context, taskID, taskRunID in logs.CtxError(ctx, "redis incr task run count failed", "key", key, "err", err) return 0, errorx.Wrapf(err, "redis incr task run count key: %v", key) } - + // 设置TTL if err := p.cmdable.Expire(ctx, key, ttl).Err(); err != nil { logs.CtxWarn(ctx, "failed to set TTL for task run count", "key", key, "err", err) } - + return result, nil } // DecrTaskRunCount 原子减少任务运行计数,确保不会变为负数 func (p *TaskDAOImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl time.Duration) (int64, error) { key := p.makeTaskRunCountCacheKey(taskID, taskRunID) - + // 先获取当前值 current, err := p.cmdable.Get(ctx, key).Int64() if err != nil { @@ -652,19 +652,19 @@ func (p *TaskDAOImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID in logs.CtxError(ctx, "redis get task run count failed before decr", "key", key, "err", err) return 0, errorx.Wrapf(err, "redis get task run count key: %v", key) } - + // 如果当前值已经是0或负数,不再减少 if current <= 0 { return 0, nil } - + // 执行减操作 result, err := p.cmdable.Decr(ctx, key).Result() if err != nil { logs.CtxError(ctx, "redis decr task run count failed", "key", key, "err", err) return 0, errorx.Wrapf(err, "redis decr task run count key: %v", key) } - + // 如果减少后变为负数,重置为0 if result < 0 { if err := p.cmdable.Set(ctx, key, 0, ttl).Err(); err != nil { @@ -672,12 +672,12 @@ func (p *TaskDAOImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID in } return 0, nil } - + // 设置TTL if err := p.cmdable.Expire(ctx, key, ttl).Err(); err != nil { logs.CtxWarn(ctx, "failed to set TTL for task run count", "key", key, "err", err) } - + return result, nil } @@ -685,7 +685,7 @@ func (p *TaskDAOImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID in func (p *TaskDAOImpl) GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) { pattern := "count_*_*" // 匹配 count_{taskID}_{taskRunID} 格式的键 var allKeys []string - + // 使用SCAN命令遍历匹配的键 iter := p.cmdable.Scan(ctx, 0, pattern, 100).Iterator() for iter.Next(ctx) { @@ -695,12 +695,12 @@ func (p *TaskDAOImpl) GetAllTaskRunCountKeys(ctx context.Context) ([]string, err allKeys = append(allKeys, key) } } - + if err := iter.Err(); err != nil { logs.CtxError(ctx, "scan task run count keys failed", "pattern", pattern, "err", err) return nil, errorx.Wrapf(err, "scan task run count keys with pattern: %s", pattern) } - + logs.CtxInfo(ctx, "found %d task run count keys", len(allKeys)) return allKeys, nil } @@ -718,4 +718,4 @@ func (p *TaskDAOImpl) isTaskRunCountKey(key string) bool { } // TaskRunCount键应该有2个下划线 return underscoreCount == 2 -} \ No newline at end of file +} From cbb794144d1ca84db1cbcfc1c9f206c92df9940f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 14:06:43 +0800 Subject: [PATCH 374/462] fix panic --- backend/modules/observability/domain/task/entity/event.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go index 8890408ef..ddc280613 100644 --- a/backend/modules/observability/domain/task/entity/event.go +++ b/backend/modules/observability/domain/task/entity/event.go @@ -127,6 +127,9 @@ func (s *RawSpan) RawSpanConvertToLoopSpan() *loop_span.Span { s.Tags["fornax_space_id"] = "" } spaceID := s.Tags["fornax_space_id"].(string) + if s.Tags["span_type"] == nil { + s.Tags["span_type"] = "" + } spanType := s.Tags["span_type"].(string) result := &loop_span.Span{ From 3c89a96973e20cde2b4590defb0c2afdc209c2f3 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 14:17:16 +0800 Subject: [PATCH 375/462] fix debug log --- .../domain/task/service/taskexe/tracehub/trace_hub.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 80f4b5b4b..703532c25 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -105,9 +105,9 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS } logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) spaceList, botList := h.taskRepo.GetObjListWithTask(ctx) - logs.CtxInfo(ctx, "space list: %v", spaceList) + logs.CtxInfo(ctx, "space list: %v, bot list: %v", spaceList, botList) // 1.2 过滤掉不在 spaceList 中的 span - if !gslice.Contains(spaceList, span.WorkspaceID) || !gslice.Contains(botList, span.TagsString["bot_id"]) { + if !gslice.Contains(spaceList, span.WorkspaceID) && !gslice.Contains(botList, span.TagsString["bot_id"]) { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) logs.CtxInfo(ctx, "no space found for span, %s", logSuffix) return nil From be5171c39ab7b5030eefd3b3396921bf901598a1 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 14:37:47 +0800 Subject: [PATCH 376/462] fix status --- .../observability/domain/trace/entity/loop_span/span.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/backend/modules/observability/domain/trace/entity/loop_span/span.go b/backend/modules/observability/domain/trace/entity/loop_span/span.go index 780bbdb3f..618c3eb93 100644 --- a/backend/modules/observability/domain/trace/entity/loop_span/span.go +++ b/backend/modules/observability/domain/trace/entity/loop_span/span.go @@ -217,6 +217,13 @@ func (s *Span) getTokens(ctx context.Context) (inputTokens, outputTokens int64, return inputToken, outputToken, nil } +func (s *Span) getStatus() string { + if s.StatusCode == 0 { + return SpanStatusSuccess + } + return SpanStatusError +} + // filter使用, 当前只支持特定参数,后续有需要可拓展到其他参数 func (s *Span) GetFieldValue(fieldName string, isSystem bool) any { switch fieldName { @@ -252,6 +259,8 @@ func (s *Span) GetFieldValue(fieldName string, isSystem bool) any { return s.ObjectStorage case SpanFieldMethod: return s.Method + case SpanFieldStatus: + return s.getStatus() } if isSystem { if val, ok := s.SystemTagsString[fieldName]; ok { From 44c001b3f65834d09c548071d5f968816be5112d Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 14:57:09 +0800 Subject: [PATCH 377/462] fix coze proc --- .../observability/domain/task/repo/task.go | 2 +- .../service/taskexe/tracehub/trace_hub.go | 19 +++++------ .../observability/infra/repo/mysql/task.go | 10 +++--- .../infra/repo/redis/dao/task.go | 33 ++++++++++++++----- .../modules/observability/infra/repo/task.go | 17 ++++++---- 5 files changed, 49 insertions(+), 32 deletions(-) diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index 24efec7b5..76caa9641 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -46,7 +46,7 @@ type ITaskRepo interface { // ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) - GetObjListWithTask(ctx context.Context) ([]string, []string) + GetObjListWithTask(ctx context.Context) ([]string, []string, []*entity.ObservabilityTask) ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask // 获取所有TaskRunCount键 diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 703532c25..731e758cc 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -104,8 +104,11 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS return nil } logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) - spaceList, botList := h.taskRepo.GetObjListWithTask(ctx) - logs.CtxInfo(ctx, "space list: %v, bot list: %v", spaceList, botList) + spaceList, botList, tasks, err := h.taskRepo.GetObjListWithTask(ctx) + logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", spaceList, botList, tasks) + if err != nil { + return err + } // 1.2 过滤掉不在 spaceList 中的 span if !gslice.Contains(spaceList, span.WorkspaceID) && !gslice.Contains(botList, span.TagsString["bot_id"]) { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) @@ -113,7 +116,7 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS return nil } // 2、读redis,获取rule信息,进行匹配,查询订阅者 - subs, err := h.getSubscriberOfSpan(ctx, span) + subs, err := h.getSubscriberOfSpan(ctx, span, tasks) if err != nil { // 继续执行,不阻塞。 logs.CtxWarn(ctx, "get subscriber of flow span failed, %s, err: %v", logSuffix, err) } @@ -148,16 +151,10 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS return nil } -func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loop_span.Span) ([]*spanSubscriber, error) { +func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loop_span.Span, tasks []*entity.ObservabilityTask) ([]*spanSubscriber, error) { logs.CtxInfo(ctx, "getSubscriberOfSpan start") var subscribers []*spanSubscriber - // 获取该空间非终态任务列表 - tasksPOList := h.taskRepo.ListNonFinalTaskBySpaceID(ctx, span.WorkspaceID) - if len(tasksPOList) == 0 { - logs.CtxWarn(ctx, "no subscriber found for span, trace_id=%s, span_id=%s", span.TraceID, span.SpanID) - return nil, nil - } - taskList := tconv.TaskPOs2DOs(ctx, tasksPOList, nil) + taskList := tconv.TaskPOs2DOs(ctx, tasks, nil) for _, taskDO := range taskList { proc := h.taskProcessor.GetTaskProcessor(taskDO.TaskType) subscribers = append(subscribers, &spanSubscriber{ diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index d627b3c6b..e863692b8 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -47,7 +47,7 @@ type ITaskDao interface { ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) ListNonFinalTask(ctx context.Context) ([]*model.ObservabilityTask, error) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error - GetObjListWithTask(ctx context.Context) ([]string, []string, error) + GetObjListWithTask(ctx context.Context) ([]string, []string, []*model.ObservabilityTask, error) ListNonFinalTaskBySpaceID(ctx context.Context, workspaceID int64) ([]*model.ObservabilityTask, error) } @@ -386,7 +386,7 @@ func (v *TaskDaoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspace return nil } -func (v *TaskDaoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, error) { +func (v *TaskDaoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, []*model.ObservabilityTask, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)) qd := q.WithContext(ctx).ObservabilityTask @@ -396,7 +396,7 @@ func (v *TaskDaoImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin results, err := qd.Find() if err != nil { - return nil, nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) + return nil, nil, nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) } // 转换为字符串数组 @@ -412,7 +412,7 @@ func (v *TaskDaoImpl) GetObjListWithTask(ctx context.Context) ([]string, []strin // botList暂时返回空数组,因为Task表中没有bot_id字段 - return spaceList, botList, nil + return spaceList, botList, results, nil } // extractBotIDFromFilters 递归提取过滤器中的 bot_id 值,包括 SubFilter @@ -430,4 +430,4 @@ func extractBotIDFromFilters(filterFields []*filter.FilterField, botList *[]stri extractBotIDFromFilters(filterField.SubFilter.FilterFields, botList) } } -} \ No newline at end of file +} diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 3615db606..f8843e71d 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -13,6 +13,7 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/redis" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" + "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/convert" "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/json" @@ -52,7 +53,8 @@ type ITaskDAO interface { IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl time.Duration) (int64, error) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl time.Duration) (int64, error) - GetObjListWithTask(ctx context.Context) ([]string, []string, error) + // GetObjListWithTask 获取包含任务的空间列表缓存 + GetObjListWithTask(ctx context.Context) ([]string, []string, []*model.ObservabilityTask, error) // SpaceListWithTask相关 GetSpaceListWithTask(ctx context.Context) ([]string, error) @@ -353,32 +355,45 @@ func (p *TaskDAOImpl) DeleteTaskRunCount(ctx context.Context, taskID, taskRunID return nil } -func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, error) { +func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, []*model.ObservabilityTask, error) { spaceKey := "spaceList" botKey := "botList" + taskKey := "taskList" gotSpaceList, err := p.cmdable.Get(ctx, spaceKey).Result() if err != nil { if redis.IsNilError(err) { - return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) // 缓存未命中 + return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) // 缓存未命中 } - return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) + return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) } var spaceList []string if err = json.Unmarshal(conv.UnsafeStringToBytes(gotSpaceList), &spaceList); err != nil { - return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) + return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) } gotBotList, err := p.cmdable.Get(ctx, botKey).Result() if err != nil { if redis.IsNilError(err) { - return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", botKey) // 缓存未命中 + return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", botKey) // 缓存未命中 } - return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", botKey) + return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", botKey) } var botList []string if err = json.Unmarshal(conv.UnsafeStringToBytes(gotBotList), &botList); err != nil { - return nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) + return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", botKey) } - return spaceList, botList, nil + gotTaskList, err := p.cmdable.Get(ctx, taskKey).Result() + if err != nil { + if redis.IsNilError(err) { + return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", taskKey) // 缓存未命中 + } + return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", taskKey) + } + var tasks []*model.ObservabilityTask + if err = json.Unmarshal(conv.UnsafeStringToBytes(gotTaskList), &tasks); err != nil { + return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", taskKey) + } + + return spaceList, botList, tasks, nil } // GetSpaceListWithTask 获取包含任务的空间列表缓存 diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index d5a832213..7e8a87764 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -293,20 +293,25 @@ func isNonFinalTaskStatus(status string) bool { return true } -func (v *TaskRepoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string) { +func (v *TaskRepoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, []*entity.ObservabilityTask) { + var tasks []*entity.ObservabilityTask // 先查 Redis 缓存 - spaceList, botList, err := v.TaskRedisDao.GetObjListWithTask(ctx) - if err != nil { + spaceList, botList, results, err := v.TaskRedisDao.GetObjListWithTask(ctx) + if err != nil || len(results) == 0 { logs.CtxWarn(ctx, "failed to get obj list with task from redis cache", "err", err) // Redis失败时从MySQL获取 - spaceList, botList, err = v.TaskDao.GetObjListWithTask(ctx) + spaceList, botList, results, err = v.TaskDao.GetObjListWithTask(ctx) if err != nil { logs.CtxWarn(ctx, "failed to get obj list with task from mysql", "err", err) - return nil, nil + return nil, nil, nil } } + tasks = make([]*entity.ObservabilityTask, len(results)) + for i, result := range results { + tasks[i] = convertor.TaskPO2DO(result) + } - return spaceList, botList + return spaceList, botList, tasks } func (v *TaskRepoImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, error) { From f2fb6636328494fcbcfbc60607d9441f82deab16 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 15:06:32 +0800 Subject: [PATCH 378/462] fix --- .../domain/task/service/taskexe/tracehub/trace_hub.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 731e758cc..456856d78 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -104,11 +104,8 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS return nil } logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) - spaceList, botList, tasks, err := h.taskRepo.GetObjListWithTask(ctx) + spaceList, botList, tasks := h.taskRepo.GetObjListWithTask(ctx) logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", spaceList, botList, tasks) - if err != nil { - return err - } // 1.2 过滤掉不在 spaceList 中的 span if !gslice.Contains(spaceList, span.WorkspaceID) && !gslice.Contains(botList, span.TagsString["bot_id"]) { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) From 7af67a6a22b4fb0e1f4b64d57b8e3d07c0355dfd Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 20:15:34 +0800 Subject: [PATCH 379/462] feat: [Coda] remove limit for scheduled task processing to handle all non-terminal tasks (LogID: 202509282010120100911102412713936) Co-Authored-By: Coda --- .../observability/domain/task/repo/task.go | 19 +- .../domain/task/repo/task_run.go | 36 --- .../domain/task/service/task_service.go | 2 +- .../taskexe/processor/auto_evaluate.go | 2 +- .../task/service/taskexe/tracehub/backfill.go | 10 +- .../taskexe/tracehub/scheduled_task.go | 6 +- .../service/taskexe/tracehub/subscriber.go | 4 +- .../service/taskexe/tracehub/trace_hub.go | 2 +- .../infra/repo/redis/dao/task.go | 42 --- .../modules/observability/infra/repo/task.go | 274 +++++++++--------- 10 files changed, 158 insertions(+), 239 deletions(-) delete mode 100755 backend/modules/observability/domain/task/repo/task_run.go diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index 76caa9641..24541d3de 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -13,19 +13,21 @@ import ( //go:generate mockgen -destination=mocks/Task.go -package=mocks . ITaskRepo type ITaskRepo interface { // task + CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) + UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error + UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityTask, error) ListTasks(ctx context.Context, param mysql.ListTaskParam) ([]*entity.ObservabilityTask, int64, error) - UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error - CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) DeleteTask(ctx context.Context, do *entity.ObservabilityTask) error - UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error // task run - GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.TaskRun, error) - ListTaskRuns(ctx context.Context, taskID int64, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) - UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) + UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error + GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.TaskRun, error) + ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) + GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) + GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) // task count GetTaskCount(ctx context.Context, taskID int64) (int64, error) @@ -38,17 +40,14 @@ type ITaskRepo interface { DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error // task run success/fail count + GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error DecrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error - GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) // ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) GetObjListWithTask(ctx context.Context) ([]string, []string, []*entity.ObservabilityTask) ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask - - // 获取所有TaskRunCount键 - GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) } diff --git a/backend/modules/observability/domain/task/repo/task_run.go b/backend/modules/observability/domain/task/repo/task_run.go deleted file mode 100755 index 56c196f56..000000000 --- a/backend/modules/observability/domain/task/repo/task_run.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 - -package repo - -import ( - "context" - - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" - "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" -) - -//go:generate mockgen -destination=mocks/task_run.go -package=mocks . ITaskRunRepo -type ITaskRunRepo interface { - // 基础CRUD操作 - GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*entity.TaskRun, error) - GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) - GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) - CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) - UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error - DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error - ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) - - // 业务特定操作 - ListNonFinalTaskRun(ctx context.Context) ([]*entity.TaskRun, error) - ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) - ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID string) []*entity.TaskRun - UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error - GetObjListWithTaskRun(ctx context.Context) ([]string, []string) - - // TaskRun特有操作 - ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) - GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*entity.TaskRun, error) - ListTaskRunsByStatus(ctx context.Context, status string) ([]*entity.TaskRun, error) - GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) -} diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 16314fafd..5dfa08fe8 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -334,7 +334,7 @@ func (t *TaskServiceImpl) GetTask(ctx context.Context, req *GetTaskReq) (resp *G logs.CtxError(ctx, "GetTasks tasks is nil") return resp, nil } - taskRunPOs, _, err := t.TaskRunRepo.ListTaskRuns(ctx, mysql.ListTaskRunParam{ + taskRunPOs, _, err := t.TaskRepo.ListTaskRuns(ctx, mysql.ListTaskRunParam{ WorkspaceID: ptr.Of(req.WorkspaceID), TaskID: ptr.Of(req.TaskID), }) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 26cbdba94..241ae56b0 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -155,7 +155,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * } func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { - taskRuns, err := p.taskRunRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) + taskRuns, err := p.taskRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) return err diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 617383e30..4ef1d991e 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -108,7 +108,7 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity // isBackfillDone 检查回填任务是否已完成 func (h *TraceHubServiceImpl) isBackfillDone(ctx context.Context, sub *spanSubscriber) (bool, error) { - taskRun, err := h.taskRunRepo.GetBackfillTaskRun(ctx, ptr.Of(sub.t.GetWorkspaceID()), sub.t.GetID()) + taskRun, err := h.taskRepo.GetBackfillTaskRun(ctx, ptr.Of(sub.t.GetWorkspaceID()), sub.t.GetID()) if err != nil { logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), err) return true, err @@ -144,7 +144,7 @@ func (h *TraceHubServiceImpl) listSpans(ctx context.Context, sub *spanSubscriber DescByStartTime: true, NotQueryAnnotation: true, // 回填时不需要查询注解 } - taskRun, err := h.taskRunRepo.GetBackfillTaskRun(ctx, ptr.Of(sub.t.GetWorkspaceID()), sub.t.GetID()) + taskRun, err := h.taskRepo.GetBackfillTaskRun(ctx, ptr.Of(sub.t.GetWorkspaceID()), sub.t.GetID()) if err != nil { logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), err) return err @@ -335,10 +335,10 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp logs.CtxError(ctx, "process spans failed, task_id=%d, err=%v", sub.t.GetID(), err) return len(fr.spans), len(sampledSpans), err } - taskRun, err := h.taskRunRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) + taskRun, err := h.taskRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) taskRunDTO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) taskRunDTO.BackfillRunDetail.LastSpanPageToken = ptr.Of(fr.pageToken) - err = h.taskRunRepo.UpdateTaskRunWithOCC(ctx, taskRunDTO.ID, taskRunDTO.WorkspaceID, map[string]interface{}{ + err = h.taskRepo.UpdateTaskRunWithOCC(ctx, taskRunDTO.ID, taskRunDTO.WorkspaceID, map[string]interface{}{ "backfill_detail": taskRunDTO.BackfillRunDetail, }) if err != nil { @@ -430,7 +430,7 @@ func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *l // 根据任务类型执行相应的处理逻辑 logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", span.SpanID, span.TraceID, sub.t.GetID()) - taskRunConfig, err := h.taskRunRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) + taskRunConfig, err := h.taskRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) if err != nil { logs.CtxWarn(ctx, "GetLatestNewDataTaskRun, task_id=%d, err=%v", sub.taskID, err) return err diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 8901e7344..6f19767b8 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -79,8 +79,6 @@ func (h *TraceHubServiceImpl) runScheduledTask() { ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") // 读取所有非终态(成功/禁用)任务 taskPOs, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ - ReqLimit: 1000, - ReqOffset: 0, TaskFilters: &filter.TaskFilterFields{ FilterFields: []*filter.TaskFilterField{ { @@ -352,10 +350,10 @@ func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *Tas } // 使用乐观锁更新 - err = h.taskRunRepo.UpdateTaskRunWithOCC(ctx, info.TaskRunID, 0, updateMap) + err = h.taskRepo.UpdateTaskRunWithOCC(ctx, info.TaskRunID, 0, updateMap) if err != nil { return errors.Wrap(err, "更新TaskRun失败") } return nil -} +} \ No newline at end of file diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go index 5e43c9614..6ee3246f5 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go @@ -166,13 +166,13 @@ func (s *spanSubscriber) AddSpan(ctx context.Context, span *loop_span.Span) erro var taskRunConfig *entity.TaskRun var err error if s.runType == task.TaskRunTypeNewData { - taskRunConfig, err = s.taskRunRepo.GetLatestNewDataTaskRun(ctx, nil, s.t.GetID()) + taskRunConfig, err = s.taskRepo.GetLatestNewDataTaskRun(ctx, nil, s.t.GetID()) if err != nil { logs.CtxWarn(ctx, "get latest new data task run failed, task_id=%d, err: %v", s.t.GetID(), err) return err } } else { - taskRunConfig, err = s.taskRunRepo.GetBackfillTaskRun(ctx, nil, s.t.GetID()) + taskRunConfig, err = s.taskRepo.GetBackfillTaskRun(ctx, nil, s.t.GetID()) if err != nil { logs.CtxWarn(ctx, "get backfill task run failed, task_id=%d, err: %v", s.t.GetID(), err) return err diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 456856d78..ec13eb88d 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -226,7 +226,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } } //获取对应的taskconfig - taskRunConfig, err := h.taskRunRepo.GetLatestNewDataTaskRun(ctx, sub.t.WorkspaceID, sub.taskID) + taskRunConfig, err := h.taskRepo.GetLatestNewDataTaskRun(ctx, sub.t.WorkspaceID, sub.taskID) if err != nil { logs.CtxWarn(ctx, "GetLatestNewDataTaskRun, task_id=%d, err=%v", sub.taskID, err) continue diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index f8843e71d..53cc161ee 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -75,9 +75,6 @@ type ITaskDAO interface { GetAppListWithTask(ctx context.Context) ([]string, error) SetAppListWithTask(ctx context.Context, apps []string, ttl time.Duration) error DeleteAppListWithTask(ctx context.Context) error - - // 获取所有TaskRunCount键 - GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) } type TaskDAOImpl struct { @@ -695,42 +692,3 @@ func (p *TaskDAOImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID in return result, nil } - -// GetAllTaskRunCountKeys 获取所有TaskRunCount键 -func (p *TaskDAOImpl) GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) { - pattern := "count_*_*" // 匹配 count_{taskID}_{taskRunID} 格式的键 - var allKeys []string - - // 使用SCAN命令遍历匹配的键 - iter := p.cmdable.Scan(ctx, 0, pattern, 100).Iterator() - for iter.Next(ctx) { - key := iter.Val() - // 验证键格式是否为TaskRunCount键(包含两个下划线,表示taskID和taskRunID) - if p.isTaskRunCountKey(key) { - allKeys = append(allKeys, key) - } - } - - if err := iter.Err(); err != nil { - logs.CtxError(ctx, "scan task run count keys failed", "pattern", pattern, "err", err) - return nil, errorx.Wrapf(err, "scan task run count keys with pattern: %s", pattern) - } - - logs.CtxInfo(ctx, "found %d task run count keys", len(allKeys)) - return allKeys, nil -} - -// isTaskRunCountKey 检查键是否为TaskRunCount键格式 -func (p *TaskDAOImpl) isTaskRunCountKey(key string) bool { - // TaskRunCount键格式: count_{taskID}_{taskRunID} - // TaskCount键格式: count_{taskID} - // 通过下划线数量来区分 - underscoreCount := 0 - for _, char := range key { - if char == '_' { - underscoreCount++ - } - } - // TaskRunCount键应该有2个下划线 - return underscoreCount == 2 -} diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 7e8a87764..ec751066f 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -94,7 +94,6 @@ func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64 return taskDO, nil } - func (v *TaskRepoImpl) ListTasks(ctx context.Context, param mysql.ListTaskParam) ([]*entity.ObservabilityTask, int64, error) { results, total, err := v.TaskDao.ListTasks(ctx, param) if err != nil { @@ -120,7 +119,6 @@ func (v *TaskRepoImpl) ListTasks(ctx context.Context, param mysql.ListTaskParam) return resp, total, nil } - func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityTask) (int64, error) { id, err := v.idGenerator.GenID(ctx) if err != nil { @@ -151,7 +149,6 @@ func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityT return createdID, nil } - func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error { TaskPo := convertor.TaskDO2PO(do) @@ -179,7 +176,6 @@ func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityT return nil } - func (v *TaskRepoImpl) ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) { // 先查 Redis 缓存 cachedTasks, err := v.TaskRedisDao.GetNonFinalTaskList(ctx) @@ -262,37 +258,6 @@ func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspac return nil } - -// clearListCaches 清理与指定 workspace 相关的列表缓存 -func (v *TaskRepoImpl) clearListCaches(ctx context.Context, workspaceID int64) { - // 清理任务列表缓存(使用模糊匹配) - pattern := fmt.Sprintf("task:list:%d:*", workspaceID) - if err := v.TaskRedisDao.DeleteTaskList(ctx, pattern); err != nil { - logs.Error("failed to delete task list cache", "pattern", pattern, "err", err) - } - - // 清理任务计数缓存 - if err := v.TaskRedisDao.DeleteTaskCount(ctx, workspaceID); err != nil { - logs.Error("failed to delete task count cache", "workspaceID", workspaceID, "err", err) - } - - // 清理非最终状态任务缓存 - if err := v.TaskRedisDao.DeleteNonFinalTaskList(ctx); err != nil { - logs.Error("failed to delete non final task list cache", "err", err) - } -} - -// isNonFinalTaskStatus 判断任务状态是否为非最终状态 -func isNonFinalTaskStatus(status string) bool { - finalStatuses := []string{"success", "disabled"} - for _, finalStatus := range finalStatuses { - if status == finalStatus { - return false - } - } - return true -} - func (v *TaskRepoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, []*entity.ObservabilityTask) { var tasks []*entity.ObservabilityTask // 先查 Redis 缓存 @@ -313,62 +278,6 @@ func (v *TaskRepoImpl) GetObjListWithTask(ctx context.Context) ([]string, []stri return spaceList, botList, tasks } - -func (v *TaskRepoImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, error) { - count, err := v.TaskRedisDao.GetTaskCount(ctx, taskID) - if err != nil { - logs.CtxWarn(ctx, "failed to get task count from redis cache", "taskID", taskID, "err", err) - } else if count != 0 { - return count, nil - } - return count, nil -} -func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { - count, err := v.TaskRedisDao.GetTaskRunCount(ctx, taskID, taskRunID) - if err != nil { - logs.CtxWarn(ctx, "failed to get task run count from redis cache", "taskID", taskID, "err", err) - } else if count != 0 { - return count, nil - } - return count, nil -} - -func (v *TaskRepoImpl) IncrTaskCount(ctx context.Context, taskID int64) error { - _, err := v.TaskRedisDao.IncrTaskCount(ctx, taskID, TaskCountTTL) - if err != nil { - logs.CtxError(ctx, "failed to increment task count", "taskID", taskID, "err", err) - return err - } - return nil -} - -func (v *TaskRepoImpl) DecrTaskCount(ctx context.Context, taskID int64) error { - _, err := v.TaskRedisDao.DecrTaskCount(ctx, taskID, TaskCountTTL) - if err != nil { - logs.CtxError(ctx, "failed to decrement task count", "taskID", taskID, "err", err) - return err - } - return nil -} - -func (v *TaskRepoImpl) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { - _, err := v.TaskRedisDao.IncrTaskRunCount(ctx, taskID, taskRunID, TaskRunCountTTL) - if err != nil { - logs.CtxError(ctx, "failed to increment task run count", "taskID", taskID, "taskRunID", taskRunID, "err", err) - return err - } - return nil -} - -func (v *TaskRepoImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { - _, err := v.TaskRedisDao.DecrTaskRunCount(ctx, taskID, taskRunID, TaskRunCountTTL) - if err != nil { - logs.CtxError(ctx, "failed to decrement task run count", "taskID", taskID, "taskRunID", taskRunID, "err", err) - return err - } - return nil -} - func (v *TaskRepoImpl) DeleteTask(ctx context.Context, do *entity.ObservabilityTask) error { // 先执行数据库删除操作 err := v.TaskDao.DeleteTask(ctx, do.ID, do.WorkspaceID, do.CreatedBy) @@ -392,40 +301,34 @@ func (v *TaskRepoImpl) DeleteTask(ctx context.Context, do *entity.ObservabilityT return nil } -func (v *TaskRepoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.TaskRun, error) { - // 直接查询数据库(TaskRun通常不单独缓存) - taskRunPo, err := v.TaskRunDao.GetTaskRun(ctx, id, workspaceID, nil) - if err != nil { - return nil, err +// clearListCaches 清理与指定 workspace 相关的列表缓存 +func (v *TaskRepoImpl) clearListCaches(ctx context.Context, workspaceID int64) { + // 清理任务列表缓存(使用模糊匹配) + pattern := fmt.Sprintf("task:list:%d:*", workspaceID) + if err := v.TaskRedisDao.DeleteTaskList(ctx, pattern); err != nil { + logs.Error("failed to delete task list cache", "pattern", pattern, "err", err) } - // 如果需要userID验证,需要通过Task表验证创建者权限 - if userID != nil { - taskPo, err := v.TaskDao.GetTask(ctx, taskRunPo.TaskID, workspaceID, userID) - if err != nil { - return nil, err - } - if taskPo == nil { - return nil, nil // 权限不符,返回空 - } + // 清理任务计数缓存 + if err := v.TaskRedisDao.DeleteTaskCount(ctx, workspaceID); err != nil { + logs.Error("failed to delete task count cache", "workspaceID", workspaceID, "err", err) } - return convertor.TaskRunPO2DO(taskRunPo), nil + // 清理非最终状态任务缓存 + if err := v.TaskRedisDao.DeleteNonFinalTaskList(ctx); err != nil { + logs.Error("failed to delete non final task list cache", "err", err) + } } -func (v *TaskRepoImpl) ListTaskRuns(ctx context.Context, taskID int64, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) { - // 设置TaskID过滤条件 - param.TaskID = &taskID - - // 查询数据库 - results, total, err := v.TaskRunDao.ListTaskRuns(ctx, param) - if err != nil { - return nil, 0, err +// isNonFinalTaskStatus 判断任务状态是否为非最终状态 +func isNonFinalTaskStatus(status string) bool { + finalStatuses := []string{"success", "disabled"} + for _, finalStatus := range finalStatuses { + if status == finalStatus { + return false + } } - - // 转换为DO - taskRuns := convertor.TaskRunsPO2DO(results) - return taskRuns, total, nil + return true } func (v *TaskRepoImpl) CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) { @@ -454,7 +357,6 @@ func (v *TaskRepoImpl) CreateTaskRun(ctx context.Context, do *entity.TaskRun) (i return createdID, nil } - func (v *TaskRepoImpl) UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error { // 1. 转换并更新数据库 taskRunPo := convertor.TaskRunDO2PO(do) @@ -471,48 +373,146 @@ func (v *TaskRepoImpl) UpdateTaskRun(ctx context.Context, do *entity.TaskRun) er return nil } - func (v *TaskRepoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { - // 1. 执行OCC更新 + // 先执行数据库操作 logs.CtxInfo(ctx, "UpdateTaskRunWithOCC", "id", id, "workspaceID", workspaceID, "updateMap", updateMap) err := v.TaskRunDao.UpdateTaskRunWithOCC(ctx, id, workspaceID, updateMap) if err != nil { return err } - // 2. 异步清理缓存 + // 数据库操作成功后,删除缓存(因为无法直接更新部分字段) go func() { - // 清理相关列表缓存(Task的缓存会自然过期) - v.clearListCaches(context.Background(), workspaceID) + // 删除单个TaskRun缓存,下次查询时会重新加载 + if err := v.TaskRunRedisDao.DeleteTaskRun(context.Background(), id); err != nil { + logs.Error("failed to delete taskrun cache after OCC update", "id", id, "err", err) + } + + // 清理非最终状态TaskRun缓存(状态可能发生变化) + if err := v.TaskRunRedisDao.DeleteNonFinalTaskRunList(context.Background()); err != nil { + logs.Error("failed to delete non final taskrun list cache after OCC update", "err", err) + } }() return nil } +func (v *TaskRepoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.TaskRun, error) { + // 直接查询数据库(TaskRun通常不单独缓存) + taskRunPo, err := v.TaskRunDao.GetTaskRun(ctx, id, workspaceID, nil) + if err != nil { + return nil, err + } + + // 如果需要userID验证,需要通过Task表验证创建者权限 + if userID != nil { + taskPo, err := v.TaskDao.GetTask(ctx, taskRunPo.TaskID, workspaceID, userID) + if err != nil { + return nil, err + } + if taskPo == nil { + return nil, nil // 权限不符,返回空 + } + } -// GetAllTaskRunCountKeys 获取所有TaskRunCount键 -func (v *TaskRepoImpl) GetAllTaskRunCountKeys(ctx context.Context) ([]string, error) { - return v.TaskRedisDao.GetAllTaskRunCountKeys(ctx) + return convertor.TaskRunPO2DO(taskRunPo), nil +} +func (v *TaskRepoImpl) ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) { + results, total, err := v.TaskRunDao.ListTaskRuns(ctx, param) + if err != nil { + return nil, 0, err + } + resp := make([]*entity.TaskRun, len(results)) + for i, result := range results { + resp[i] = convertor.TaskRunPO2DO(result) + } + return resp, total, nil +} +func (v *TaskRepoImpl) GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { + taskRunPo, err := v.TaskRunDao.GetBackfillTaskRun(ctx, workspaceID, taskID) + if err != nil { + return nil, err + } + if taskRunPo == nil { + return nil, nil + } + return convertor.TaskRunPO2DO(taskRunPo), nil +} +func (v *TaskRepoImpl) GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { + taskRunPo, err := v.TaskRunDao.GetLatestNewDataTaskRun(ctx, workspaceID, taskID) + if err != nil { + return nil, err + } + if taskRunPo == nil { + return nil, nil + } + return convertor.TaskRunPO2DO(taskRunPo), nil } -// IncrTaskRunSuccessCount 增加TaskRun成功计数 -func (v *TaskRepoImpl) IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error { - return v.TaskRunRedisDao.IncrTaskRunSuccessCount(ctx, taskID, taskRunID) +func (v *TaskRepoImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, error) { + count, err := v.TaskRedisDao.GetTaskCount(ctx, taskID) + if err != nil { + logs.CtxWarn(ctx, "failed to get task count from redis cache", "taskID", taskID, "err", err) + } else if count != 0 { + return count, nil + } + return count, nil } -func (v *TaskRepoImpl) DecrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error { - return v.TaskRunRedisDao.DecrTaskRunSuccessCount(ctx, taskID, taskRunID) +func (v *TaskRepoImpl) IncrTaskCount(ctx context.Context, taskID int64) error { + _, err := v.TaskRedisDao.IncrTaskCount(ctx, taskID, TaskCountTTL) + if err != nil { + logs.CtxError(ctx, "failed to increment task count", "taskID", taskID, "err", err) + return err + } + return nil +} +func (v *TaskRepoImpl) DecrTaskCount(ctx context.Context, taskID int64) error { + _, err := v.TaskRedisDao.DecrTaskCount(ctx, taskID, TaskCountTTL) + if err != nil { + logs.CtxError(ctx, "failed to decrement task count", "taskID", taskID, "err", err) + return err + } + return nil } -// IncrTaskRunFailCount 增加TaskRun失败计数 -func (v *TaskRepoImpl) IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error { - return v.TaskRunRedisDao.IncrTaskRunFailCount(ctx, taskID, taskRunID) +func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { + count, err := v.TaskRedisDao.GetTaskRunCount(ctx, taskID, taskRunID) + if err != nil { + logs.CtxWarn(ctx, "failed to get task run count from redis cache", "taskID", taskID, "err", err) + } else if count != 0 { + return count, nil + } + return count, nil +} +func (v *TaskRepoImpl) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { + _, err := v.TaskRedisDao.IncrTaskRunCount(ctx, taskID, taskRunID, TaskRunCountTTL) + if err != nil { + logs.CtxError(ctx, "failed to increment task run count", "taskID", taskID, "taskRunID", taskRunID, "err", err) + return err + } + return nil +} +func (v *TaskRepoImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { + _, err := v.TaskRedisDao.DecrTaskRunCount(ctx, taskID, taskRunID, TaskRunCountTTL) + if err != nil { + logs.CtxError(ctx, "failed to decrement task run count", "taskID", taskID, "taskRunID", taskRunID, "err", err) + return err + } + return nil } -// GetTaskRunSuccessCount 获取TaskRun成功计数 func (v *TaskRepoImpl) GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { return v.TaskRunRedisDao.GetTaskRunSuccessCount(ctx, taskID, taskRunID) } +func (v *TaskRepoImpl) IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error { + return v.TaskRunRedisDao.IncrTaskRunSuccessCount(ctx, taskID, taskRunID) +} +func (v *TaskRepoImpl) DecrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error { + return v.TaskRunRedisDao.DecrTaskRunSuccessCount(ctx, taskID, taskRunID) +} -// GetTaskRunFailCount 获取TaskRun失败计数 func (v *TaskRepoImpl) GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { return v.TaskRunRedisDao.GetTaskRunFailCount(ctx, taskID, taskRunID) } +func (v *TaskRepoImpl) IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error { + return v.TaskRunRedisDao.IncrTaskRunFailCount(ctx, taskID, taskRunID) +} From a1877876a52a277af18f1c0ac739f59e66960570 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 20:20:24 +0800 Subject: [PATCH 380/462] feat: [Coda] implement pagination loop for scheduled task processing (LogID: 202509282010120100911102412713936) Co-Authored-By: Coda --- .../taskexe/tracehub/scheduled_task.go | 51 +++++++++++++------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 6f19767b8..17f6578c2 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -78,24 +78,45 @@ func (h *TraceHubServiceImpl) runScheduledTask() { ctx = logs.SetLogID(ctx, logID) ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") // 读取所有非终态(成功/禁用)任务 - taskPOs, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ - TaskFilters: &filter.TaskFilterFields{ - FilterFields: []*filter.TaskFilterField{ - { - FieldName: ptr.Of(filter.TaskFieldNameTaskStatus), - Values: []string{ - string(task.TaskStatusUnstarted), - string(task.TaskStatusRunning), + var taskPOs []*entity.ObservabilityTask + var err error + var offset int32 = 0 + const limit int32 = 1000 + + // 分页循环读取所有任务 + for { + tasklist, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ + ReqLimit: limit, + ReqOffset: offset, + TaskFilters: &filter.TaskFilterFields{ + FilterFields: []*filter.TaskFilterField{ + { + FieldName: ptr.Of(filter.TaskFieldNameTaskStatus), + Values: []string{ + string(task.TaskStatusUnstarted), + string(task.TaskStatusRunning), + }, + QueryType: ptr.Of(filter.QueryTypeIn), + FieldType: ptr.Of(filter.FieldTypeString), }, - QueryType: ptr.Of(filter.QueryTypeIn), - FieldType: ptr.Of(filter.FieldTypeString), }, }, - }, - }) - if err != nil { - logs.CtxError(ctx, "获取非终态任务列表失败", "err", err) - return + }) + if err != nil { + logs.CtxError(ctx, "获取非终态任务列表失败", "err", err) + return + } + + // 将当前页的任务添加到总列表中 + taskPOs = append(taskPOs, tasklist...) + + // 如果当前页返回的任务数量小于限制数量,说明已经是最后一页 + if len(tasklist) < int(limit) { + break + } + + // 继续下一页,offset增加1000 + offset += limit } var tasks []*task.Task From 314355610778a8d15d98fb8b59e2ea2fb959b6db Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Sun, 28 Sep 2025 20:58:25 +0800 Subject: [PATCH 381/462] fix debug log --- .../domain/task/service/taskexe/tracehub/scheduled_task.go | 4 ++-- backend/modules/observability/infra/repo/task.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 17f6578c2..ac11c3224 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -73,10 +73,10 @@ func (h *TraceHubServiceImpl) startSyncTaskRunCounts() { func (h *TraceHubServiceImpl) runScheduledTask() { ctx := context.Background() - logs.CtxInfo(ctx, "定时任务开始执行...") logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + logs.CtxInfo(ctx, "定时任务开始执行...") // 读取所有非终态(成功/禁用)任务 var taskPOs []*entity.ObservabilityTask var err error @@ -377,4 +377,4 @@ func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *Tas } return nil -} \ No newline at end of file +} diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index ec751066f..a76f9aa2f 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -107,8 +107,8 @@ func (v *TaskRepoImpl) ListTasks(ctx context.Context, param mysql.ListTaskParam) taskRuns, _, err := v.TaskRunDao.ListTaskRuns(ctx, mysql.ListTaskRunParam{ WorkspaceID: ptr.Of(t.WorkspaceID), TaskID: ptr.Of(t.ID), - ReqLimit: 1000, - ReqOffset: 0, + ReqLimit: param.ReqLimit, + ReqOffset: param.ReqOffset, }) if err != nil { logs.CtxError(ctx, "ListTaskRuns err, taskID:%d, err:%v", t.ID, err) From 5a79b5527e297ba8883b8ba0e2a7d8027b588daa Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 11:10:09 +0800 Subject: [PATCH 382/462] fix runScheduledTask --- .../taskexe/tracehub/scheduled_task.go | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index ac11c3224..629dbe87d 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -95,6 +95,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { Values: []string{ string(task.TaskStatusUnstarted), string(task.TaskStatusRunning), + string(task.TaskStatusPending), }, QueryType: ptr.Of(filter.QueryTypeIn), FieldType: ptr.Of(filter.FieldTypeString), @@ -118,9 +119,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 继续下一页,offset增加1000 offset += limit } - - var tasks []*task.Task - logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(tasks)) + logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(taskPOs)) for _, taskPO := range taskPOs { var taskRun entity.TaskRun // 计算 taskRunstat:只有当所有 run 都为 done 状态时才为 true @@ -147,7 +146,6 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) if (time.Now().After(endTime) || taskInfo.GetRule().GetEffectiveTime().GetEndAt() == 0) && allRunsDone { - err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, TaskRun: &taskRun, @@ -185,7 +183,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } - if taskInfo.GetTaskStatus() == task.TaskStatusRunning && taskInfo.GetRule().GetSampler().GetIsCycle() { + if taskInfo.GetTaskStatus() != task.TaskStatusUnstarted { logs.CtxInfo(ctx, "taskID:%d, taskRun.RunEndAt:%v", taskInfo.GetID(), taskRun.RunEndAt) // 达到单次任务时间期限 if time.Now().After(taskRun.RunEndAt) { @@ -199,15 +197,17 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxError(ctx, "OnFinishTaskChange err:%v", err) continue } - err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ - CurrentTask: taskInfo, - RunType: task.TaskRunTypeNewData, - RunStartAt: taskRun.RunEndAt.UnixMilli(), - RunEndAt: taskRun.RunEndAt.UnixMilli() + (taskRun.RunEndAt.UnixMilli() - taskRun.RunStartAt.UnixMilli()), - }) - if err != nil { - logs.CtxError(ctx, "OnCreateTaskRunChange err:%v", err) - continue + if taskInfo.GetRule().GetSampler().GetIsCycle() { + err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ + CurrentTask: taskInfo, + RunType: task.TaskRunTypeNewData, + RunStartAt: taskRun.RunEndAt.UnixMilli(), + RunEndAt: taskRun.RunEndAt.UnixMilli() + (taskRun.RunEndAt.UnixMilli() - taskRun.RunStartAt.UnixMilli()), + }) + if err != nil { + logs.CtxError(ctx, "OnCreateTaskRunChange err:%v", err) + continue + } } } } From 1de132b775c5b9ab8e450f600256f55d5afed366 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 11:22:33 +0800 Subject: [PATCH 383/462] delete useless code --- .../modules/observability/application/wire.go | 6 +- .../observability/application/wire_gen.go | 13 +- .../domain/task/service/task_service.go | 3 - .../taskexe/processor/auto_evaluate.go | 5 +- .../service/taskexe/tracehub/subscriber.go | 1 - .../service/taskexe/tracehub/trace_hub.go | 4 - .../observability/infra/repo/task_run.go | 903 +++++++++--------- 7 files changed, 461 insertions(+), 474 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 17003edf2..2d4097fd5 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -67,7 +67,7 @@ var ( NewInitTaskProcessor, taskSvc.NewTaskServiceImpl, obrepo.NewTaskRepoImpl, - obrepo.NewTaskRunRepoImpl, + //obrepo.NewTaskRunRepoImpl, mysqldao.NewTaskDaoImpl, tredis.NewTaskDAO, tredis.NewTaskRunDAO, @@ -198,9 +198,9 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase } func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter, taskRepo trepo.ITaskRepo, taskRunRepo trepo.ITaskRunRepo) *task_processor.TaskProcessor { + evaluationService rpc.IEvaluationRPCAdapter, taskRepo trepo.ITaskRepo) *task_processor.TaskProcessor { taskProcessor := task_processor.NewTaskProcessor() - taskProcessor.Register(task.TaskTypeAutoEval, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) + taskProcessor.Register(task.TaskTypeAutoEval, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo)) return taskProcessor } diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index bcd46170d..da4d2f9d0 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -203,7 +203,6 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) iTaskRunDAO := dao.NewTaskRunDAO(redis2) iTaskRepo := repo.NewTaskRepoImpl(iTaskDao, idgen2, iTaskDAO, iTaskRunDao, iTaskRunDAO) - iTaskRunRepo := repo.NewTaskRunRepoImpl(iTaskRunDao, idgen2, iTaskRunDAO) iUserProvider := user.NewUserRPCProvider(userClient) iConfigLoader, err := NewTraceConfigLoader(configFactory) if err != nil { @@ -217,10 +216,10 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto datasetServiceAdaptor := NewDatasetServiceAdapter(evalSetService, datasetService) iEvaluatorRPCAdapter := evaluator.NewEvaluatorRPCProvider(evalService) iEvaluationRPCAdapter := evaluation.NewEvaluationRPCProvider(exptService) - processorTaskProcessor := NewInitTaskProcessor(datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTaskRepo, iTaskRunRepo) + processorTaskProcessor := NewInitTaskProcessor(datasetServiceAdaptor, iEvaluatorRPCAdapter, iEvaluationRPCAdapter, iTaskRepo) iFileProvider := file.NewFileRPCProvider(fileClient) traceFilterProcessorBuilder := NewTraceProcessorBuilder(iTraceConfig, iFileProvider, benefit2) - iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iTaskRunRepo, iUserProvider, idgen2, iBackfillProducer, processorTaskProcessor, traceFilterProcessorBuilder) + iTaskService, err := service2.NewTaskServiceImpl(iTaskRepo, iUserProvider, idgen2, iBackfillProducer, processorTaskProcessor, traceFilterProcessorBuilder) if err != nil { return nil, err } @@ -238,7 +237,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto return nil, err } iTenantProvider := tenant.NewTenantProvider(iTraceConfig) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTaskRunRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor, benefit2) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor, benefit2) if err != nil { return nil, err } @@ -253,7 +252,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto var ( taskDomainSet = wire.NewSet( - NewInitTaskProcessor, service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, repo.NewTaskRunRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, dao.NewTaskRunDAO, mysql.NewTaskRunDaoImpl, producer.NewBackfillProducerImpl, + NewInitTaskProcessor, service2.NewTaskServiceImpl, repo.NewTaskRepoImpl, mysql.NewTaskDaoImpl, dao.NewTaskDAO, dao.NewTaskRunDAO, mysql.NewTaskRunDaoImpl, producer.NewBackfillProducerImpl, ) traceDomainSet = wire.NewSet(service.NewTraceServiceImpl, service.NewTraceExportServiceImpl, repo.NewTraceCKRepoImpl, ck2.NewSpansCkDaoImpl, ck2.NewAnnotationCkDaoImpl, metrics2.NewTraceMetricsImpl, producer.NewTraceProducerImpl, producer.NewAnnotationProducerImpl, file.NewFileRPCProvider, NewTraceConfigLoader, NewTraceProcessorBuilder, config.NewTraceConfigCenter, tenant.NewTenantProvider, workspace.NewWorkspaceProvider, evaluator.NewEvaluatorRPCProvider, NewDatasetServiceAdapter, @@ -311,8 +310,8 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase } func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, - evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo3.ITaskRepo, taskRunRepo repo3.ITaskRunRepo) *processor.TaskProcessor { + evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo3.ITaskRepo) *processor.TaskProcessor { taskProcessor := processor.NewTaskProcessor() - taskProcessor.Register(task.TaskTypeAutoEval, processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo, taskRunRepo)) + taskProcessor.Register(task.TaskTypeAutoEval, processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo)) return taskProcessor } diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 5dfa08fe8..64492d33d 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -82,7 +82,6 @@ type ITaskService interface { func NewTaskServiceImpl( tRepo repo.ITaskRepo, - tRunRepo repo.ITaskRunRepo, userProvider rpc.IUserProvider, idGenerator idgen.IIDGenerator, backfillProducer mq.IBackfillProducer, @@ -91,7 +90,6 @@ func NewTaskServiceImpl( ) (ITaskService, error) { return &TaskServiceImpl{ TaskRepo: tRepo, - TaskRunRepo: tRunRepo, userProvider: userProvider, idGenerator: idGenerator, backfillProducer: backfillProducer, @@ -102,7 +100,6 @@ func NewTaskServiceImpl( type TaskServiceImpl struct { TaskRepo repo.ITaskRepo - TaskRunRepo repo.ITaskRunRepo userProvider rpc.IUserProvider idGenerator idgen.IIDGenerator backfillProducer mq.IBackfillProducer diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 241ae56b0..8a7c33a73 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -40,21 +40,18 @@ type AutoEvaluteProcessor struct { evaluationSvc rpc.IEvaluationRPCAdapter datasetServiceAdaptor *service.DatasetServiceAdaptor taskRepo repo.ITaskRepo - taskRunRepo repo.ITaskRunRepo } func NewAutoEvaluteProcessor( datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, - taskRepo repo.ITaskRepo, - taskRunRepo repo.ITaskRunRepo) *AutoEvaluteProcessor { + taskRepo repo.ITaskRepo) *AutoEvaluteProcessor { return &AutoEvaluteProcessor{ datasetServiceAdaptor: datasetServiceProvider, evalSvc: evalService, evaluationSvc: evaluationService, taskRepo: taskRepo, - taskRunRepo: taskRunRepo, } } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go index 6ee3246f5..76fe35c50 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go @@ -34,7 +34,6 @@ type spanSubscriber struct { flushWait sync.WaitGroup maxFlushInterval time.Duration taskRepo repo.ITaskRepo - taskRunRepo repo.ITaskRunRepo runType task.TaskRunType buildHelper service.TraceFilterProcessorBuilder } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index ec13eb88d..77b037ce1 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -37,7 +37,6 @@ type ITraceHubService interface { func NewTraceHubImpl( tRepo repo.ITaskRepo, - tRunRepo repo.ITaskRunRepo, traceRepo trace_repo.ITraceRepo, tenantProvider tenant.ITenantProvider, buildHelper service.TraceFilterProcessorBuilder, @@ -49,7 +48,6 @@ func NewTraceHubImpl( syncTaskTicker := time.NewTicker(2 * time.Minute) // 数据同步 - 1分钟间隔 impl := &TraceHubServiceImpl{ taskRepo: tRepo, - taskRunRepo: tRunRepo, scheduledTaskTicker: scheduledTaskTicker, syncTaskTicker: syncTaskTicker, stopChan: make(chan struct{}), @@ -72,7 +70,6 @@ type TraceHubServiceImpl struct { syncTaskTicker *time.Ticker // 数据同步定时器 - 1分钟间隔 stopChan chan struct{} taskRepo repo.ITaskRepo - taskRunRepo repo.ITaskRunRepo traceRepo trace_repo.ITraceRepo tenantProvider tenant.ITenantProvider taskProcessor *processor.TaskProcessor @@ -164,7 +161,6 @@ func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loo maxFlushInterval: time.Second * 5, taskRepo: h.taskRepo, runType: task.TaskRunTypeNewData, - taskRunRepo: h.taskRunRepo, buildHelper: h.buildHelper, }) } diff --git a/backend/modules/observability/infra/repo/task_run.go b/backend/modules/observability/infra/repo/task_run.go index 592b38eb1..8d055cf41 100755 --- a/backend/modules/observability/infra/repo/task_run.go +++ b/backend/modules/observability/infra/repo/task_run.go @@ -3,455 +3,454 @@ package repo -import ( - "context" - "strconv" - "time" - - "github.com/coze-dev/coze-loop/backend/infra/idgen" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" - "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/convertor" - taskRunDao "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/dao" - "github.com/coze-dev/coze-loop/backend/pkg/logs" -) - -func NewTaskRunRepoImpl(taskRunDao mysql.ITaskRunDao, idGenerator idgen.IIDGenerator, taskRunRedisDao taskRunDao.ITaskRunDAO) repo.ITaskRunRepo { - return &TaskRunRepoImpl{ - TaskRunDao: taskRunDao, - idGenerator: idGenerator, - TaskRunRedisDao: taskRunRedisDao, - } -} - -type TaskRunRepoImpl struct { - TaskRunDao mysql.ITaskRunDao - TaskRunRedisDao taskRunDao.ITaskRunDAO - idGenerator idgen.IIDGenerator -} - -// 缓存 TTL 常量 -const ( - TaskRunDetailTTL = 15 * time.Minute // TaskRun缓存15分钟 - NonFinalTaskRunListTTL = 30 * time.Second // 非终态TaskRun缓存30秒 - TaskRunListByTaskTTL = 5 * time.Minute // 按Task分组的TaskRun列表缓存5分钟 - ObjListWithTaskRunTTL = 15 * time.Minute // 对象列表缓存15分钟 -) - -// GetTaskRun 获取单个TaskRun -func (v *TaskRunRepoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*entity.TaskRun, error) { - // 先查 Redis 缓存 - cachedTaskRun, err := v.TaskRunRedisDao.GetTaskRun(ctx, id) - if err != nil { - logs.CtxWarn(ctx, "failed to get taskrun from redis cache", "id", id, "err", err) - } else if cachedTaskRun != nil { - // 验证权限(workspaceID 和 taskID) - if workspaceID != nil && cachedTaskRun.WorkspaceID != *workspaceID { - return nil, nil // 权限不符,返回空 - } - if taskID != nil && cachedTaskRun.TaskID != *taskID { - return nil, nil // 权限不符,返回空 - } - return cachedTaskRun, nil - } - - // 缓存未命中,查询数据库 - taskRunPo, err := v.TaskRunDao.GetTaskRun(ctx, id, workspaceID, taskID) - if err != nil { - return nil, err - } - - taskRunDO := convertor.TaskRunPO2DO(taskRunPo) - - // 异步缓存到 Redis - go func() { - if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), taskRunDO, TaskRunDetailTTL); err != nil { - logs.Error("failed to set taskrun cache", "id", id, "err", err) - } - }() - - return taskRunDO, nil -} - -// GetBackfillTaskRun 获取Backfill类型的TaskRun -func (v *TaskRunRepoImpl) GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { - taskRunPo, err := v.TaskRunDao.GetBackfillTaskRun(ctx, workspaceID, taskID) - if err != nil { - return nil, err - } - if taskRunPo == nil { - return nil, nil - } - return convertor.TaskRunPO2DO(taskRunPo), nil -} - -// GetNewDataTaskRun 获取NewData类型的TaskRun - -func (v *TaskRunRepoImpl) GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { - taskRunPo, err := v.TaskRunDao.GetLatestNewDataTaskRun(ctx, workspaceID, taskID) - if err != nil { - return nil, err - } - if taskRunPo == nil { - return nil, nil - } - return convertor.TaskRunPO2DO(taskRunPo), nil -} - -// ListTaskRuns 获取TaskRun列表 -func (v *TaskRunRepoImpl) ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) { - results, total, err := v.TaskRunDao.ListTaskRuns(ctx, param) - if err != nil { - return nil, 0, err - } - resp := make([]*entity.TaskRun, len(results)) - for i, result := range results { - resp[i] = convertor.TaskRunPO2DO(result) - } - return resp, total, nil -} - -// CreateTaskRun 创建TaskRun -func (v *TaskRunRepoImpl) CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) { - id, err := v.idGenerator.GenID(ctx) - if err != nil { - return 0, err - } - taskRunPo := convertor.TaskRunDO2PO(do) - taskRunPo.ID = id - - // 先执行数据库操作 - createdID, err := v.TaskRunDao.CreateTaskRun(ctx, taskRunPo) - if err != nil { - return 0, err - } - - // 数据库操作成功后,更新缓存 - do.ID = createdID - go func() { - // 缓存新创建的TaskRun - if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), do, TaskRunDetailTTL); err != nil { - logs.Error("failed to set taskrun cache after create", "id", createdID, "err", err) - } - - // 清理相关列表缓存 - v.clearTaskRunListCaches(context.Background(), do.WorkspaceID, do.TaskID) - }() - - return createdID, nil -} - -// UpdateTaskRun 更新TaskRun -func (v *TaskRunRepoImpl) UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error { - taskRunPo := convertor.TaskRunDO2PO(do) - - // 先执行数据库操作 - err := v.TaskRunDao.UpdateTaskRun(ctx, taskRunPo) - if err != nil { - return err - } - - // 数据库操作成功后,更新缓存 - go func() { - // 更新单个TaskRun缓存 - if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), do, TaskRunDetailTTL); err != nil { - logs.Error("failed to update taskrun cache", "id", do.ID, "err", err) - } - - // 清理相关列表缓存 - v.clearTaskRunListCaches(context.Background(), do.WorkspaceID, do.TaskID) - }() - - return nil -} - -// DeleteTaskRun 删除TaskRun -func (v *TaskRunRepoImpl) DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error { - // 先执行数据库操作 - err := v.TaskRunDao.DeleteTaskRun(ctx, id, workspaceID, userID) - if err != nil { - return err - } - - // 数据库操作成功后,删除缓存 - go func() { - // 删除单个TaskRun缓存 - if err := v.TaskRunRedisDao.DeleteTaskRun(context.Background(), id); err != nil { - logs.Error("failed to delete taskrun cache", "id", id, "err", err) - } - - // 清理相关列表缓存 - v.clearTaskRunListCaches(context.Background(), workspaceID, 0) - }() - - return nil -} - -// ListNonFinalTaskRun 获取非终态TaskRun列表 -func (v *TaskRunRepoImpl) ListNonFinalTaskRun(ctx context.Context) ([]*entity.TaskRun, error) { - // 先查 Redis 缓存 - cachedTaskRuns, err := v.TaskRunRedisDao.GetNonFinalTaskRunList(ctx) - if err != nil { - logs.CtxWarn(ctx, "failed to get non final taskrun list from redis cache", "err", err) - } else if cachedTaskRuns != nil { - return cachedTaskRuns, nil - } - - // 缓存未命中,查询数据库 - results, err := v.TaskRunDao.ListNonFinalTaskRun(ctx) - if err != nil { - return nil, err - } - - resp := make([]*entity.TaskRun, len(results)) - for i, result := range results { - resp[i] = convertor.TaskRunPO2DO(result) - } - - // 异步缓存到 Redis(短TTL,因为非最终状态变化频繁) - go func() { - if err := v.TaskRunRedisDao.SetNonFinalTaskRunList(context.Background(), resp, NonFinalTaskRunListTTL); err != nil { - logs.Error("failed to set non final taskrun list cache", "err", err) - } - }() - - return resp, nil -} - -// ListNonFinalTaskRunByTaskID 按TaskID获取非终态TaskRun -func (v *TaskRunRepoImpl) ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) { - // 先尝试从按Task分组的缓存中获取,然后过滤非终态 - cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) - if err != nil { - logs.CtxWarn(ctx, "failed to get taskrun list by task from redis cache", "taskID", taskID, "err", err) - } else if cachedTaskRuns != nil { - // 过滤出非终态TaskRun - var nonFinalTaskRuns []*entity.TaskRun - for _, tr := range cachedTaskRuns { - if isNonFinalStatus(tr.RunStatus) { - nonFinalTaskRuns = append(nonFinalTaskRuns, tr) - } - } - return nonFinalTaskRuns, nil - } - - // 缓存未命中,查询数据库 - results, err := v.TaskRunDao.ListNonFinalTaskRunByTaskID(ctx, taskID) - if err != nil { - return nil, err - } - - resp := make([]*entity.TaskRun, len(results)) - for i, result := range results { - resp[i] = convertor.TaskRunPO2DO(result) - } - - return resp, nil -} - -// ListNonFinalTaskRunBySpaceID 按空间ID获取非终态TaskRun -func (v *TaskRunRepoImpl) ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID string) []*entity.TaskRun { - // 缓存未命中,查询数据库 - spaceIDInt, _ := strconv.ParseInt(spaceID, 10, 64) - results, err := v.TaskRunDao.ListNonFinalTaskRunBySpaceID(ctx, spaceIDInt) - if err != nil { - logs.CtxError(ctx, "failed to get non final taskrun by space id", "spaceID", spaceID, "err", err) - return nil - } - resp := make([]*entity.TaskRun, len(results)) - for i, result := range results { - resp[i] = convertor.TaskRunPO2DO(result) - } - return resp -} - -// UpdateTaskRunWithOCC 乐观并发控制更新 -func (v *TaskRunRepoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { - // 先执行数据库操作 - logs.CtxInfo(ctx, "UpdateTaskRunWithOCC", "id", id, "workspaceID", workspaceID, "updateMap", updateMap) - err := v.TaskRunDao.UpdateTaskRunWithOCC(ctx, id, workspaceID, updateMap) - if err != nil { - return err - } - - // 数据库操作成功后,删除缓存(因为无法直接更新部分字段) - go func() { - // 删除单个TaskRun缓存,下次查询时会重新加载 - if err := v.TaskRunRedisDao.DeleteTaskRun(context.Background(), id); err != nil { - logs.Error("failed to delete taskrun cache after OCC update", "id", id, "err", err) - } - - // 清理相关列表缓存 - v.clearTaskRunListCaches(context.Background(), workspaceID, 0) - - // 清理非最终状态TaskRun缓存(状态可能发生变化) - if err := v.TaskRunRedisDao.DeleteNonFinalTaskRunList(context.Background()); err != nil { - logs.Error("failed to delete non final taskrun list cache after OCC update", "err", err) - } - }() - - return nil -} - -// GetObjListWithTaskRun 获取有TaskRun的对象列表 -func (v *TaskRunRepoImpl) GetObjListWithTaskRun(ctx context.Context) ([]string, []string) { - // 先查 Redis 缓存 - spaceList, botList, err := v.TaskRunRedisDao.GetObjListWithTaskRun(ctx) - if err != nil { - logs.CtxWarn(ctx, "failed to get obj list with taskrun from redis cache", "err", err) - } else if spaceList != nil || botList != nil { - return spaceList, botList - } - - // 缓存未命中,查询数据库 - spaceList, botList, err = v.TaskRunDao.GetObjListWithTaskRun(ctx) - if err != nil { - logs.CtxWarn(ctx, "failed to get obj list with taskrun from mysql", "err", err) - return nil, nil - } - - // 异步缓存结果 - go func() { - if err := v.TaskRunRedisDao.SetObjListWithTaskRun(context.Background(), spaceList, botList, ObjListWithTaskRunTTL); err != nil { - logs.Error("failed to set obj list with taskrun cache", "err", err) - } - }() - - return spaceList, botList -} - -// ListActiveTaskRunsByTask 获取Task的活跃TaskRun列表 -func (v *TaskRunRepoImpl) ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) { - // 先查缓存 - cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) - if err != nil { - logs.CtxWarn(ctx, "failed to get taskrun list by task from redis", "taskID", taskID, "err", err) - } else if cachedTaskRuns != nil { - // 过滤出活跃状态的TaskRun - var activeTaskRuns []*entity.TaskRun - for _, tr := range cachedTaskRuns { - if isActiveStatus(tr.RunStatus) { - activeTaskRuns = append(activeTaskRuns, tr) - } - } - return activeTaskRuns, nil - } - - // 缓存未命中,查询数据库 - results, err := v.TaskRunDao.ListActiveTaskRunsByTask(ctx, taskID) - if err != nil { - return nil, err - } - - resp := make([]*entity.TaskRun, len(results)) - for i, result := range results { - resp[i] = convertor.TaskRunPO2DO(result) - } - - // 异步缓存 - go func() { - if err := v.TaskRunRedisDao.SetTaskRunListByTask(context.Background(), taskID, resp, TaskRunListByTaskTTL); err != nil { - logs.Error("failed to set taskrun list by task cache", "taskID", taskID, "err", err) - } - }() - - return resp, nil -} - -// GetLatestTaskRunByTask 获取Task的最新TaskRun -func (v *TaskRunRepoImpl) GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*entity.TaskRun, error) { - // 先查缓存 - cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) - if err != nil { - logs.CtxWarn(ctx, "failed to get taskrun list by task from redis", "taskID", taskID, "err", err) - } else if cachedTaskRuns != nil && len(cachedTaskRuns) > 0 { - // 缓存中的TaskRun列表应该已经按创建时间排序,返回第一个 - return cachedTaskRuns[0], nil - } - - // 缓存未命中,查询数据库 - result, err := v.TaskRunDao.GetLatestTaskRunByTask(ctx, taskID) - if err != nil { - return nil, err - } - if result == nil { - return nil, nil - } - - taskRunDO := convertor.TaskRunPO2DO(result) - return taskRunDO, nil -} - -// ListTaskRunsByStatus 按状态获取TaskRun列表 -func (v *TaskRunRepoImpl) ListTaskRunsByStatus(ctx context.Context, status string) ([]*entity.TaskRun, error) { - // 直接查询数据库,不缓存(状态查询通常是临时性的) - results, err := v.TaskRunDao.ListTaskRunsByStatus(ctx, status) - if err != nil { - return nil, err - } - - resp := make([]*entity.TaskRun, len(results)) - for i, result := range results { - resp[i] = convertor.TaskRunPO2DO(result) - } - - return resp, nil -} - -// GetTaskRunCount 获取TaskRun计数 -func (v *TaskRunRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { - // 先查 Redis 缓存 - count, err := v.TaskRunRedisDao.GetTaskRunCount(ctx, taskID, taskRunID) - if err != nil { - logs.CtxWarn(ctx, "failed to get taskrun count from redis cache", "taskID", taskID, "taskRunID", taskRunID, "err", err) - } else if count != -1 { - return count, nil - } - - // 缓存未命中,这里可以根据业务需求实现具体的计数逻辑 - // 目前返回0,实际使用时需要根据业务需求实现 - return 0, nil -} - -// clearTaskRunListCaches 清理与指定 workspace 和 task 相关的列表缓存 -func (v *TaskRunRepoImpl) clearTaskRunListCaches(ctx context.Context, workspaceID, taskID int64) { - // 清理非终态TaskRun列表缓存 - if err := v.TaskRunRedisDao.DeleteNonFinalTaskRunList(ctx); err != nil { - logs.Error("failed to delete non final taskrun list cache", "err", err) - } - - // 清理按Task分组的TaskRun列表缓存 - if taskID > 0 { - if err := v.TaskRunRedisDao.DeleteTaskRunListByTask(ctx, taskID); err != nil { - logs.Error("failed to delete taskrun list by task cache", "taskID", taskID, "err", err) - } - } - - // 清理对象列表缓存 - if err := v.TaskRunRedisDao.DeleteObjListWithTaskRun(ctx); err != nil { - logs.Error("failed to delete obj list with taskrun cache", "err", err) - } -} - -// isNonFinalStatus 检查是否为非终态状态 -func isNonFinalStatus(status string) bool { - nonFinalStatuses := []string{"pending", "running", "paused", "retrying"} - for _, s := range nonFinalStatuses { - if status == s { - return true - } - } - return false -} - -// isActiveStatus 检查是否为活跃状态 -func isActiveStatus(status string) bool { - activeStatuses := []string{"running", "retrying"} - for _, s := range activeStatuses { - if status == s { - return true - } - } - return false -} +//import ( +// "context" +// "strconv" +// "time" +// +// "github.com/coze-dev/coze-loop/backend/infra/idgen" +// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" +// "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" +// "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/convertor" +// taskRunDao "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/dao" +// "github.com/coze-dev/coze-loop/backend/pkg/logs" +//) +// +////func NewTaskRunRepoImpl(taskRunDao mysql.ITaskRunDao, idGenerator idgen.IIDGenerator, taskRunRedisDao taskRunDao.ITaskRunDAO) repo.ITaskRunRepo { +//// return &TaskRunRepoImpl{ +//// TaskRunDao: taskRunDao, +//// idGenerator: idGenerator, +//// TaskRunRedisDao: taskRunRedisDao, +//// } +////} +// +//type TaskRunRepoImpl struct { +// TaskRunDao mysql.ITaskRunDao +// TaskRunRedisDao taskRunDao.ITaskRunDAO +// idGenerator idgen.IIDGenerator +//} +// +//// 缓存 TTL 常量 +//const ( +// TaskRunDetailTTL = 15 * time.Minute // TaskRun缓存15分钟 +// NonFinalTaskRunListTTL = 30 * time.Second // 非终态TaskRun缓存30秒 +// TaskRunListByTaskTTL = 5 * time.Minute // 按Task分组的TaskRun列表缓存5分钟 +// ObjListWithTaskRunTTL = 15 * time.Minute // 对象列表缓存15分钟 +//) +// +//// GetTaskRun 获取单个TaskRun +//func (v *TaskRunRepoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*entity.TaskRun, error) { +// // 先查 Redis 缓存 +// cachedTaskRun, err := v.TaskRunRedisDao.GetTaskRun(ctx, id) +// if err != nil { +// logs.CtxWarn(ctx, "failed to get taskrun from redis cache", "id", id, "err", err) +// } else if cachedTaskRun != nil { +// // 验证权限(workspaceID 和 taskID) +// if workspaceID != nil && cachedTaskRun.WorkspaceID != *workspaceID { +// return nil, nil // 权限不符,返回空 +// } +// if taskID != nil && cachedTaskRun.TaskID != *taskID { +// return nil, nil // 权限不符,返回空 +// } +// return cachedTaskRun, nil +// } +// +// // 缓存未命中,查询数据库 +// taskRunPo, err := v.TaskRunDao.GetTaskRun(ctx, id, workspaceID, taskID) +// if err != nil { +// return nil, err +// } +// +// taskRunDO := convertor.TaskRunPO2DO(taskRunPo) +// +// // 异步缓存到 Redis +// go func() { +// if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), taskRunDO, TaskRunDetailTTL); err != nil { +// logs.Error("failed to set taskrun cache", "id", id, "err", err) +// } +// }() +// +// return taskRunDO, nil +//} +// +//// GetBackfillTaskRun 获取Backfill类型的TaskRun +//func (v *TaskRunRepoImpl) GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { +// taskRunPo, err := v.TaskRunDao.GetBackfillTaskRun(ctx, workspaceID, taskID) +// if err != nil { +// return nil, err +// } +// if taskRunPo == nil { +// return nil, nil +// } +// return convertor.TaskRunPO2DO(taskRunPo), nil +//} +// +//// GetNewDataTaskRun 获取NewData类型的TaskRun +// +//func (v *TaskRunRepoImpl) GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { +// taskRunPo, err := v.TaskRunDao.GetLatestNewDataTaskRun(ctx, workspaceID, taskID) +// if err != nil { +// return nil, err +// } +// if taskRunPo == nil { +// return nil, nil +// } +// return convertor.TaskRunPO2DO(taskRunPo), nil +//} +// +//// ListTaskRuns 获取TaskRun列表 +//func (v *TaskRunRepoImpl) ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) { +// results, total, err := v.TaskRunDao.ListTaskRuns(ctx, param) +// if err != nil { +// return nil, 0, err +// } +// resp := make([]*entity.TaskRun, len(results)) +// for i, result := range results { +// resp[i] = convertor.TaskRunPO2DO(result) +// } +// return resp, total, nil +//} +// +//// CreateTaskRun 创建TaskRun +//func (v *TaskRunRepoImpl) CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) { +// id, err := v.idGenerator.GenID(ctx) +// if err != nil { +// return 0, err +// } +// taskRunPo := convertor.TaskRunDO2PO(do) +// taskRunPo.ID = id +// +// // 先执行数据库操作 +// createdID, err := v.TaskRunDao.CreateTaskRun(ctx, taskRunPo) +// if err != nil { +// return 0, err +// } +// +// // 数据库操作成功后,更新缓存 +// do.ID = createdID +// go func() { +// // 缓存新创建的TaskRun +// if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), do, TaskRunDetailTTL); err != nil { +// logs.Error("failed to set taskrun cache after create", "id", createdID, "err", err) +// } +// +// // 清理相关列表缓存 +// v.clearTaskRunListCaches(context.Background(), do.WorkspaceID, do.TaskID) +// }() +// +// return createdID, nil +//} +// +//// UpdateTaskRun 更新TaskRun +//func (v *TaskRunRepoImpl) UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error { +// taskRunPo := convertor.TaskRunDO2PO(do) +// +// // 先执行数据库操作 +// err := v.TaskRunDao.UpdateTaskRun(ctx, taskRunPo) +// if err != nil { +// return err +// } +// +// // 数据库操作成功后,更新缓存 +// go func() { +// // 更新单个TaskRun缓存 +// if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), do, TaskRunDetailTTL); err != nil { +// logs.Error("failed to update taskrun cache", "id", do.ID, "err", err) +// } +// +// // 清理相关列表缓存 +// v.clearTaskRunListCaches(context.Background(), do.WorkspaceID, do.TaskID) +// }() +// +// return nil +//} +// +//// DeleteTaskRun 删除TaskRun +//func (v *TaskRunRepoImpl) DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error { +// // 先执行数据库操作 +// err := v.TaskRunDao.DeleteTaskRun(ctx, id, workspaceID, userID) +// if err != nil { +// return err +// } +// +// // 数据库操作成功后,删除缓存 +// go func() { +// // 删除单个TaskRun缓存 +// if err := v.TaskRunRedisDao.DeleteTaskRun(context.Background(), id); err != nil { +// logs.Error("failed to delete taskrun cache", "id", id, "err", err) +// } +// +// // 清理相关列表缓存 +// v.clearTaskRunListCaches(context.Background(), workspaceID, 0) +// }() +// +// return nil +//} +// +//// ListNonFinalTaskRun 获取非终态TaskRun列表 +//func (v *TaskRunRepoImpl) ListNonFinalTaskRun(ctx context.Context) ([]*entity.TaskRun, error) { +// // 先查 Redis 缓存 +// cachedTaskRuns, err := v.TaskRunRedisDao.GetNonFinalTaskRunList(ctx) +// if err != nil { +// logs.CtxWarn(ctx, "failed to get non final taskrun list from redis cache", "err", err) +// } else if cachedTaskRuns != nil { +// return cachedTaskRuns, nil +// } +// +// // 缓存未命中,查询数据库 +// results, err := v.TaskRunDao.ListNonFinalTaskRun(ctx) +// if err != nil { +// return nil, err +// } +// +// resp := make([]*entity.TaskRun, len(results)) +// for i, result := range results { +// resp[i] = convertor.TaskRunPO2DO(result) +// } +// +// // 异步缓存到 Redis(短TTL,因为非最终状态变化频繁) +// go func() { +// if err := v.TaskRunRedisDao.SetNonFinalTaskRunList(context.Background(), resp, NonFinalTaskRunListTTL); err != nil { +// logs.Error("failed to set non final taskrun list cache", "err", err) +// } +// }() +// +// return resp, nil +//} +// +//// ListNonFinalTaskRunByTaskID 按TaskID获取非终态TaskRun +//func (v *TaskRunRepoImpl) ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) { +// // 先尝试从按Task分组的缓存中获取,然后过滤非终态 +// cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) +// if err != nil { +// logs.CtxWarn(ctx, "failed to get taskrun list by task from redis cache", "taskID", taskID, "err", err) +// } else if cachedTaskRuns != nil { +// // 过滤出非终态TaskRun +// var nonFinalTaskRuns []*entity.TaskRun +// for _, tr := range cachedTaskRuns { +// if isNonFinalStatus(tr.RunStatus) { +// nonFinalTaskRuns = append(nonFinalTaskRuns, tr) +// } +// } +// return nonFinalTaskRuns, nil +// } +// +// // 缓存未命中,查询数据库 +// results, err := v.TaskRunDao.ListNonFinalTaskRunByTaskID(ctx, taskID) +// if err != nil { +// return nil, err +// } +// +// resp := make([]*entity.TaskRun, len(results)) +// for i, result := range results { +// resp[i] = convertor.TaskRunPO2DO(result) +// } +// +// return resp, nil +//} +// +//// ListNonFinalTaskRunBySpaceID 按空间ID获取非终态TaskRun +//func (v *TaskRunRepoImpl) ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID string) []*entity.TaskRun { +// // 缓存未命中,查询数据库 +// spaceIDInt, _ := strconv.ParseInt(spaceID, 10, 64) +// results, err := v.TaskRunDao.ListNonFinalTaskRunBySpaceID(ctx, spaceIDInt) +// if err != nil { +// logs.CtxError(ctx, "failed to get non final taskrun by space id", "spaceID", spaceID, "err", err) +// return nil +// } +// resp := make([]*entity.TaskRun, len(results)) +// for i, result := range results { +// resp[i] = convertor.TaskRunPO2DO(result) +// } +// return resp +//} +// +//// UpdateTaskRunWithOCC 乐观并发控制更新 +//func (v *TaskRunRepoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { +// // 先执行数据库操作 +// logs.CtxInfo(ctx, "UpdateTaskRunWithOCC", "id", id, "workspaceID", workspaceID, "updateMap", updateMap) +// err := v.TaskRunDao.UpdateTaskRunWithOCC(ctx, id, workspaceID, updateMap) +// if err != nil { +// return err +// } +// +// // 数据库操作成功后,删除缓存(因为无法直接更新部分字段) +// go func() { +// // 删除单个TaskRun缓存,下次查询时会重新加载 +// if err := v.TaskRunRedisDao.DeleteTaskRun(context.Background(), id); err != nil { +// logs.Error("failed to delete taskrun cache after OCC update", "id", id, "err", err) +// } +// +// // 清理相关列表缓存 +// v.clearTaskRunListCaches(context.Background(), workspaceID, 0) +// +// // 清理非最终状态TaskRun缓存(状态可能发生变化) +// if err := v.TaskRunRedisDao.DeleteNonFinalTaskRunList(context.Background()); err != nil { +// logs.Error("failed to delete non final taskrun list cache after OCC update", "err", err) +// } +// }() +// +// return nil +//} +// +//// GetObjListWithTaskRun 获取有TaskRun的对象列表 +//func (v *TaskRunRepoImpl) GetObjListWithTaskRun(ctx context.Context) ([]string, []string) { +// // 先查 Redis 缓存 +// spaceList, botList, err := v.TaskRunRedisDao.GetObjListWithTaskRun(ctx) +// if err != nil { +// logs.CtxWarn(ctx, "failed to get obj list with taskrun from redis cache", "err", err) +// } else if spaceList != nil || botList != nil { +// return spaceList, botList +// } +// +// // 缓存未命中,查询数据库 +// spaceList, botList, err = v.TaskRunDao.GetObjListWithTaskRun(ctx) +// if err != nil { +// logs.CtxWarn(ctx, "failed to get obj list with taskrun from mysql", "err", err) +// return nil, nil +// } +// +// // 异步缓存结果 +// go func() { +// if err := v.TaskRunRedisDao.SetObjListWithTaskRun(context.Background(), spaceList, botList, ObjListWithTaskRunTTL); err != nil { +// logs.Error("failed to set obj list with taskrun cache", "err", err) +// } +// }() +// +// return spaceList, botList +//} +// +//// ListActiveTaskRunsByTask 获取Task的活跃TaskRun列表 +//func (v *TaskRunRepoImpl) ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) { +// // 先查缓存 +// cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) +// if err != nil { +// logs.CtxWarn(ctx, "failed to get taskrun list by task from redis", "taskID", taskID, "err", err) +// } else if cachedTaskRuns != nil { +// // 过滤出活跃状态的TaskRun +// var activeTaskRuns []*entity.TaskRun +// for _, tr := range cachedTaskRuns { +// if isActiveStatus(tr.RunStatus) { +// activeTaskRuns = append(activeTaskRuns, tr) +// } +// } +// return activeTaskRuns, nil +// } +// +// // 缓存未命中,查询数据库 +// results, err := v.TaskRunDao.ListActiveTaskRunsByTask(ctx, taskID) +// if err != nil { +// return nil, err +// } +// +// resp := make([]*entity.TaskRun, len(results)) +// for i, result := range results { +// resp[i] = convertor.TaskRunPO2DO(result) +// } +// +// // 异步缓存 +// go func() { +// if err := v.TaskRunRedisDao.SetTaskRunListByTask(context.Background(), taskID, resp, TaskRunListByTaskTTL); err != nil { +// logs.Error("failed to set taskrun list by task cache", "taskID", taskID, "err", err) +// } +// }() +// +// return resp, nil +//} +// +//// GetLatestTaskRunByTask 获取Task的最新TaskRun +//func (v *TaskRunRepoImpl) GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*entity.TaskRun, error) { +// // 先查缓存 +// cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) +// if err != nil { +// logs.CtxWarn(ctx, "failed to get taskrun list by task from redis", "taskID", taskID, "err", err) +// } else if cachedTaskRuns != nil && len(cachedTaskRuns) > 0 { +// // 缓存中的TaskRun列表应该已经按创建时间排序,返回第一个 +// return cachedTaskRuns[0], nil +// } +// +// // 缓存未命中,查询数据库 +// result, err := v.TaskRunDao.GetLatestTaskRunByTask(ctx, taskID) +// if err != nil { +// return nil, err +// } +// if result == nil { +// return nil, nil +// } +// +// taskRunDO := convertor.TaskRunPO2DO(result) +// return taskRunDO, nil +//} +// +//// ListTaskRunsByStatus 按状态获取TaskRun列表 +//func (v *TaskRunRepoImpl) ListTaskRunsByStatus(ctx context.Context, status string) ([]*entity.TaskRun, error) { +// // 直接查询数据库,不缓存(状态查询通常是临时性的) +// results, err := v.TaskRunDao.ListTaskRunsByStatus(ctx, status) +// if err != nil { +// return nil, err +// } +// +// resp := make([]*entity.TaskRun, len(results)) +// for i, result := range results { +// resp[i] = convertor.TaskRunPO2DO(result) +// } +// +// return resp, nil +//} +// +//// GetTaskRunCount 获取TaskRun计数 +//func (v *TaskRunRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { +// // 先查 Redis 缓存 +// count, err := v.TaskRunRedisDao.GetTaskRunCount(ctx, taskID, taskRunID) +// if err != nil { +// logs.CtxWarn(ctx, "failed to get taskrun count from redis cache", "taskID", taskID, "taskRunID", taskRunID, "err", err) +// } else if count != -1 { +// return count, nil +// } +// +// // 缓存未命中,这里可以根据业务需求实现具体的计数逻辑 +// // 目前返回0,实际使用时需要根据业务需求实现 +// return 0, nil +//} +// +//// clearTaskRunListCaches 清理与指定 workspace 和 task 相关的列表缓存 +//func (v *TaskRunRepoImpl) clearTaskRunListCaches(ctx context.Context, workspaceID, taskID int64) { +// // 清理非终态TaskRun列表缓存 +// if err := v.TaskRunRedisDao.DeleteNonFinalTaskRunList(ctx); err != nil { +// logs.Error("failed to delete non final taskrun list cache", "err", err) +// } +// +// // 清理按Task分组的TaskRun列表缓存 +// if taskID > 0 { +// if err := v.TaskRunRedisDao.DeleteTaskRunListByTask(ctx, taskID); err != nil { +// logs.Error("failed to delete taskrun list by task cache", "taskID", taskID, "err", err) +// } +// } +// +// // 清理对象列表缓存 +// if err := v.TaskRunRedisDao.DeleteObjListWithTaskRun(ctx); err != nil { +// logs.Error("failed to delete obj list with taskrun cache", "err", err) +// } +//} +// +//// isNonFinalStatus 检查是否为非终态状态 +//func isNonFinalStatus(status string) bool { +// nonFinalStatuses := []string{"pending", "running", "paused", "retrying"} +// for _, s := range nonFinalStatuses { +// if status == s { +// return true +// } +// } +// return false +//} +// +//// isActiveStatus 检查是否为活跃状态 +//func isActiveStatus(status string) bool { +// activeStatuses := []string{"running", "retrying"} +// for _, s := range activeStatuses { +// if status == s { +// return true +// } +// } +// return false +//} From 5325ccba019ad0f413904fcc72dcb2d7f9770da4 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 11:33:27 +0800 Subject: [PATCH 384/462] fix --- .../domain/task/service/taskexe/tracehub/backfill.go | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 4ef1d991e..60df88390 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -100,7 +100,6 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity maxFlushInterval: time.Second * 5, taskRepo: h.taskRepo, runType: task.TaskRunTypeBackFill, - taskRunRepo: h.taskRunRepo, } return sub, nil From bc0302673f2e1def8ab0e98655dcf10ef015f54c Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 12:00:22 +0800 Subject: [PATCH 385/462] fix backfill --- .../task/service/taskexe/tracehub/backfill.go | 26 ++++---- .../taskexe/tracehub/scheduled_task.go | 60 ++++++++++++------- 2 files changed, 53 insertions(+), 33 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 60df88390..691e11bd6 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -280,6 +280,19 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * if !result.HasMore { logs.CtxInfo(ctx, "completed listing spans, total_count=%d, task_id=%d", totalCount, sub.t.GetID()) + taskRunConfig, err := h.taskRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) + if err != nil { + logs.CtxWarn(ctx, "GetBackfillTaskRun, task_id=%d, err=%v", sub.taskID, err) + return err + } + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: true, + }); err != nil { + logs.CtxWarn(ctx, "OnFinishTaskChange, task_id=%d, err=%v", sub.taskID, err) + return err + } break } @@ -447,19 +460,6 @@ func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *l return err } } - if sampler.GetIsCycle() { - // 达到单次任务上限 - if taskRunCount+1 > sampler.GetCycleCount() { - if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: sub.t, - TaskRun: taskRunConfig, - IsFinish: false, - }); err != nil { - logs.CtxWarn(ctx, "taskRunCount+1 > sampler.GetCycleCount(), task_id=%d", sub.taskID) - return err - } - } - } logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) if err := h.dispatch(ctx, span, []*spanSubscriber{sub}); err != nil { return err diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 629dbe87d..ec0eb0ff4 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -121,19 +121,13 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(taskPOs)) for _, taskPO := range taskPOs { - var taskRun entity.TaskRun - // 计算 taskRunstat:只有当所有 run 都为 done 状态时才为 true - allRunsDone := true - if len(taskPO.TaskRuns) == 0 { - // 如果没有 TaskRuns,则认为未完成 - allRunsDone = false - } else { - // 检查所有 TaskRuns 是否都为 done 状态 - for _, taskRunPO := range taskPO.TaskRuns { + var taskRun, backfillTaskRun entity.TaskRun + for _, taskRunPO := range taskPO.TaskRuns { + if taskRunPO.TaskType == task.TaskRunTypeBackFill { + backfillTaskRun = *taskRunPO + } else { if taskRunPO.RunStatus != task.RunStatusDone { taskRun = *taskRunPO - allRunsDone = false - break } } } @@ -145,15 +139,41 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // 达到任务时间期限 // 到任务结束时间就结束 logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) - if (time.Now().After(endTime) || taskInfo.GetRule().GetEffectiveTime().GetEndAt() == 0) && allRunsDone { - err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: taskInfo, - TaskRun: &taskRun, - IsFinish: true, - }) - if err != nil { - logs.CtxError(ctx, "OnFinishTaskChange err:%v", err) - continue + if taskInfo.GetRule().GetBackfillEffectiveTime().GetEndAt() != 0 && taskInfo.GetRule().GetEffectiveTime().GetEndAt() != 0 { + if time.Now().After(endTime) && backfillTaskRun.RunStatus == task.RunStatusDone { + err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: taskInfo, + TaskRun: &backfillTaskRun, + IsFinish: true, + }) + if err != nil { + logs.CtxError(ctx, "OnFinishTaskChange err:%v", err) + continue + } + } + } else if taskInfo.GetRule().GetBackfillEffectiveTime().GetEndAt() != 0 { + if backfillTaskRun.RunStatus == task.RunStatusDone { + err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: taskInfo, + TaskRun: &taskRun, + IsFinish: true, + }) + if err != nil { + logs.CtxError(ctx, "OnFinishTaskChange err:%v", err) + continue + } + } + } else if taskInfo.GetRule().GetEffectiveTime().GetEndAt() != 0 { + if time.Now().After(endTime) { + err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: taskInfo, + TaskRun: &taskRun, + IsFinish: true, + }) + if err != nil { + logs.CtxError(ctx, "OnFinishTaskChange err:%v", err) + continue + } } } // 如果任务状态为unstarted,到任务开始时间就开始create From e829112dd0f02e4cd0ca808a0f0ffa5759c86a2a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 14:17:41 +0800 Subject: [PATCH 386/462] fix panic --- .../domain/task/service/taskexe/tracehub/backfill.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 691e11bd6..b436185ab 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -24,7 +24,7 @@ import ( "github.com/coze-dev/coze-loop/backend/pkg/logs" ) -const pageSize = 100 +const pageSize = 500 func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 1. 设置当前任务上下文 @@ -349,7 +349,9 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp } taskRun, err := h.taskRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) taskRunDTO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) - taskRunDTO.BackfillRunDetail.LastSpanPageToken = ptr.Of(fr.pageToken) + taskRunDTO.BackfillRunDetail = &task.BackfillDetail{ + LastSpanPageToken: ptr.Of(fr.pageToken), + } err = h.taskRepo.UpdateTaskRunWithOCC(ctx, taskRunDTO.ID, taskRunDTO.WorkspaceID, map[string]interface{}{ "backfill_detail": taskRunDTO.BackfillRunDetail, }) From 18a8f3dcf17d47a0a98f8f407e472fbc21343d41 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 14:31:14 +0800 Subject: [PATCH 387/462] fix --- .../task/service/taskexe/tracehub/backfill.go | 2 +- .../task/service/taskexe/tracehub/utils.go | 21 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index b436185ab..7b5105263 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -353,7 +353,7 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp LastSpanPageToken: ptr.Of(fr.pageToken), } err = h.taskRepo.UpdateTaskRunWithOCC(ctx, taskRunDTO.ID, taskRunDTO.WorkspaceID, map[string]interface{}{ - "backfill_detail": taskRunDTO.BackfillRunDetail, + "backfill_detail": ToJSONString(ctx, taskRunDTO.BackfillRunDetail), }) if err != nil { logs.CtxError(ctx, "update task run failed, task_id=%d, err=%v", sub.t.GetID(), err) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index ed2928e1d..1885880a0 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -3,10 +3,29 @@ package tracehub -import "time" +import ( + "context" + "time" + + "github.com/bytedance/sonic" + "github.com/coze-dev/coze-loop/backend/pkg/logs" +) // Usec2Msec 微秒转毫秒 func Usec2Msec(usec int64) int64 { d := time.Duration(usec) * time.Microsecond return int64(d / time.Millisecond) } + +func ToJSONString(ctx context.Context, obj interface{}) string { + if obj == nil { + return "" + } + jsonData, err := sonic.Marshal(obj) + if err != nil { + logs.CtxError(ctx, "JSON marshal error: %v", err) + return "" + } + jsonStr := string(jsonData) + return jsonStr +} From 3318b4fc51a0a47ca6bed968b9e5bb7791fe3140 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 15:06:39 +0800 Subject: [PATCH 388/462] add ItemSource --- .../domain/trace/entity/dataset.go | 38 ++++++++++++++++++- .../domain/trace/entity/dataset_test.go | 2 +- .../trace/service/trace_export_service.go | 2 +- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/trace/entity/dataset.go b/backend/modules/observability/domain/trace/entity/dataset.go index 2e81acbcf..1e0761ac5 100644 --- a/backend/modules/observability/domain/trace/entity/dataset.go +++ b/backend/modules/observability/domain/trace/entity/dataset.go @@ -138,6 +138,7 @@ type DatasetItem struct { Error []*ItemError SpanType string SpanName string + Source *ItemSource } type ItemError struct { @@ -152,6 +153,40 @@ type FieldData struct { Content *Content } +type ItemSource struct { + Type LineageSourceType + // 任务类型,根据该字段区分数据导入任务/数据回流任务/... + JobType *TrackedJobType + // item 关联的任务 id,为 0 表示无相应任务(例如数据是通过克隆另一数据行产生的) + JobID *int64 + // type = DataReflow 时,从该字段获取 span 信息 + Span *TrackedTraceSpan +} +type LineageSourceType int64 + +const ( + // 数据回流,需要根据 ItemSource.span.isManual 是否是手动回流。如果是自动回流,则 ItemSource.jobID 中会包含对应的任务 ID + LineageSourceType_DataReflow LineageSourceType = 4 +) + +type TrackedJobType int64 + +const ( + // 数据导入任务 + TrackedJobType_DatasetIOJob TrackedJobType = 1 + // 数据回流任务 + TrackedJobType_DataReflow TrackedJobType = 2 +) + +type TrackedTraceSpan struct { + TraceID *string + SpanID *string + SpanName *string + SpanType *string + // 是否手工回流 + IsManual *bool +} + type Content struct { ContentType ContentType Text string @@ -211,7 +246,7 @@ func (c *Content) GetMultiPart() []*Content { return c.MultiPart } -func NewDatasetItem(workspaceID int64, datasetID int64, span *loop_span.Span) *DatasetItem { +func NewDatasetItem(workspaceID int64, datasetID int64, span *loop_span.Span, source *ItemSource) *DatasetItem { if span == nil { return nil } @@ -223,6 +258,7 @@ func NewDatasetItem(workspaceID int64, datasetID int64, span *loop_span.Span) *D FieldData: make([]*FieldData, 0), SpanType: span.SpanType, SpanName: span.SpanName, + Source: source, } } diff --git a/backend/modules/observability/domain/trace/entity/dataset_test.go b/backend/modules/observability/domain/trace/entity/dataset_test.go index ea8efd40c..5b9f2a957 100755 --- a/backend/modules/observability/domain/trace/entity/dataset_test.go +++ b/backend/modules/observability/domain/trace/entity/dataset_test.go @@ -224,7 +224,7 @@ func TestNewDatasetItem(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got := NewDatasetItem(tt.args.workspaceID, tt.args.datasetID, tt.args.span) + got := NewDatasetItem(tt.args.workspaceID, tt.args.datasetID, tt.args.span, nil) assert.Equal(t, tt.want, got) }) } diff --git a/backend/modules/observability/domain/trace/service/trace_export_service.go b/backend/modules/observability/domain/trace/service/trace_export_service.go index 2774ebde3..2ad5b0a2d 100644 --- a/backend/modules/observability/domain/trace/service/trace_export_service.go +++ b/backend/modules/observability/domain/trace/service/trace_export_service.go @@ -437,7 +437,7 @@ func (r *TraceExportServiceImpl) buildDatasetItems(ctx context.Context, spans [] func (r *TraceExportServiceImpl) buildItem(ctx context.Context, span *loop_span.Span, i int, fieldMappings []entity.FieldMapping, workspaceID int64, dataset *entity.Dataset, ) *entity.DatasetItem { - item := entity.NewDatasetItem(workspaceID, dataset.ID, span) + item := entity.NewDatasetItem(workspaceID, dataset.ID, span, nil) for _, mapping := range fieldMappings { value, err := span.ExtractByJsonpath(ctx, mapping.TraceFieldKey, mapping.TraceFieldJsonpath) if err != nil { From 4e4ebd5f9ea37601a31f9689f401cdcd22778eb8 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 15:36:21 +0800 Subject: [PATCH 389/462] fix backfill --- .../task/service/taskexe/tracehub/backfill.go | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 7b5105263..18cbd7916 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -280,19 +280,6 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * if !result.HasMore { logs.CtxInfo(ctx, "completed listing spans, total_count=%d, task_id=%d", totalCount, sub.t.GetID()) - taskRunConfig, err := h.taskRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) - if err != nil { - logs.CtxWarn(ctx, "GetBackfillTaskRun, task_id=%d, err=%v", sub.taskID, err) - return err - } - if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: sub.t, - TaskRun: taskRunConfig, - IsFinish: true, - }); err != nil { - logs.CtxWarn(ctx, "OnFinishTaskChange, task_id=%d, err=%v", sub.taskID, err) - return err - } break } @@ -362,7 +349,16 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", len(sampledSpans), len(fr.spans), sub.t.GetID()) - + if fr.noMore { + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRun, + IsFinish: true, + }); err != nil { + logs.CtxWarn(ctx, "OnFinishTaskChange, task_id=%d, err=%v", sub.taskID, err) + return len(fr.spans), len(sampledSpans), err + } + } return len(fr.spans), len(sampledSpans), nil } From 43ad489b2eddc792c1dd641f7542a763c6f92d44 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 16:02:46 +0800 Subject: [PATCH 390/462] add debug log --- .../domain/task/service/taskexe/tracehub/backfill.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 18cbd7916..16ec43eae 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -350,6 +350,7 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", len(sampledSpans), len(fr.spans), sub.t.GetID()) if fr.noMore { + logs.CtxInfo(ctx, "completed listing spans, task_id=%d", sub.t.GetID()) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: taskRun, From 4914ad9640392c38e8b9bcceb72c1e27e30dfc99 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 16:03:15 +0800 Subject: [PATCH 391/462] fix --- .../task/service/taskexe/tracehub/backfill.go | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 16ec43eae..c80caf8ed 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -349,17 +349,17 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", len(sampledSpans), len(fr.spans), sub.t.GetID()) - if fr.noMore { - logs.CtxInfo(ctx, "completed listing spans, task_id=%d", sub.t.GetID()) - if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: sub.t, - TaskRun: taskRun, - IsFinish: true, - }); err != nil { - logs.CtxWarn(ctx, "OnFinishTaskChange, task_id=%d, err=%v", sub.taskID, err) - return len(fr.spans), len(sampledSpans), err - } - } + //if fr.noMore { + // logs.CtxInfo(ctx, "completed listing spans, task_id=%d", sub.t.GetID()) + // if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + // Task: sub.t, + // TaskRun: taskRun, + // IsFinish: true, + // }); err != nil { + // logs.CtxWarn(ctx, "OnFinishTaskChange, task_id=%d, err=%v", sub.taskID, err) + // return len(fr.spans), len(sampledSpans), err + // } + //} return len(fr.spans), len(sampledSpans), nil } From 1573e02e7fdb26af99b067965160c3fbb5b54653 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 17:13:42 +0800 Subject: [PATCH 392/462] add appid --- .../domain/task/service/taskexe/processor/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go index 4196c0f78..1a7a156ac 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go @@ -34,7 +34,7 @@ func getSession(ctx context.Context, task *task.Task) *common.Session { } return &common.Session{ UserID: gptr.Of(userID), - //AppID: gptr.Of(int32(717152)), + AppID: gptr.Of(session.AppIDInCtxOrEmpty(ctx)), } } From f20ca1205da676c85c7d951d55d50c7e43d65af2 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 17:40:56 +0800 Subject: [PATCH 393/462] fix --- .../observability/domain/task/service/task_service.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 64492d33d..0de43f8ee 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -318,11 +318,7 @@ func (t *TaskServiceImpl) ListTasks(ctx context.Context, req *ListTasksReq) (res }, nil } func (t *TaskServiceImpl) GetTask(ctx context.Context, req *GetTaskReq) (resp *GetTaskResp, err error) { - userID := session.UserIDInCtxOrEmpty(ctx) - if userID == "" { - return resp, errorx.NewByCode(obErrorx.UserParseFailedCode) - } - taskPO, err := t.TaskRepo.GetTask(ctx, req.TaskID, &req.WorkspaceID, &userID) + taskPO, err := t.TaskRepo.GetTask(ctx, req.TaskID, &req.WorkspaceID, nil) if err != nil { logs.CtxError(ctx, "GetTasks err:%v", err) return resp, err From bb37d7ba7fd251954f48388ad5c58f144b6326c0 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Mon, 29 Sep 2025 17:58:26 +0800 Subject: [PATCH 394/462] fix appid --- .../modules/observability/application/wire.go | 2 +- .../observability/application/wire_gen.go | 2 +- .../taskexe/processor/auto_evaluate.go | 25 ++++++++++++++++--- .../task/service/taskexe/processor/utils.go | 17 ------------- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 2d4097fd5..34507a08a 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -200,7 +200,7 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, taskRepo trepo.ITaskRepo) *task_processor.TaskProcessor { taskProcessor := task_processor.NewTaskProcessor() - taskProcessor.Register(task.TaskTypeAutoEval, task_processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo)) + taskProcessor.Register(task.TaskTypeAutoEval, task_processor.NewAutoEvaluteProcessor(0, datasetServiceProvider, evalService, evaluationService, taskRepo)) return taskProcessor } diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index da4d2f9d0..eaed461f0 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -312,6 +312,6 @@ func NewDatasetServiceAdapter(evalSetService evaluationsetservice.Client, datase func NewInitTaskProcessor(datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, taskRepo repo3.ITaskRepo) *processor.TaskProcessor { taskProcessor := processor.NewTaskProcessor() - taskProcessor.Register(task.TaskTypeAutoEval, processor.NewAutoEvaluteProcessor(datasetServiceProvider, evalService, evaluationService, taskRepo)) + taskProcessor.Register(task.TaskTypeAutoEval, processor.NewAutoEvaluteProcessor(0, datasetServiceProvider, evalService, evaluationService, taskRepo)) return taskProcessor } diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 8a7c33a73..f99ee69c5 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -12,6 +12,7 @@ import ( "github.com/apaxa-go/helper/strconvh" "github.com/bytedance/gg/gptr" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" eval_target_d "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_target" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" @@ -40,9 +41,11 @@ type AutoEvaluteProcessor struct { evaluationSvc rpc.IEvaluationRPCAdapter datasetServiceAdaptor *service.DatasetServiceAdaptor taskRepo repo.ITaskRepo + aid int32 } func NewAutoEvaluteProcessor( + aid int32, datasetServiceProvider *service.DatasetServiceAdaptor, evalService rpc.IEvaluatorRPCAdapter, evaluationService rpc.IEvaluationRPCAdapter, @@ -52,6 +55,7 @@ func NewAutoEvaluteProcessor( evalSvc: evalService, evaluationSvc: evaluationService, taskRepo: taskRepo, + aid: aid, } } @@ -98,7 +102,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * } taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) workspaceID := trigger.Task.GetWorkspaceID() - session := getSession(ctx, trigger.Task) + session := p.getSession(ctx, trigger.Task) var mapping []*task.EvaluateFieldMapping for _, autoEvaluateConfig := range trigger.Task.TaskConfig.AutoEvaluateConfigs { mapping = append(mapping, autoEvaluateConfig.FieldMappings...) @@ -258,7 +262,7 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param //todo:[xun]加锁 currentTask := param.CurrentTask ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) - sessionInfo := getSession(ctx, currentTask) + sessionInfo := p.getSession(ctx, currentTask) var evaluationSetColumns []string var evaluatorVersionIds []int64 var evaluatorFieldMappings []*expt.EvaluatorFieldMapping @@ -403,7 +407,7 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param } func (p *AutoEvaluteProcessor) OnFinishTaskRunChange(ctx context.Context, param taskexe.OnFinishTaskRunChangeReq) error { - session := getSession(ctx, param.Task) + session := p.getSession(ctx, param.Task) taskRun := param.TaskRun taskRunPO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) if err := p.evaluationSvc.FinishExperiment(ctx, &rpc.FinishExperimentReq{ @@ -424,3 +428,18 @@ func (p *AutoEvaluteProcessor) OnFinishTaskRunChange(ctx context.Context, param } return nil } + +func (p *AutoEvaluteProcessor) getSession(ctx context.Context, task *task.Task) *common.Session { + userIDStr := session.UserIDInCtxOrEmpty(ctx) + if userIDStr == "" { + userIDStr = task.GetBaseInfo().GetCreatedBy().GetUserID() + } + userID, err := strconv.ParseInt(userIDStr, 10, 64) + if err != nil { + logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor OnChangeProcessor, ParseInt err:%v", err) + } + return &common.Session{ + UserID: gptr.Of(userID), + AppID: gptr.Of(p.aid), + } +} diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go index 1a7a156ac..8bb30e052 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/utils.go @@ -5,12 +5,10 @@ package processor import ( "context" - "strconv" "time" "github.com/bytedance/gg/gptr" "github.com/bytedance/sonic" - "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/eval_set" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" @@ -23,21 +21,6 @@ import ( "github.com/coze-dev/cozeloop-go/spec/tracespec" ) -func getSession(ctx context.Context, task *task.Task) *common.Session { - userIDStr := session.UserIDInCtxOrEmpty(ctx) - if userIDStr == "" { - userIDStr = task.GetBaseInfo().GetCreatedBy().GetUserID() - } - userID, err := strconv.ParseInt(userIDStr, 10, 64) - if err != nil { - logs.CtxError(ctx, "[task-debug] AutoEvaluteProcessor OnChangeProcessor, ParseInt err:%v", err) - } - return &common.Session{ - UserID: gptr.Of(userID), - AppID: gptr.Of(session.AppIDInCtxOrEmpty(ctx)), - } -} - func getCategory(taskType task.TaskType) entity.DatasetCategory { switch taskType { case task.TaskTypeAutoEval: From b1f733ebcf2b12ed75ccb3892ffdcc009849578a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Tue, 30 Sep 2025 09:03:10 +0800 Subject: [PATCH 395/462] add aid --- backend/modules/observability/application/wire.go | 3 ++- backend/modules/observability/application/wire_gen.go | 4 ++-- .../domain/task/service/taskexe/tracehub/trace_hub.go | 7 +++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index 34507a08a..cf8ee470f 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -266,7 +266,8 @@ func InitTaskApplication( exptService experimentservice.Client, datasetService datasetservice.Client, fileClient fileservice.Client, - taskProcessor task_processor.TaskProcessor) (ITaskApplication, error) { + taskProcessor task_processor.TaskProcessor, + aid int32) (ITaskApplication, error) { wire.Build(taskSet) return nil, nil } diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index eaed461f0..44e743a14 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -197,7 +197,7 @@ func InitTraceIngestionApplication(configFactory conf.IConfigLoaderFactory, ckDb return iTraceIngestionApplication, nil } -func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, benefit2 benefit.IBenefitService, ckDb ck.Provider, redis2 redis.Cmdable, mqFactory mq.IFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client, fileClient fileservice.Client, taskProcessor processor.TaskProcessor) (ITaskApplication, error) { +func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFactory conf.IConfigLoaderFactory, benefit2 benefit.IBenefitService, ckDb ck.Provider, redis2 redis.Cmdable, mqFactory mq.IFactory, userClient userservice.Client, authClient authservice.Client, evalService evaluatorservice.Client, evalSetService evaluationsetservice.Client, exptService experimentservice.Client, datasetService datasetservice.Client, fileClient fileservice.Client, taskProcessor processor.TaskProcessor, aid int32) (ITaskApplication, error) { iTaskDao := mysql.NewTaskDaoImpl(db2) iTaskDAO := dao.NewTaskDAO(redis2) iTaskRunDao := mysql.NewTaskRunDaoImpl(db2) @@ -237,7 +237,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto return nil, err } iTenantProvider := tenant.NewTenantProvider(iTraceConfig) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor, benefit2) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor, benefit2, aid) if err != nil { return nil, err } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 77b037ce1..f03837efb 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -7,10 +7,12 @@ import ( "context" "fmt" "slices" + "strconv" "sync" "time" "github.com/bytedance/gg/gslice" + "github.com/bytedance/gopkg/cloud/metainfo" "github.com/coze-dev/coze-loop/backend/infra/external/benefit" "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" @@ -42,6 +44,7 @@ func NewTraceHubImpl( buildHelper service.TraceFilterProcessorBuilder, taskProcessor *processor.TaskProcessor, benefitSvc benefit.IBenefitService, + aid int32, ) (ITraceHubService, error) { // 创建两个不同间隔的独立定时器 scheduledTaskTicker := time.NewTicker(5 * time.Minute) // 任务状态生命周期管理 - 5分钟间隔 @@ -56,6 +59,7 @@ func NewTraceHubImpl( buildHelper: buildHelper, taskProcessor: taskProcessor, benefitSvc: benefitSvc, + aid: aid, } // 立即启动定时任务 @@ -79,6 +83,8 @@ type TraceHubServiceImpl struct { flushCh chan *flushReq flushErrLock sync.Mutex flushErr []error + + aid int32 } type flushReq struct { @@ -92,6 +98,7 @@ const TagKeyResult = "tag_key" func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawSpan) error { ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + ctx = metainfo.WithPersistentValue(ctx, "LANE_C_FORNAX_APPID", strconv.FormatInt(int64(h.aid), 10)) logs.CtxInfo(ctx, "TraceHub start") var tags []metrics.T // 1、转换成标准span,并根据space_id初步过滤 From 63e439515398de40063334f4fbe66236c197ccb9 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 9 Oct 2025 14:53:19 +0800 Subject: [PATCH 396/462] add comment --- .../observability/domain/task/repo/task.go | 8 ++++---- .../service/taskexe/processor/auto_evaluate.go | 13 +++++++------ .../task/service/taskexe/tracehub/trace_hub.go | 16 ++++++++-------- .../infra/mq/consumer/task_consumer.go | 2 +- backend/modules/observability/infra/repo/task.go | 16 ++++++++-------- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index 24541d3de..329ca37f6 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -31,13 +31,13 @@ type ITaskRepo interface { // task count GetTaskCount(ctx context.Context, taskID int64) (int64, error) - IncrTaskCount(ctx context.Context, taskID int64) error - DecrTaskCount(ctx context.Context, taskID int64) error + IncrTaskCount(ctx context.Context, taskID, ttl int64) error + DecrTaskCount(ctx context.Context, taskID, ttl int64) error // task run count GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) - IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error - DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error + IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl int64) error + DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl int64) error // task run success/fail count GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index f99ee69c5..ee4bb1952 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -112,15 +112,16 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, turns is empty") return nil } + taskTTL := trigger.Task.GetRule().GetEffectiveTime().GetEndAt() - trigger.Task.GetRule().GetEffectiveTime().GetStartAt() taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID) - p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID, taskTTL) + p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID, taskTTL) if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) - p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) - p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID, taskTTL) + p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID, taskTTL) return nil } _, err := p.evaluationSvc.InvokeExperiment(ctx, &rpc.InvokeExperimentReq{ @@ -148,8 +149,8 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger * Session: session, }) if err != nil { - p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID) - p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) + p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID, taskTTL) + p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID, taskTTL) return err } return nil diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index f03837efb..735f5b0f0 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -101,24 +101,24 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS ctx = metainfo.WithPersistentValue(ctx, "LANE_C_FORNAX_APPID", strconv.FormatInt(int64(h.aid), 10)) logs.CtxInfo(ctx, "TraceHub start") var tags []metrics.T - // 1、转换成标准span,并根据space_id初步过滤 + // 1、Convert to standard span and perform initial filtering based on space_id span := rawSpan.RawSpanConvertToLoopSpan() - // 1.1 过滤掉 Evaluator 类型的 span + // 1.1 Filter out spans of type Evaluator if slices.Contains([]string{"Evaluator"}, span.CallType) { return nil } logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) spaceList, botList, tasks := h.taskRepo.GetObjListWithTask(ctx) logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", spaceList, botList, tasks) - // 1.2 过滤掉不在 spaceList 中的 span + // 1.2 Filter out spans that do not belong to any space or bot if !gslice.Contains(spaceList, span.WorkspaceID) && !gslice.Contains(botList, span.TagsString["bot_id"]) { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) logs.CtxInfo(ctx, "no space found for span, %s", logSuffix) return nil } - // 2、读redis,获取rule信息,进行匹配,查询订阅者 + // 2、Match spans against task rules subs, err := h.getSubscriberOfSpan(ctx, span, tasks) - if err != nil { // 继续执行,不阻塞。 + if err != nil { logs.CtxWarn(ctx, "get subscriber of flow span failed, %s, err: %v", logSuffix, err) } @@ -127,14 +127,14 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_subscriber"}) return nil } - // 3、采样 + // 3、Sample subs = gslice.Filter(subs, func(sub *spanSubscriber) bool { return sub.Sampled() }) logs.CtxInfo(ctx, "%d subscriber of flow span sampled, %s", len(subs), logSuffix) if len(subs) == 0 { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "sampler_not_hit"}) return nil } - // 3. 分发预处理 + // 3. PreDispatch err = h.preDispatch(ctx, span, subs) if err != nil { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "preDispatch_failed"}) @@ -142,7 +142,7 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS //return err } logs.CtxInfo(ctx, "%d preDispatch success, %v", len(subs), subs) - // 4、按条件分发 + // 4、Dispatch if err = h.dispatch(ctx, span, subs); err != nil { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "dispatch_failed"}) logs.CtxWarn(ctx, "dispatch flow span failed, %s, err: %v", logSuffix, err) diff --git a/backend/modules/observability/infra/mq/consumer/task_consumer.go b/backend/modules/observability/infra/mq/consumer/task_consumer.go index f59c62033..10c95e8d4 100644 --- a/backend/modules/observability/infra/mq/consumer/task_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/task_consumer.go @@ -54,6 +54,6 @@ func (e *TaskConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) er logs.CtxError(ctx, "Task msg json unmarshal fail, raw: %v, err: %s", conv.UnsafeBytesToString(ext.Body), err) return nil } - logs.CtxInfo(ctx, "Handle Task message %+v,log_id=%s, trace_id=%s, span_id=%s,msgID=%s", event, event.LogID, event.TraceID, event.SpanID, ext.MsgID) + logs.CtxInfo(ctx, "Handle Task message,log_id=%s, trace_id=%s, span_id=%s,msgID=%s", event.LogID, event.TraceID, event.SpanID, ext.MsgID) return e.handler.TraceHub(ctx, event) } diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index a76f9aa2f..c15b61f74 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -457,16 +457,16 @@ func (v *TaskRepoImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, e } return count, nil } -func (v *TaskRepoImpl) IncrTaskCount(ctx context.Context, taskID int64) error { - _, err := v.TaskRedisDao.IncrTaskCount(ctx, taskID, TaskCountTTL) +func (v *TaskRepoImpl) IncrTaskCount(ctx context.Context, taskID, ttl int64) error { + _, err := v.TaskRedisDao.IncrTaskCount(ctx, taskID, time.Duration(ttl)*time.Second) if err != nil { logs.CtxError(ctx, "failed to increment task count", "taskID", taskID, "err", err) return err } return nil } -func (v *TaskRepoImpl) DecrTaskCount(ctx context.Context, taskID int64) error { - _, err := v.TaskRedisDao.DecrTaskCount(ctx, taskID, TaskCountTTL) +func (v *TaskRepoImpl) DecrTaskCount(ctx context.Context, taskID, ttl int64) error { + _, err := v.TaskRedisDao.DecrTaskCount(ctx, taskID, time.Duration(ttl)*time.Second) if err != nil { logs.CtxError(ctx, "failed to decrement task count", "taskID", taskID, "err", err) return err @@ -483,16 +483,16 @@ func (v *TaskRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID in } return count, nil } -func (v *TaskRepoImpl) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { - _, err := v.TaskRedisDao.IncrTaskRunCount(ctx, taskID, taskRunID, TaskRunCountTTL) +func (v *TaskRepoImpl) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl int64) error { + _, err := v.TaskRedisDao.IncrTaskRunCount(ctx, taskID, taskRunID, time.Duration(ttl)*time.Second) if err != nil { logs.CtxError(ctx, "failed to increment task run count", "taskID", taskID, "taskRunID", taskRunID, "err", err) return err } return nil } -func (v *TaskRepoImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { - _, err := v.TaskRedisDao.DecrTaskRunCount(ctx, taskID, taskRunID, TaskRunCountTTL) +func (v *TaskRepoImpl) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl int64) error { + _, err := v.TaskRedisDao.DecrTaskRunCount(ctx, taskID, taskRunID, time.Duration(ttl)*time.Second) if err != nil { logs.CtxError(ctx, "failed to decrement task run count", "taskID", taskID, "taskRunID", taskRunID, "err", err) return err From 437f7d32db1b715044776cbd7c3e7bf3fabab70b Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 9 Oct 2025 15:08:45 +0800 Subject: [PATCH 397/462] fix task_detail --- .../observability/domain/task/service/task_service.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 0de43f8ee..fdaf27429 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -327,13 +327,6 @@ func (t *TaskServiceImpl) GetTask(ctx context.Context, req *GetTaskReq) (resp *G logs.CtxError(ctx, "GetTasks tasks is nil") return resp, nil } - taskRunPOs, _, err := t.TaskRepo.ListTaskRuns(ctx, mysql.ListTaskRunParam{ - WorkspaceID: ptr.Of(req.WorkspaceID), - TaskID: ptr.Of(req.TaskID), - }) - for _, tr := range taskRunPOs { - taskPO.TaskRuns = append(taskPO.TaskRuns, tr) - } _, userInfoMap, err := t.userProvider.GetUserInfo(ctx, []string{taskPO.CreatedBy, taskPO.UpdatedBy}) if err != nil { logs.CtxError(ctx, "MGetUserInfo err:%v", err) From 9a05e9bff03928e4615e823e8336ebe3abc678ea Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 9 Oct 2025 15:50:45 +0800 Subject: [PATCH 398/462] fix comment --- .../observability/domain/task/entity/event.go | 94 ++++++++ .../domain/task/service/task_service.go | 21 +- .../task/service/taskexe/tracehub/backfill.go | 71 +++---- .../task/service/taskexe/tracehub/callback.go | 200 +++++++----------- .../task/service/taskexe/tracehub/common.go | 4 - .../service/taskexe/tracehub/subscriber.go | 1 + .../task/service/taskexe/tracehub/utils.go | 7 - 7 files changed, 203 insertions(+), 195 deletions(-) delete mode 100644 backend/modules/observability/domain/task/service/taskexe/tracehub/common.go diff --git a/backend/modules/observability/domain/task/entity/event.go b/backend/modules/observability/domain/task/entity/event.go index ddc280613..8b28bf898 100644 --- a/backend/modules/observability/domain/task/entity/event.go +++ b/backend/modules/observability/domain/task/entity/event.go @@ -4,6 +4,8 @@ package entity import ( + "strconv" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" ) @@ -192,6 +194,52 @@ const ( EvaluatorRunStatus_Fail = 2 ) +func (s *OnlineExptTurnEvalResult) GetSpanIDFromExt() string { + if s == nil { + return "" + } + return s.Ext["span_id"] +} +func (s *OnlineExptTurnEvalResult) GetTraceIDFromExt() string { + if s == nil { + return "" + } + return s.Ext["trace_id"] +} +func (s *OnlineExptTurnEvalResult) GetStartTimeFromExt() int64 { + if s == nil { + return 0 + } + startTimeStr := s.Ext["start_time"] + startTime, err := strconv.ParseInt(startTimeStr, 10, 64) + if err != nil { + return 0 + } + return startTime +} +func (s *OnlineExptTurnEvalResult) GetTaskIDFromExt() int64 { + if s == nil { + return 0 + } + taskIDStr := s.Ext["task_id"] + taskID, err := strconv.ParseInt(taskIDStr, 10, 64) + if err != nil { + return 0 + } + return taskID +} +func (s *OnlineExptTurnEvalResult) GetWorkspaceIDFromExt() (string, int64) { + if s == nil { + return "", 0 + } + workspaceIDStr := s.Ext["workspace_id"] + workspaceID, err := strconv.ParseInt(workspaceIDStr, 10, 64) + if err != nil { + return "", 0 + } + return workspaceIDStr, workspaceID +} + type EvaluatorRunError struct { Code int32 `json:"code"` Message string `json:"message"` @@ -222,3 +270,49 @@ type BackFillEvent struct { SpaceID int64 `json:"space_id"` TaskID int64 `json:"task_id"` } + +func (c *CorrectionEvent) GetSpanIDFromExt() string { + if c == nil { + return "" + } + return c.Ext["span_id"] +} +func (c *CorrectionEvent) GetTraceIDFromExt() string { + if c == nil { + return "" + } + return c.Ext["trace_id"] +} +func (c *CorrectionEvent) GetStartTimeFromExt() int64 { + if c == nil { + return 0 + } + startTimeStr := c.Ext["start_time"] + startTime, err := strconv.ParseInt(startTimeStr, 10, 64) + if err != nil { + return 0 + } + return startTime +} +func (c *CorrectionEvent) GetTaskIDFromExt() int64 { + if c == nil { + return 0 + } + taskIDStr := c.Ext["task_id"] + taskID, err := strconv.ParseInt(taskIDStr, 10, 64) + if err != nil { + return 0 + } + return taskID +} +func (c *CorrectionEvent) GetWorkspaceIDFromExt() (string, int64) { + if c == nil { + return "", 0 + } + workspaceIDStr := c.Ext["workspace_id"] + workspaceID, err := strconv.ParseInt(workspaceIDStr, 10, 64) + if err != nil { + return "", 0 + } + return workspaceIDStr, workspaceID +} diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index fdaf27429..7c3caf2c3 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -5,7 +5,6 @@ package service import ( "context" - "encoding/json" "time" "github.com/bytedance/gg/gptr" @@ -143,6 +142,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if err != nil { return nil, err } + // 创建任务的数据准备 // 数据回流任务——创建/更新输出数据集 // 自动评测历史回溯——创建空壳子 taskPO.ID = id @@ -386,12 +386,6 @@ func (t *TaskServiceImpl) shouldTriggerBackfill(taskDO *task.Task) bool { backfillTime.GetStartAt() < backfillTime.GetEndAt() } -// shouldCreateTaskRun 判断是否需要创建TaskRun -func (t *TaskServiceImpl) shouldCreateTaskRun(taskDO *task.Task) bool { - // 只有数据回流任务需要立即创建TaskRun - return taskDO.GetTaskType() == task.TaskTypeAutoDataReflow || t.shouldTriggerBackfill(taskDO) -} - // sendBackfillMessage 发送MQ消息 func (t *TaskServiceImpl) sendBackfillMessage(ctx context.Context, event *entity.BackFillEvent) error { if t.backfillProducer == nil { @@ -400,16 +394,3 @@ func (t *TaskServiceImpl) sendBackfillMessage(ctx context.Context, event *entity return t.backfillProducer.SendBackfill(ctx, event) } - -// toJSONString 将对象转换为JSON字符串 -func (t *TaskServiceImpl) toJSONString(ctx context.Context, obj interface{}) string { - if obj == nil { - return "" - } - jsonData, err := json.Marshal(obj) - if err != nil { - logs.CtxError(ctx, "JSON marshal error: %v", err) - return "" - } - return string(jsonData) -} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index c80caf8ed..1d196d571 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -89,11 +89,18 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity return nil, errors.New("task config not found") } taskConfigDO := tconv.TaskPO2DTO(ctx, taskConfig, nil) + taskRun, err := h.taskRepo.GetBackfillTaskRun(ctx, ptr.Of(taskConfigDO.GetWorkspaceID()), taskConfigDO.GetID()) + if err != nil { + logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", taskConfigDO.GetID(), err) + return nil, err + } + taskRunDO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) proc := h.taskProcessor.GetTaskProcessor(taskConfig.TaskType) sub := &spanSubscriber{ taskID: taskConfigDO.GetID(), RWMutex: sync.RWMutex{}, t: taskConfigDO, + tr: taskRunDO, processor: proc, bufCap: 0, flushWait: sync.WaitGroup{}, @@ -107,17 +114,12 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity // isBackfillDone 检查回填任务是否已完成 func (h *TraceHubServiceImpl) isBackfillDone(ctx context.Context, sub *spanSubscriber) (bool, error) { - taskRun, err := h.taskRepo.GetBackfillTaskRun(ctx, ptr.Of(sub.t.GetWorkspaceID()), sub.t.GetID()) - if err != nil { - logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), err) - return true, err - } - if taskRun == nil { - logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), err) - return true, err + if sub.tr == nil { + logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), nil) + return true, nil } - return taskRun.RunStatus == task.RunStatusDone, nil + return sub.tr.RunStatus == task.RunStatusDone, nil } func (h *TraceHubServiceImpl) listSpans(ctx context.Context, sub *spanSubscriber) error { @@ -128,7 +130,7 @@ func (h *TraceHubServiceImpl) listSpans(ctx context.Context, sub *spanSubscriber return err } - // todo: 从配置中获取分页大小 + // todo: 从tcc配置中获取分页大小 //batchSize := c.tccCfg.BackfillProcessConfig().ListPageSize //if batchSize == 0 { // batchSize = pageSize @@ -143,14 +145,9 @@ func (h *TraceHubServiceImpl) listSpans(ctx context.Context, sub *spanSubscriber DescByStartTime: true, NotQueryAnnotation: true, // 回填时不需要查询注解 } - taskRun, err := h.taskRepo.GetBackfillTaskRun(ctx, ptr.Of(sub.t.GetWorkspaceID()), sub.t.GetID()) - if err != nil { - logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), err) - return err - } - taskRunDTO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) - if taskRunDTO.BackfillRunDetail != nil && taskRunDTO.BackfillRunDetail.LastSpanPageToken != nil { - listParam.PageToken = *taskRunDTO.BackfillRunDetail.LastSpanPageToken + + if sub.tr.BackfillRunDetail != nil && sub.tr.BackfillRunDetail.LastSpanPageToken != nil { + listParam.PageToken = *sub.tr.BackfillRunDetail.LastSpanPageToken } // 分页查询并发送数据 return h.fetchAndSendSpans(ctx, listParam, sub) @@ -334,13 +331,12 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp logs.CtxError(ctx, "process spans failed, task_id=%d, err=%v", sub.t.GetID(), err) return len(fr.spans), len(sampledSpans), err } - taskRun, err := h.taskRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) - taskRunDTO := tconv.TaskRunPO2DTO(ctx, taskRun, nil) - taskRunDTO.BackfillRunDetail = &task.BackfillDetail{ + + sub.tr.BackfillRunDetail = &task.BackfillDetail{ LastSpanPageToken: ptr.Of(fr.pageToken), } - err = h.taskRepo.UpdateTaskRunWithOCC(ctx, taskRunDTO.ID, taskRunDTO.WorkspaceID, map[string]interface{}{ - "backfill_detail": ToJSONString(ctx, taskRunDTO.BackfillRunDetail), + err = h.taskRepo.UpdateTaskRunWithOCC(ctx, sub.tr.ID, sub.tr.WorkspaceID, map[string]interface{}{ + "backfill_detail": ToJSONString(ctx, sub.tr.BackfillRunDetail), }) if err != nil { logs.CtxError(ctx, "update task run failed, task_id=%d, err=%v", sub.t.GetID(), err) @@ -349,17 +345,6 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", len(sampledSpans), len(fr.spans), sub.t.GetID()) - //if fr.noMore { - // logs.CtxInfo(ctx, "completed listing spans, task_id=%d", sub.t.GetID()) - // if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - // Task: sub.t, - // TaskRun: taskRun, - // IsFinish: true, - // }); err != nil { - // logs.CtxWarn(ctx, "OnFinishTaskChange, task_id=%d, err=%v", sub.taskID, err) - // return len(fr.spans), len(sampledSpans), err - // } - //} return len(fr.spans), len(sampledSpans), nil } @@ -421,12 +406,9 @@ func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans // processBatchSpans 批量处理 span 数据 func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*loop_span.Span, sub *spanSubscriber) error { - // 这里实现具体的批量处理逻辑 - // 例如:数据转换、存储、触发下游处理等 - for _, span := range spans { // 执行单个 span 的处理逻辑 - if err := h.processIndividualSpan(ctx, span, sub); err != nil { + if err := h.processSpan(ctx, span, sub); err != nil { logs.CtxWarn(ctx, "process individual span failed, span_id=%s, trace_id=%s, err=%v", span.SpanID, span.TraceID, err) // 继续处理其他span,不因单个失败而中断批处理 @@ -437,22 +419,19 @@ func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*lo } // processIndividualSpan 处理单个 span -func (h *TraceHubServiceImpl) processIndividualSpan(ctx context.Context, span *loop_span.Span, sub *spanSubscriber) error { +func (h *TraceHubServiceImpl) processSpan(ctx context.Context, span *loop_span.Span, sub *spanSubscriber) error { // 根据任务类型执行相应的处理逻辑 logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", span.SpanID, span.TraceID, sub.t.GetID()) - taskRunConfig, err := h.taskRepo.GetBackfillTaskRun(ctx, sub.t.WorkspaceID, sub.t.GetID()) - if err != nil { - logs.CtxWarn(ctx, "GetLatestNewDataTaskRun, task_id=%d, err=%v", sub.taskID, err) - return err - } + + taskRunConfigDTO := tconv.TaskRunDO2PO(ctx, sub.tr, nil) taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) - taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, taskRunConfig.ID) + taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, sub.tr.GetID()) sampler := sub.t.GetRule().GetSampler() if taskCount+1 > sampler.GetSampleSize() { if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, - TaskRun: taskRunConfig, + TaskRun: taskRunConfigDTO, IsFinish: true, }); err != nil { logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go index 01ca11fa4..c595fbf4a 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go @@ -22,40 +22,95 @@ import ( ) func (h *TraceHubServiceImpl) CallBack(ctx context.Context, event *entity.AutoEvalEvent) error { - err := h.upsertAnnotation(ctx, event.TurnEvalResults, false) - if err != nil { - logs.CtxError(ctx, "upsertAnnotation err:%v", err) - return err + for _, turn := range event.TurnEvalResults { + workspaceIDStr, workspaceID := turn.GetWorkspaceIDFromExt() + tenants, err := h.getTenants(ctx, loop_span.PlatformType("loop_all")) + if err != nil { + return err + } + var storageDuration int64 = 1 + res, err := h.benefitSvc.CheckTraceBenefit(ctx, &benefit.CheckTraceBenefitParams{ + ConnectorUID: session.UserIDInCtxOrEmpty(ctx), + SpaceID: workspaceID, + }) + if err != nil { + logs.CtxWarn(ctx, "fail to check trace benefit, %v", err) + } else if res == nil { + logs.CtxWarn(ctx, "fail to get trace benefit, got nil response") + } else if res != nil { + storageDuration = res.StorageDuration + } + + spans, err := h.getSpan(ctx, + tenants, + []string{turn.GetSpanIDFromExt()}, + turn.GetTraceIDFromExt(), + workspaceIDStr, + turn.GetStartTimeFromExt()/1000-(24*time.Duration(storageDuration)*time.Hour).Milliseconds(), + turn.GetStartTimeFromExt()/1000+5*time.Second.Milliseconds(), + ) + if len(spans) == 0 { + return fmt.Errorf("span not found, span_id: %s", turn.GetSpanIDFromExt()) + } + span := spans[0] + + // 新增:根据Status写Redis计数 + err = h.updateTaskRunStatusCount(ctx, turn.GetTaskIDFromExt(), turn) + if err != nil { + logs.CtxWarn(ctx, "更新TaskRun状态计数失败: taskID=%d, status=%d, err=%v", + turn.GetTaskIDFromExt(), turn.Status, err) + // 不中断流程,继续处理 + } + + annotation := &loop_span.Annotation{ + SpanID: turn.GetSpanIDFromExt(), + TraceID: span.TraceID, + WorkspaceID: workspaceIDStr, + AnnotationType: loop_span.AnnotationTypeAutoEvaluate, + StartTime: time.UnixMicro(span.StartTime), + Key: fmt.Sprintf("%d:%d", turn.GetTaskIDFromExt(), turn.EvaluatorVersionID), + Value: loop_span.AnnotationValue{ + ValueType: loop_span.AnnotationValueTypeDouble, + FloatValue: turn.Score, + }, + Reasoning: turn.Reasoning, + Status: loop_span.AnnotationStatusNormal, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + } + if err = annotation.GenID(); err != nil { + return err + } + + err = h.traceRepo.InsertAnnotations(ctx, &repo.InsertAnnotationParam{ + Tenant: span.GetTenant(), + TTL: span.GetTTL(ctx), + Annotations: []*loop_span.Annotation{annotation}, + }) + if err != nil { + return err + } + } return nil } func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.CorrectionEvent) error { - spanID := event.Ext["span_id"] - traceID := event.Ext["trace_id"] - startTimeStr := event.Ext["start_time"] - startTime, err := strconv.ParseInt(startTimeStr, 10, 64) - if err != nil { - return err - } - logs.CtxInfo(ctx, "startTime: %v", startTime) - workspaceIDStr := event.Ext["workspace_id"] - workspaceID, err := strconv.ParseInt(workspaceIDStr, 10, 64) - if err != nil { - return err + workspaceIDStr, workspaceID := event.GetWorkspaceIDFromExt() + if workspaceID == 0 { + return fmt.Errorf("workspace_id is empty") } - ////todo:loopspan下 - //platform_type := event.Ext["platform_type"] + //todo:loopspan下 tenants, err := h.getTenants(ctx, loop_span.PlatformType("loop_all")) if err != nil { return err } spans, err := h.getSpan(ctx, tenants, - []string{spanID}, - traceID, + []string{event.GetSpanIDFromExt()}, + event.GetTraceIDFromExt(), workspaceIDStr, - startTime/1000-time.Second.Milliseconds(), - startTime/1000+time.Second.Milliseconds(), + event.GetStartTimeFromExt()/1000-time.Second.Milliseconds(), + event.GetStartTimeFromExt()/1000+time.Second.Milliseconds(), ) if err != nil { return err @@ -64,16 +119,16 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr return err } if len(spans) == 0 { - return fmt.Errorf("span not found, span_id: %s", spanID) + return fmt.Errorf("span not found, span_id: %s", event.GetSpanIDFromExt()) } span := spans[0] annotations, err := h.traceRepo.ListAnnotations(ctx, &repo.ListAnnotationsParam{ Tenants: tenants, - SpanID: spanID, - TraceID: traceID, + SpanID: event.GetSpanIDFromExt(), + TraceID: event.GetTraceIDFromExt(), WorkspaceId: workspaceID, - StartAt: startTime - 5*time.Second.Milliseconds(), - EndAt: startTime + 5*time.Second.Milliseconds(), + StartAt: event.GetStartTimeFromExt() - 5*time.Second.Milliseconds(), + EndAt: event.GetStartTimeFromExt() + 5*time.Second.Milliseconds(), }) if err != nil { return err @@ -111,97 +166,6 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr return nil } -func (h *TraceHubServiceImpl) upsertAnnotation(ctx context.Context, turnEvalResults []*entity.OnlineExptTurnEvalResult, isSync bool) (err error) { - for _, turn := range turnEvalResults { - spanID := turn.Ext["span_id"] - traceID := turn.Ext["trace_id"] - startTimeStr := turn.Ext["start_time"] - startTime, err := strconv.ParseInt(startTimeStr, 10, 64) - if err != nil { - return err - } - logs.CtxInfo(ctx, "startTime: %v", startTime) - taskIDStr := turn.Ext["task_id"] - taskID, err := strconv.ParseInt(taskIDStr, 10, 64) - if err != nil { - return err - } - workspaceIDStr := turn.Ext["workspace_id"] - workspaceID, err := strconv.ParseInt(workspaceIDStr, 10, 64) - if err != nil { - return err - } - //platform_type := turn.Ext["platform_type"] - tenants, err := h.getTenants(ctx, loop_span.PlatformType("loop_all")) - if err != nil { - return err - } - var storageDuration int64 = 1 - res, err := h.benefitSvc.CheckTraceBenefit(ctx, &benefit.CheckTraceBenefitParams{ - ConnectorUID: session.UserIDInCtxOrEmpty(ctx), - SpaceID: workspaceID, - }) - if err != nil { - logs.CtxWarn(ctx, "fail to check trace benefit, %v", err) - } else if res == nil { - logs.CtxWarn(ctx, "fail to get trace benefit, got nil response") - } else if res != nil { - storageDuration = res.StorageDuration - } - - spans, err := h.getSpan(ctx, - tenants, - []string{spanID}, - traceID, - workspaceIDStr, - startTime/1000-(24*time.Duration(storageDuration)*time.Hour).Milliseconds(), - startTime/1000+5*time.Second.Milliseconds(), - ) - if len(spans) == 0 { - return fmt.Errorf("span not found, span_id: %s", spanID) - } - span := spans[0] - - // 新增:根据Status写Redis计数 - err = h.updateTaskRunStatusCount(ctx, taskID, turn) - if err != nil { - logs.CtxWarn(ctx, "更新TaskRun状态计数失败: taskID=%d, status=%d, err=%v", - taskID, turn.Status, err) - // 不中断流程,继续处理 - } - - annotation := &loop_span.Annotation{ - SpanID: spanID, - TraceID: span.TraceID, - WorkspaceID: workspaceIDStr, - AnnotationType: loop_span.AnnotationTypeAutoEvaluate, - StartTime: time.UnixMicro(span.StartTime), - Key: fmt.Sprintf("%d:%d", taskID, turn.EvaluatorVersionID), - Value: loop_span.AnnotationValue{ - ValueType: loop_span.AnnotationValueTypeDouble, - FloatValue: turn.Score, - }, - Reasoning: turn.Reasoning, - Status: loop_span.AnnotationStatusNormal, - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - } - if err = annotation.GenID(); err != nil { - return err - } - - err = h.traceRepo.InsertAnnotations(ctx, &repo.InsertAnnotationParam{ - Tenant: span.GetTenant(), - TTL: span.GetTTL(ctx), - Annotations: []*loop_span.Annotation{annotation}, - }) - if err != nil { - return err - } - - } - return nil -} func (h *TraceHubServiceImpl) getTenants(ctx context.Context, platform loop_span.PlatformType) ([]string, error) { return h.tenantProvider.GetTenantsByPlatformType(ctx, platform) } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/common.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/common.go deleted file mode 100644 index 02558b881..000000000 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/common.go +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 - -package tracehub diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go index 76fe35c50..849f3c753 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go @@ -27,6 +27,7 @@ type spanSubscriber struct { taskID int64 sync.RWMutex // protect t, buf t *task.Task + tr *task.TaskRun processor taskexe.Processor buf []*loop_span.Span bufCap int // max buffer size diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index 1885880a0..d47f128d7 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -5,18 +5,11 @@ package tracehub import ( "context" - "time" "github.com/bytedance/sonic" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) -// Usec2Msec 微秒转毫秒 -func Usec2Msec(usec int64) int64 { - d := time.Duration(usec) * time.Microsecond - return int64(d / time.Millisecond) -} - func ToJSONString(ctx context.Context, obj interface{}) string { if obj == nil { return "" From e5af61b2adfd6e32f75743b0b5008b06b35dd34f Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 9 Oct 2025 16:15:50 +0800 Subject: [PATCH 399/462] add backfill proc --- .../observability/application/wire_gen.go | 2 +- .../task/service/taskexe/tracehub/backfill.go | 48 +++++++++++++++++-- .../service/taskexe/tracehub/trace_hub.go | 4 ++ 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index 44e743a14..b9f5bc6e6 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -237,7 +237,7 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto return nil, err } iTenantProvider := tenant.NewTenantProvider(iTraceConfig) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor, benefit2, aid) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor, benefit2, aid, iBackfillProducer) if err != nil { return nil, err } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 1d196d571..82a7e33e8 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -17,6 +17,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service/trace/span_filter" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service/trace/span_processor" obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/lang/goroutine" @@ -255,20 +256,36 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * logs.CtxError(ctx, "list spans failed, task_id=%d, page_token=%s, err=%v", sub.t.GetID(), pageToken, err) return err } + spans := result.Spans + processors, err := h.buildHelper.BuildGetTraceProcessors(ctx, span_processor.Settings{ + WorkspaceId: sub.t.GetWorkspaceID(), + PlatformType: loop_span.PlatformType(sub.t.GetRule().GetSpanFilters().GetPlatformType()), + QueryStartTime: listParam.StartAt, + QueryEndTime: listParam.EndAt, + }) + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommercialCommonInternalErrorCodeCode) + } + for _, p := range processors { + spans, err = p.Transform(ctx, spans) + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommercialCommonInternalErrorCodeCode) + } + } - if len(result.Spans) > 0 { + if len(spans) > 0 { // 发送到通道 flush := &flushReq{ - retrievedSpanCount: int64(len(result.Spans)), + retrievedSpanCount: int64(len(spans)), pageToken: result.PageToken, - spans: result.Spans, + spans: spans, noMore: !result.HasMore, } select { case h.flushCh <- flush: - totalCount += int64(len(result.Spans)) - logs.CtxInfo(ctx, "sent %d spans to flush channel, total=%d, task_id=%d", len(result.Spans), totalCount, sub.t.GetID()) + totalCount += int64(len(spans)) + logs.CtxInfo(ctx, "sent %d spans to flush channel, total=%d, task_id=%d", len(spans), totalCount, sub.t.GetID()) case <-ctx.Done(): logs.CtxWarn(ctx, "context cancelled while sending spans, task_id=%d", sub.t.GetID()) return ctx.Err() @@ -457,11 +474,32 @@ func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error, s h.flushErrLock.Unlock() if len(allErrors) > 0 { + backfillEvent := &entity.BackFillEvent{ + SpaceID: sub.t.GetWorkspaceID(), + TaskID: sub.t.GetID(), + } + + // 异步发送MQ消息,不阻塞任务创建流程 + go func() { + if err := h.sendBackfillMessage(context.Background(), backfillEvent); err != nil { + logs.CtxWarn(ctx, "send backfill message failed, task_id=%d, err=%v", sub.t.GetID(), err) + } + }() logs.CtxWarn(ctx, "backfill completed with %d errors, task_id=%d", len(allErrors), sub.t.GetID()) // 返回第一个错误作为代表 return allErrors[0] + } logs.CtxInfo(ctx, "backfill completed successfully, task_id=%d", sub.t.GetID()) return nil } + +// sendBackfillMessage 发送MQ消息 +func (h *TraceHubServiceImpl) sendBackfillMessage(ctx context.Context, event *entity.BackFillEvent) error { + if h.backfillProducer == nil { + return errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg("backfill producer not initialized")) + } + + return h.backfillProducer.SendBackfill(ctx, event) +} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 735f5b0f0..269d037b7 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -17,6 +17,7 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/mq" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" @@ -45,6 +46,7 @@ func NewTraceHubImpl( taskProcessor *processor.TaskProcessor, benefitSvc benefit.IBenefitService, aid int32, + backfillProducer mq.IBackfillProducer, ) (ITraceHubService, error) { // 创建两个不同间隔的独立定时器 scheduledTaskTicker := time.NewTicker(5 * time.Minute) // 任务状态生命周期管理 - 5分钟间隔 @@ -60,6 +62,7 @@ func NewTraceHubImpl( taskProcessor: taskProcessor, benefitSvc: benefitSvc, aid: aid, + backfillProducer: backfillProducer, } // 立即启动定时任务 @@ -79,6 +82,7 @@ type TraceHubServiceImpl struct { taskProcessor *processor.TaskProcessor buildHelper service.TraceFilterProcessorBuilder benefitSvc benefit.IBenefitService + backfillProducer mq.IBackfillProducer flushCh chan *flushReq flushErrLock sync.Mutex From 5bc1f2272f677bde0f05624ac604859ec824be54 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 9 Oct 2025 16:47:46 +0800 Subject: [PATCH 400/462] fix backfill done --- .../observability/domain/task/entity/task.go | 18 ++++ .../task/service/taskexe/tracehub/backfill.go | 13 ++- .../taskexe/tracehub/scheduled_task.go | 23 +---- .../modules/observability/infra/repo/task.go | 89 +++++++++++++++++++ 4 files changed, 122 insertions(+), 21 deletions(-) diff --git a/backend/modules/observability/domain/task/entity/task.go b/backend/modules/observability/domain/task/entity/task.go index 5fb91e221..92ba8a8f4 100644 --- a/backend/modules/observability/domain/task/entity/task.go +++ b/backend/modules/observability/domain/task/entity/task.go @@ -60,3 +60,21 @@ func (t ObservabilityTask) IsFinished() bool { return false } } + +func (t ObservabilityTask) GetBackfillTaskRun() *TaskRun { + for _, taskRunPO := range t.TaskRuns { + if taskRunPO.TaskType == task.TaskRunTypeBackFill { + return taskRunPO + } + } + return nil +} + +func (t ObservabilityTask) GetCurrentTaskRun() *TaskRun { + for _, taskRunPO := range t.TaskRuns { + if taskRunPO.TaskType == task.TaskRunTypeNewData && taskRunPO.RunStatus == task.TaskStatusRunning { + return taskRunPO + } + } + return nil +} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 82a7e33e8..93a853bf7 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -359,6 +359,16 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp logs.CtxError(ctx, "update task run failed, task_id=%d, err=%v", sub.t.GetID(), err) return len(fr.spans), len(sampledSpans), err } + if fr.noMore { + if err = sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: tconv.TaskRunDO2PO(ctx, sub.tr, nil), + IsFinish: false, + }); err != nil { + logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) + return len(fr.spans), len(sampledSpans), err + } + } logs.CtxInfo(ctx, "successfully processed %d spans (sampled from %d), task_id=%d", len(sampledSpans), len(fr.spans), sub.t.GetID()) @@ -441,14 +451,13 @@ func (h *TraceHubServiceImpl) processSpan(ctx context.Context, span *loop_span.S logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", span.SpanID, span.TraceID, sub.t.GetID()) - taskRunConfigDTO := tconv.TaskRunDO2PO(ctx, sub.tr, nil) taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, sub.tr.GetID()) sampler := sub.t.GetRule().GetSampler() if taskCount+1 > sampler.GetSampleSize() { if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, - TaskRun: taskRunConfigDTO, + TaskRun: tconv.TaskRunDO2PO(ctx, sub.tr, nil), IsFinish: true, }); err != nil { logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index ec0eb0ff4..61544d124 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -28,15 +28,6 @@ type TaskRunCountInfo struct { TaskRunFailCount int64 } -// SyncMetrics 同步统计指标 -type SyncMetrics struct { - TotalKeys int64 - SuccessCount int64 - FailureCount int64 - SkippedCount int64 - ProcessingTime time.Duration -} - // startScheduledTask 启动定时任务goroutine - 使用5分钟间隔的定时器 func (h *TraceHubServiceImpl) startScheduledTask() { go func() { @@ -122,15 +113,8 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(taskPOs)) for _, taskPO := range taskPOs { var taskRun, backfillTaskRun entity.TaskRun - for _, taskRunPO := range taskPO.TaskRuns { - if taskRunPO.TaskType == task.TaskRunTypeBackFill { - backfillTaskRun = *taskRunPO - } else { - if taskRunPO.RunStatus != task.RunStatusDone { - taskRun = *taskRunPO - } - } - } + backfillTaskRun = *taskPO.GetBackfillTaskRun() + taskRun = *taskPO.GetCurrentTaskRun() taskInfo := tconv.TaskPO2DTO(ctx, taskPO, nil) endTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetEndAt()) @@ -155,7 +139,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { if backfillTaskRun.RunStatus == task.RunStatusDone { err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, - TaskRun: &taskRun, + TaskRun: &backfillTaskRun, IsFinish: true, }) if err != nil { @@ -203,6 +187,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } + // 重复任务的处理 if taskInfo.GetTaskStatus() != task.TaskStatusUnstarted { logs.CtxInfo(ctx, "taskID:%d, taskRun.RunEndAt:%v", taskInfo.GetID(), taskRun.RunEndAt) // 达到单次任务时间期限 diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index c15b61f74..d63da5d85 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -448,6 +448,95 @@ func (v *TaskRepoImpl) GetLatestNewDataTaskRun(ctx context.Context, workspaceID return convertor.TaskRunPO2DO(taskRunPo), nil } +// +//// TaskRunCountInfo TaskRunCount信息结构 +//type TaskRunCountInfo struct { +// TaskID int64 +// TaskRunID int64 +// TaskRunCount int64 +// TaskRunSuccCount int64 +// TaskRunFailCount int64 +//} +// +//func (v *TaskRepoImpl) RefreshTaskRunDetails(ctx context.Context, batch []*TaskRunCountInfo) error { +// +// // 1. 批量读取Redis计数数据 +// for _, info := range batch { +// // 读取taskruncount +// count, err := v.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) +// if err != nil || count == -1 { +// logs.CtxWarn(ctx, "获取TaskRunCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) +// } else { +// info.TaskRunCount = count +// } +// +// // 读取taskrunscesscount +// successCount, err := v.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) +// if err != nil || successCount == -1 { +// logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) +// successCount = 0 +// } else { +// info.TaskRunSuccCount = successCount +// } +// +// // 读取taskrunfailcount +// failCount, err := v.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) +// if err != nil || failCount == -1 { +// logs.CtxWarn(ctx, "获取TaskRunFailCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) +// failCount = 0 +// } else { +// info.TaskRunFailCount = failCount +// } +// +// logs.CtxDebug(ctx, "读取计数数据", +// "taskID", info.TaskID, +// "taskRunID", info.TaskRunID, +// "runCount", info.TaskRunCount, +// "successCount", info.TaskRunSuccCount, +// "failCount", info.TaskRunFailCount) +// } +// +// // 2. 批量更新数据库 +// for _, info := range batch { +// // 构建run_detail JSON数据 +// runDetail := map[string]interface{}{ +// "total_count": info.TaskRunCount, +// "success_count": info.TaskRunSuccCount, +// "failed_count": info.TaskRunFailCount, +// } +// +// // 序列化为JSON字符串 +// runDetailJSON, err := json.Marshal(runDetail) +// if err != nil { +// return errors.Wrap(err, "序列化run_detail失败") +// } +// +// runDetailStr := string(runDetailJSON) +// +// // 构建更新映射 +// updateMap := map[string]interface{}{ +// "run_detail": &runDetailStr, +// } +// +// // 使用乐观锁更新 +// err = v.UpdateTaskRunWithOCC(ctx, info.TaskRunID, 0, updateMap) +// if err != nil { +// return errors.Wrap(err, "更新TaskRun失败") +// } +// if err != nil { +// logs.CtxError(ctx, "更新TaskRun详情失败", +// "taskID", info.TaskID, +// "taskRunID", info.TaskRunID, +// "err", err) +// } else { +// logs.CtxDebug(ctx, "更新TaskRun详情成功", +// "taskID", info.TaskID, +// "taskRunID", info.TaskRunID) +// } +// } +// return nil +//} + func (v *TaskRepoImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, error) { count, err := v.TaskRedisDao.GetTaskCount(ctx, taskID) if err != nil { From 4f2dd3b5917fb2685afccca38ce221f4751c20df Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 9 Oct 2025 17:06:32 +0800 Subject: [PATCH 401/462] add env --- .../task/service/taskexe/tracehub/backfill.go | 6 +++++- .../service/taskexe/tracehub/scheduled_task.go | 14 ++++++++++---- .../task/service/taskexe/tracehub/trace_hub.go | 6 +++++- .../domain/task/service/taskexe/tracehub/utils.go | 5 +++++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 93a853bf7..e67c1c586 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -6,6 +6,7 @@ package tracehub import ( "context" "errors" + "os" "sync" "time" @@ -29,7 +30,10 @@ const pageSize = 500 func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 1. 设置当前任务上下文 - ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + if env := os.Getenv(XttEnv); env != "" { + ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 + } + //ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") sub, err := h.setBackfillTask(ctx, event) if err != nil { return err diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 61544d124..6d58b718d 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -6,6 +6,7 @@ package tracehub import ( "context" "encoding/json" + "os" "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" @@ -66,7 +67,10 @@ func (h *TraceHubServiceImpl) runScheduledTask() { ctx := context.Background() logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) - ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + if env := os.Getenv(XttEnv); env != "" { + ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 + } + //ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") logs.CtxInfo(ctx, "定时任务开始执行...") // 读取所有非终态(成功/禁用)任务 var taskPOs []*entity.ObservabilityTask @@ -187,10 +191,9 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } - // 重复任务的处理 if taskInfo.GetTaskStatus() != task.TaskStatusUnstarted { logs.CtxInfo(ctx, "taskID:%d, taskRun.RunEndAt:%v", taskInfo.GetID(), taskRun.RunEndAt) - // 达到单次任务时间期限 + // 重复任务的处理:达到单次任务时间期限 if time.Now().After(taskRun.RunEndAt) { logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ @@ -225,7 +228,10 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { ctx := context.Background() logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) - ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + if env := os.Getenv(XttEnv); env != "" { + ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 + } + //ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") logs.CtxInfo(ctx, "开始同步TaskRunCounts到数据库...") diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 269d037b7..7473ba13e 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -6,6 +6,7 @@ package tracehub import ( "context" "fmt" + "os" "slices" "strconv" "sync" @@ -101,7 +102,10 @@ type flushReq struct { const TagKeyResult = "tag_key" func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawSpan) error { - ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + if env := os.Getenv(XttEnv); env != "" { + ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 + } + //ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") ctx = metainfo.WithPersistentValue(ctx, "LANE_C_FORNAX_APPID", strconv.FormatInt(int64(h.aid), 10)) logs.CtxInfo(ctx, "TraceHub start") var tags []metrics.T diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index d47f128d7..868cf0156 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -10,6 +10,11 @@ import ( "github.com/coze-dev/coze-loop/backend/pkg/logs" ) +const ( + CtxKeyEnv = "K_ENV" + XttEnv = "x_tt_env" +) + func ToJSONString(ctx context.Context, obj interface{}) string { if obj == nil { return "" From 6c00a517854db43c1ee9cdef3637bfb63ba75095 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 9 Oct 2025 17:08:48 +0800 Subject: [PATCH 402/462] fix panic --- .../service/taskexe/tracehub/scheduled_task.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 6d58b718d..0f65ea2b0 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -116,9 +116,9 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(taskPOs)) for _, taskPO := range taskPOs { - var taskRun, backfillTaskRun entity.TaskRun - backfillTaskRun = *taskPO.GetBackfillTaskRun() - taskRun = *taskPO.GetCurrentTaskRun() + var taskRun, backfillTaskRun *entity.TaskRun + backfillTaskRun = taskPO.GetBackfillTaskRun() + taskRun = taskPO.GetCurrentTaskRun() taskInfo := tconv.TaskPO2DTO(ctx, taskPO, nil) endTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetEndAt()) @@ -131,7 +131,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { if time.Now().After(endTime) && backfillTaskRun.RunStatus == task.RunStatusDone { err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, - TaskRun: &backfillTaskRun, + TaskRun: backfillTaskRun, IsFinish: true, }) if err != nil { @@ -143,7 +143,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { if backfillTaskRun.RunStatus == task.RunStatusDone { err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, - TaskRun: &backfillTaskRun, + TaskRun: backfillTaskRun, IsFinish: true, }) if err != nil { @@ -155,7 +155,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { if time.Now().After(endTime) { err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, - TaskRun: &taskRun, + TaskRun: taskRun, IsFinish: true, }) if err != nil { @@ -198,7 +198,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, - TaskRun: &taskRun, + TaskRun: taskRun, IsFinish: false, }) if err != nil { From dc3891fcd4775dc6a6f6437ca69a0ea621f3ec10 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 9 Oct 2025 17:31:34 +0800 Subject: [PATCH 403/462] add debug log --- .../domain/task/service/taskexe/tracehub/trace_hub.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 7473ba13e..cff34e8c5 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -102,6 +102,7 @@ type flushReq struct { const TagKeyResult = "tag_key" func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawSpan) error { + logs.CtxInfo(ctx, "XttEnv: %s", os.Getenv(XttEnv)) if env := os.Getenv(XttEnv); env != "" { ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 } From e1636c353cde05df62b50c3431b733ac94bc4f9a Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 9 Oct 2025 18:01:31 +0800 Subject: [PATCH 404/462] fix env --- .../domain/task/service/taskexe/tracehub/backfill.go | 2 +- .../domain/task/service/taskexe/tracehub/scheduled_task.go | 4 ++-- .../domain/task/service/taskexe/tracehub/trace_hub.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index e67c1c586..5f9c7ba51 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -33,7 +33,7 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi if env := os.Getenv(XttEnv); env != "" { ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 } - //ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") sub, err := h.setBackfillTask(ctx, event) if err != nil { return err diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 0f65ea2b0..287abf85e 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -70,7 +70,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { if env := os.Getenv(XttEnv); env != "" { ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 } - //ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") logs.CtxInfo(ctx, "定时任务开始执行...") // 读取所有非终态(成功/禁用)任务 var taskPOs []*entity.ObservabilityTask @@ -231,7 +231,7 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { if env := os.Getenv(XttEnv); env != "" { ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 } - //ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") logs.CtxInfo(ctx, "开始同步TaskRunCounts到数据库...") diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index cff34e8c5..3035368d4 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -106,7 +106,7 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS if env := os.Getenv(XttEnv); env != "" { ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 } - //ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") ctx = metainfo.WithPersistentValue(ctx, "LANE_C_FORNAX_APPID", strconv.FormatInt(int64(h.aid), 10)) logs.CtxInfo(ctx, "TraceHub start") var tags []metrics.T From 6c8c937ffbc1fd53c10444b8fe076b92a6defb92 Mon Sep 17 00:00:00 2001 From: zhaoxun Date: Thu, 9 Oct 2025 18:14:42 +0800 Subject: [PATCH 405/462] add fill ctx --- .../task/service/taskexe/tracehub/backfill.go | 6 +----- .../service/taskexe/tracehub/scheduled_task.go | 14 ++++---------- .../task/service/taskexe/tracehub/trace_hub.go | 5 +---- .../domain/task/service/taskexe/tracehub/utils.go | 9 +++++++++ 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 5f9c7ba51..7cf140417 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -6,7 +6,6 @@ package tracehub import ( "context" "errors" - "os" "sync" "time" @@ -30,10 +29,7 @@ const pageSize = 500 func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 1. 设置当前任务上下文 - if env := os.Getenv(XttEnv); env != "" { - ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 - } - ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + ctx = fillCtxWithEnv(ctx) sub, err := h.setBackfillTask(ctx, event) if err != nil { return err diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 287abf85e..77810b754 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -6,7 +6,6 @@ package tracehub import ( "context" "encoding/json" - "os" "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/filter" @@ -67,10 +66,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { ctx := context.Background() logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) - if env := os.Getenv(XttEnv); env != "" { - ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 - } - ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + ctx = fillCtxWithEnv(ctx) logs.CtxInfo(ctx, "定时任务开始执行...") // 读取所有非终态(成功/禁用)任务 var taskPOs []*entity.ObservabilityTask @@ -191,7 +187,8 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } - if taskInfo.GetTaskStatus() != task.TaskStatusUnstarted { + // 处理taskRun + if taskInfo.GetTaskStatus() == task.TaskStatusRunning && taskInfo.GetTaskStatus() == task.TaskStatusPending { logs.CtxInfo(ctx, "taskID:%d, taskRun.RunEndAt:%v", taskInfo.GetID(), taskRun.RunEndAt) // 重复任务的处理:达到单次任务时间期限 if time.Now().After(taskRun.RunEndAt) { @@ -228,10 +225,7 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { ctx := context.Background() logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) - if env := os.Getenv(XttEnv); env != "" { - ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 - } - ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + ctx = fillCtxWithEnv(ctx) logs.CtxInfo(ctx, "开始同步TaskRunCounts到数据库...") diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 3035368d4..5162cad73 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -103,10 +103,7 @@ const TagKeyResult = "tag_key" func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawSpan) error { logs.CtxInfo(ctx, "XttEnv: %s", os.Getenv(XttEnv)) - if env := os.Getenv(XttEnv); env != "" { - ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 - } - ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + ctx = fillCtxWithEnv(ctx) ctx = metainfo.WithPersistentValue(ctx, "LANE_C_FORNAX_APPID", strconv.FormatInt(int64(h.aid), 10)) logs.CtxInfo(ctx, "TraceHub start") var tags []metrics.T diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index 868cf0156..c621a98c0 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -5,6 +5,7 @@ package tracehub import ( "context" + "os" "github.com/bytedance/sonic" "github.com/coze-dev/coze-loop/backend/pkg/logs" @@ -27,3 +28,11 @@ func ToJSONString(ctx context.Context, obj interface{}) string { jsonStr := string(jsonData) return jsonStr } + +func fillCtxWithEnv(ctx context.Context) context.Context { + if env := os.Getenv(XttEnv); env != "" { + ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 + } + ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + return ctx +} From 8f5b7374d54c7c5c79293191b836228ddd72deed Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Thu, 9 Oct 2025 21:12:37 +0800 Subject: [PATCH 406/462] add cache --- .../taskexe/tracehub/scheduled_task.go | 72 +++ .../service/taskexe/tracehub/trace_hub.go | 39 +- .../observability/infra/repo/task_run.go | 456 ------------------ 3 files changed, 107 insertions(+), 460 deletions(-) delete mode 100755 backend/modules/observability/infra/repo/task_run.go diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 77810b754..d3e912e78 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -28,6 +28,14 @@ type TaskRunCountInfo struct { TaskRunFailCount int64 } +// TaskCacheInfo 任务缓存信息结构 +type TaskCacheInfo struct { + WorkspaceIDs []string + BotIDs []string + Tasks []*entity.ObservabilityTask + UpdateTime time.Time +} + // startScheduledTask 启动定时任务goroutine - 使用5分钟间隔的定时器 func (h *TraceHubServiceImpl) startScheduledTask() { go func() { @@ -62,6 +70,23 @@ func (h *TraceHubServiceImpl) startSyncTaskRunCounts() { }() } +// startSyncTaskCache 启动任务缓存定时任务goroutine - 使用1分钟间隔的定时器 +func (h *TraceHubServiceImpl) startSyncTaskCache() { + go func() { + for { + select { + case <-h.syncTaskTicker.C: + // 执行定时任务 + h.syncTaskCache() + case <-h.stopChan: + // 停止定时任务 + h.syncTaskTicker.Stop() + return + } + } + }() +} + func (h *TraceHubServiceImpl) runScheduledTask() { ctx := context.Background() logID := logs.NewLogID() @@ -383,3 +408,50 @@ func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *Tas return nil } + +func (h *TraceHubServiceImpl) syncTaskCache() { + ctx := context.Background() + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) + ctx = fillCtxWithEnv(ctx) + + logs.CtxInfo(ctx, "开始同步任务缓存...") + + // 1. 从数据库中获取所有非终态任务的spaceID、botID和task信息 + spaceIDs, botIDs, tasks := h.taskRepo.GetObjListWithTask(ctx) + logs.CtxInfo(ctx, "获取到任务数量", "taskCount", len(tasks), "spaceCount", len(spaceIDs), "botCount", len(botIDs)) + + // 2. 构建新的缓存映射 + var newCache = TaskCacheInfo{ + WorkspaceIDs: spaceIDs, + BotIDs: botIDs, + Tasks: tasks, + UpdateTime: time.Now(), // 设置当前时间为更新时间 + } + + // 3. 清空旧缓存并更新新缓存 + h.taskCacheLock.Lock() + defer h.taskCacheLock.Unlock() + + // 清空旧缓存 + h.taskCache.Range(func(key, value interface{}) bool { + h.taskCache.Delete(key) + return true + }) + + // 4. 将新缓存写入本地缓存 + h.taskCache.Store("ObjListWithTask", &newCache) + + logs.CtxInfo(ctx, "任务缓存同步完成", "taskCount", len(tasks), "updateTime", newCache.UpdateTime.Format(time.RFC3339)) +} + +// getCachedTask 从缓存中获取任务信息 +func (h *TraceHubServiceImpl) getCached() (*TaskCacheInfo, bool) { + cacheKey := "ObjListWithTask" + if value, ok := h.taskCache.Load(cacheKey); ok { + if cacheInfo, ok := value.(*TaskCacheInfo); ok { + return cacheInfo, true + } + } + return nil, false +} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 5162cad73..24f241af9 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -69,6 +69,7 @@ func NewTraceHubImpl( // 立即启动定时任务 impl.startScheduledTask() impl.startSyncTaskRunCounts() + impl.startSyncTaskCache() return impl, nil } @@ -89,6 +90,10 @@ type TraceHubServiceImpl struct { flushErrLock sync.Mutex flushErr []error + // 本地缓存 - 缓存非终态任务信息 + taskCache sync.Map + taskCacheLock sync.RWMutex + aid int32 } @@ -114,16 +119,22 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS return nil } logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) - spaceList, botList, tasks := h.taskRepo.GetObjListWithTask(ctx) - logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", spaceList, botList, tasks) + taskCacheInfo, ok := h.getCached() + if !ok { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_task"}) + logs.CtxInfo(ctx, "no task found for span, %s", logSuffix) + return nil + } + + logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", taskCacheInfo.WorkspaceIDs, taskCacheInfo.BotIDs, taskCacheInfo.Tasks) // 1.2 Filter out spans that do not belong to any space or bot - if !gslice.Contains(spaceList, span.WorkspaceID) && !gslice.Contains(botList, span.TagsString["bot_id"]) { + if !gslice.Contains(taskCacheInfo.WorkspaceIDs, span.WorkspaceID) && !gslice.Contains(taskCacheInfo.BotIDs, span.TagsString["bot_id"]) { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) logs.CtxInfo(ctx, "no space found for span, %s", logSuffix) return nil } // 2、Match spans against task rules - subs, err := h.getSubscriberOfSpan(ctx, span, tasks) + subs, err := h.getSubscriberOfSpan(ctx, span, taskCacheInfo.Tasks) if err != nil { logs.CtxWarn(ctx, "get subscriber of flow span failed, %s, err: %v", logSuffix, err) } @@ -351,3 +362,23 @@ func (h *TraceHubServiceImpl) dispatch(ctx context.Context, span *loop_span.Span func (h *TraceHubServiceImpl) Close() { close(h.stopChan) } + +// getObjListWithTaskFromCache 从缓存中获取任务列表,如果缓存为空则回退到数据库 +func (h *TraceHubServiceImpl) getObjListWithTaskFromCache(ctx context.Context) ([]string, []string, []*entity.ObservabilityTask) { + // 首先尝试从缓存中获取任务 + objListWithTask, ok := h.taskCache.Load("ObjListWithTask") + if !ok { + // 缓存为空,回退到数据库 + logs.CtxInfo(ctx, "缓存为空,从数据库获取任务列表") + return h.taskRepo.GetObjListWithTask(ctx) + } + + cacheInfo, ok := objListWithTask.(*TaskCacheInfo) + if !ok { + logs.CtxError(ctx, "缓存数据类型错误") + return h.taskRepo.GetObjListWithTask(ctx) + } + + logs.CtxInfo(ctx, "从缓存获取任务列表", "taskCount", len(cacheInfo.Tasks), "spaceCount", len(cacheInfo.WorkspaceIDs), "botCount", len(cacheInfo.BotIDs)) + return cacheInfo.WorkspaceIDs, cacheInfo.BotIDs, cacheInfo.Tasks +} diff --git a/backend/modules/observability/infra/repo/task_run.go b/backend/modules/observability/infra/repo/task_run.go deleted file mode 100755 index 8d055cf41..000000000 --- a/backend/modules/observability/infra/repo/task_run.go +++ /dev/null @@ -1,456 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 - -package repo - -//import ( -// "context" -// "strconv" -// "time" -// -// "github.com/coze-dev/coze-loop/backend/infra/idgen" -// "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" -// "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" -// "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/convertor" -// taskRunDao "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/dao" -// "github.com/coze-dev/coze-loop/backend/pkg/logs" -//) -// -////func NewTaskRunRepoImpl(taskRunDao mysql.ITaskRunDao, idGenerator idgen.IIDGenerator, taskRunRedisDao taskRunDao.ITaskRunDAO) repo.ITaskRunRepo { -//// return &TaskRunRepoImpl{ -//// TaskRunDao: taskRunDao, -//// idGenerator: idGenerator, -//// TaskRunRedisDao: taskRunRedisDao, -//// } -////} -// -//type TaskRunRepoImpl struct { -// TaskRunDao mysql.ITaskRunDao -// TaskRunRedisDao taskRunDao.ITaskRunDAO -// idGenerator idgen.IIDGenerator -//} -// -//// 缓存 TTL 常量 -//const ( -// TaskRunDetailTTL = 15 * time.Minute // TaskRun缓存15分钟 -// NonFinalTaskRunListTTL = 30 * time.Second // 非终态TaskRun缓存30秒 -// TaskRunListByTaskTTL = 5 * time.Minute // 按Task分组的TaskRun列表缓存5分钟 -// ObjListWithTaskRunTTL = 15 * time.Minute // 对象列表缓存15分钟 -//) -// -//// GetTaskRun 获取单个TaskRun -//func (v *TaskRunRepoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*entity.TaskRun, error) { -// // 先查 Redis 缓存 -// cachedTaskRun, err := v.TaskRunRedisDao.GetTaskRun(ctx, id) -// if err != nil { -// logs.CtxWarn(ctx, "failed to get taskrun from redis cache", "id", id, "err", err) -// } else if cachedTaskRun != nil { -// // 验证权限(workspaceID 和 taskID) -// if workspaceID != nil && cachedTaskRun.WorkspaceID != *workspaceID { -// return nil, nil // 权限不符,返回空 -// } -// if taskID != nil && cachedTaskRun.TaskID != *taskID { -// return nil, nil // 权限不符,返回空 -// } -// return cachedTaskRun, nil -// } -// -// // 缓存未命中,查询数据库 -// taskRunPo, err := v.TaskRunDao.GetTaskRun(ctx, id, workspaceID, taskID) -// if err != nil { -// return nil, err -// } -// -// taskRunDO := convertor.TaskRunPO2DO(taskRunPo) -// -// // 异步缓存到 Redis -// go func() { -// if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), taskRunDO, TaskRunDetailTTL); err != nil { -// logs.Error("failed to set taskrun cache", "id", id, "err", err) -// } -// }() -// -// return taskRunDO, nil -//} -// -//// GetBackfillTaskRun 获取Backfill类型的TaskRun -//func (v *TaskRunRepoImpl) GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { -// taskRunPo, err := v.TaskRunDao.GetBackfillTaskRun(ctx, workspaceID, taskID) -// if err != nil { -// return nil, err -// } -// if taskRunPo == nil { -// return nil, nil -// } -// return convertor.TaskRunPO2DO(taskRunPo), nil -//} -// -//// GetNewDataTaskRun 获取NewData类型的TaskRun -// -//func (v *TaskRunRepoImpl) GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { -// taskRunPo, err := v.TaskRunDao.GetLatestNewDataTaskRun(ctx, workspaceID, taskID) -// if err != nil { -// return nil, err -// } -// if taskRunPo == nil { -// return nil, nil -// } -// return convertor.TaskRunPO2DO(taskRunPo), nil -//} -// -//// ListTaskRuns 获取TaskRun列表 -//func (v *TaskRunRepoImpl) ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) { -// results, total, err := v.TaskRunDao.ListTaskRuns(ctx, param) -// if err != nil { -// return nil, 0, err -// } -// resp := make([]*entity.TaskRun, len(results)) -// for i, result := range results { -// resp[i] = convertor.TaskRunPO2DO(result) -// } -// return resp, total, nil -//} -// -//// CreateTaskRun 创建TaskRun -//func (v *TaskRunRepoImpl) CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) { -// id, err := v.idGenerator.GenID(ctx) -// if err != nil { -// return 0, err -// } -// taskRunPo := convertor.TaskRunDO2PO(do) -// taskRunPo.ID = id -// -// // 先执行数据库操作 -// createdID, err := v.TaskRunDao.CreateTaskRun(ctx, taskRunPo) -// if err != nil { -// return 0, err -// } -// -// // 数据库操作成功后,更新缓存 -// do.ID = createdID -// go func() { -// // 缓存新创建的TaskRun -// if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), do, TaskRunDetailTTL); err != nil { -// logs.Error("failed to set taskrun cache after create", "id", createdID, "err", err) -// } -// -// // 清理相关列表缓存 -// v.clearTaskRunListCaches(context.Background(), do.WorkspaceID, do.TaskID) -// }() -// -// return createdID, nil -//} -// -//// UpdateTaskRun 更新TaskRun -//func (v *TaskRunRepoImpl) UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error { -// taskRunPo := convertor.TaskRunDO2PO(do) -// -// // 先执行数据库操作 -// err := v.TaskRunDao.UpdateTaskRun(ctx, taskRunPo) -// if err != nil { -// return err -// } -// -// // 数据库操作成功后,更新缓存 -// go func() { -// // 更新单个TaskRun缓存 -// if err := v.TaskRunRedisDao.SetTaskRun(context.Background(), do, TaskRunDetailTTL); err != nil { -// logs.Error("failed to update taskrun cache", "id", do.ID, "err", err) -// } -// -// // 清理相关列表缓存 -// v.clearTaskRunListCaches(context.Background(), do.WorkspaceID, do.TaskID) -// }() -// -// return nil -//} -// -//// DeleteTaskRun 删除TaskRun -//func (v *TaskRunRepoImpl) DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error { -// // 先执行数据库操作 -// err := v.TaskRunDao.DeleteTaskRun(ctx, id, workspaceID, userID) -// if err != nil { -// return err -// } -// -// // 数据库操作成功后,删除缓存 -// go func() { -// // 删除单个TaskRun缓存 -// if err := v.TaskRunRedisDao.DeleteTaskRun(context.Background(), id); err != nil { -// logs.Error("failed to delete taskrun cache", "id", id, "err", err) -// } -// -// // 清理相关列表缓存 -// v.clearTaskRunListCaches(context.Background(), workspaceID, 0) -// }() -// -// return nil -//} -// -//// ListNonFinalTaskRun 获取非终态TaskRun列表 -//func (v *TaskRunRepoImpl) ListNonFinalTaskRun(ctx context.Context) ([]*entity.TaskRun, error) { -// // 先查 Redis 缓存 -// cachedTaskRuns, err := v.TaskRunRedisDao.GetNonFinalTaskRunList(ctx) -// if err != nil { -// logs.CtxWarn(ctx, "failed to get non final taskrun list from redis cache", "err", err) -// } else if cachedTaskRuns != nil { -// return cachedTaskRuns, nil -// } -// -// // 缓存未命中,查询数据库 -// results, err := v.TaskRunDao.ListNonFinalTaskRun(ctx) -// if err != nil { -// return nil, err -// } -// -// resp := make([]*entity.TaskRun, len(results)) -// for i, result := range results { -// resp[i] = convertor.TaskRunPO2DO(result) -// } -// -// // 异步缓存到 Redis(短TTL,因为非最终状态变化频繁) -// go func() { -// if err := v.TaskRunRedisDao.SetNonFinalTaskRunList(context.Background(), resp, NonFinalTaskRunListTTL); err != nil { -// logs.Error("failed to set non final taskrun list cache", "err", err) -// } -// }() -// -// return resp, nil -//} -// -//// ListNonFinalTaskRunByTaskID 按TaskID获取非终态TaskRun -//func (v *TaskRunRepoImpl) ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) { -// // 先尝试从按Task分组的缓存中获取,然后过滤非终态 -// cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) -// if err != nil { -// logs.CtxWarn(ctx, "failed to get taskrun list by task from redis cache", "taskID", taskID, "err", err) -// } else if cachedTaskRuns != nil { -// // 过滤出非终态TaskRun -// var nonFinalTaskRuns []*entity.TaskRun -// for _, tr := range cachedTaskRuns { -// if isNonFinalStatus(tr.RunStatus) { -// nonFinalTaskRuns = append(nonFinalTaskRuns, tr) -// } -// } -// return nonFinalTaskRuns, nil -// } -// -// // 缓存未命中,查询数据库 -// results, err := v.TaskRunDao.ListNonFinalTaskRunByTaskID(ctx, taskID) -// if err != nil { -// return nil, err -// } -// -// resp := make([]*entity.TaskRun, len(results)) -// for i, result := range results { -// resp[i] = convertor.TaskRunPO2DO(result) -// } -// -// return resp, nil -//} -// -//// ListNonFinalTaskRunBySpaceID 按空间ID获取非终态TaskRun -//func (v *TaskRunRepoImpl) ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID string) []*entity.TaskRun { -// // 缓存未命中,查询数据库 -// spaceIDInt, _ := strconv.ParseInt(spaceID, 10, 64) -// results, err := v.TaskRunDao.ListNonFinalTaskRunBySpaceID(ctx, spaceIDInt) -// if err != nil { -// logs.CtxError(ctx, "failed to get non final taskrun by space id", "spaceID", spaceID, "err", err) -// return nil -// } -// resp := make([]*entity.TaskRun, len(results)) -// for i, result := range results { -// resp[i] = convertor.TaskRunPO2DO(result) -// } -// return resp -//} -// -//// UpdateTaskRunWithOCC 乐观并发控制更新 -//func (v *TaskRunRepoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { -// // 先执行数据库操作 -// logs.CtxInfo(ctx, "UpdateTaskRunWithOCC", "id", id, "workspaceID", workspaceID, "updateMap", updateMap) -// err := v.TaskRunDao.UpdateTaskRunWithOCC(ctx, id, workspaceID, updateMap) -// if err != nil { -// return err -// } -// -// // 数据库操作成功后,删除缓存(因为无法直接更新部分字段) -// go func() { -// // 删除单个TaskRun缓存,下次查询时会重新加载 -// if err := v.TaskRunRedisDao.DeleteTaskRun(context.Background(), id); err != nil { -// logs.Error("failed to delete taskrun cache after OCC update", "id", id, "err", err) -// } -// -// // 清理相关列表缓存 -// v.clearTaskRunListCaches(context.Background(), workspaceID, 0) -// -// // 清理非最终状态TaskRun缓存(状态可能发生变化) -// if err := v.TaskRunRedisDao.DeleteNonFinalTaskRunList(context.Background()); err != nil { -// logs.Error("failed to delete non final taskrun list cache after OCC update", "err", err) -// } -// }() -// -// return nil -//} -// -//// GetObjListWithTaskRun 获取有TaskRun的对象列表 -//func (v *TaskRunRepoImpl) GetObjListWithTaskRun(ctx context.Context) ([]string, []string) { -// // 先查 Redis 缓存 -// spaceList, botList, err := v.TaskRunRedisDao.GetObjListWithTaskRun(ctx) -// if err != nil { -// logs.CtxWarn(ctx, "failed to get obj list with taskrun from redis cache", "err", err) -// } else if spaceList != nil || botList != nil { -// return spaceList, botList -// } -// -// // 缓存未命中,查询数据库 -// spaceList, botList, err = v.TaskRunDao.GetObjListWithTaskRun(ctx) -// if err != nil { -// logs.CtxWarn(ctx, "failed to get obj list with taskrun from mysql", "err", err) -// return nil, nil -// } -// -// // 异步缓存结果 -// go func() { -// if err := v.TaskRunRedisDao.SetObjListWithTaskRun(context.Background(), spaceList, botList, ObjListWithTaskRunTTL); err != nil { -// logs.Error("failed to set obj list with taskrun cache", "err", err) -// } -// }() -// -// return spaceList, botList -//} -// -//// ListActiveTaskRunsByTask 获取Task的活跃TaskRun列表 -//func (v *TaskRunRepoImpl) ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) { -// // 先查缓存 -// cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) -// if err != nil { -// logs.CtxWarn(ctx, "failed to get taskrun list by task from redis", "taskID", taskID, "err", err) -// } else if cachedTaskRuns != nil { -// // 过滤出活跃状态的TaskRun -// var activeTaskRuns []*entity.TaskRun -// for _, tr := range cachedTaskRuns { -// if isActiveStatus(tr.RunStatus) { -// activeTaskRuns = append(activeTaskRuns, tr) -// } -// } -// return activeTaskRuns, nil -// } -// -// // 缓存未命中,查询数据库 -// results, err := v.TaskRunDao.ListActiveTaskRunsByTask(ctx, taskID) -// if err != nil { -// return nil, err -// } -// -// resp := make([]*entity.TaskRun, len(results)) -// for i, result := range results { -// resp[i] = convertor.TaskRunPO2DO(result) -// } -// -// // 异步缓存 -// go func() { -// if err := v.TaskRunRedisDao.SetTaskRunListByTask(context.Background(), taskID, resp, TaskRunListByTaskTTL); err != nil { -// logs.Error("failed to set taskrun list by task cache", "taskID", taskID, "err", err) -// } -// }() -// -// return resp, nil -//} -// -//// GetLatestTaskRunByTask 获取Task的最新TaskRun -//func (v *TaskRunRepoImpl) GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*entity.TaskRun, error) { -// // 先查缓存 -// cachedTaskRuns, err := v.TaskRunRedisDao.GetTaskRunListByTask(ctx, taskID) -// if err != nil { -// logs.CtxWarn(ctx, "failed to get taskrun list by task from redis", "taskID", taskID, "err", err) -// } else if cachedTaskRuns != nil && len(cachedTaskRuns) > 0 { -// // 缓存中的TaskRun列表应该已经按创建时间排序,返回第一个 -// return cachedTaskRuns[0], nil -// } -// -// // 缓存未命中,查询数据库 -// result, err := v.TaskRunDao.GetLatestTaskRunByTask(ctx, taskID) -// if err != nil { -// return nil, err -// } -// if result == nil { -// return nil, nil -// } -// -// taskRunDO := convertor.TaskRunPO2DO(result) -// return taskRunDO, nil -//} -// -//// ListTaskRunsByStatus 按状态获取TaskRun列表 -//func (v *TaskRunRepoImpl) ListTaskRunsByStatus(ctx context.Context, status string) ([]*entity.TaskRun, error) { -// // 直接查询数据库,不缓存(状态查询通常是临时性的) -// results, err := v.TaskRunDao.ListTaskRunsByStatus(ctx, status) -// if err != nil { -// return nil, err -// } -// -// resp := make([]*entity.TaskRun, len(results)) -// for i, result := range results { -// resp[i] = convertor.TaskRunPO2DO(result) -// } -// -// return resp, nil -//} -// -//// GetTaskRunCount 获取TaskRun计数 -//func (v *TaskRunRepoImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { -// // 先查 Redis 缓存 -// count, err := v.TaskRunRedisDao.GetTaskRunCount(ctx, taskID, taskRunID) -// if err != nil { -// logs.CtxWarn(ctx, "failed to get taskrun count from redis cache", "taskID", taskID, "taskRunID", taskRunID, "err", err) -// } else if count != -1 { -// return count, nil -// } -// -// // 缓存未命中,这里可以根据业务需求实现具体的计数逻辑 -// // 目前返回0,实际使用时需要根据业务需求实现 -// return 0, nil -//} -// -//// clearTaskRunListCaches 清理与指定 workspace 和 task 相关的列表缓存 -//func (v *TaskRunRepoImpl) clearTaskRunListCaches(ctx context.Context, workspaceID, taskID int64) { -// // 清理非终态TaskRun列表缓存 -// if err := v.TaskRunRedisDao.DeleteNonFinalTaskRunList(ctx); err != nil { -// logs.Error("failed to delete non final taskrun list cache", "err", err) -// } -// -// // 清理按Task分组的TaskRun列表缓存 -// if taskID > 0 { -// if err := v.TaskRunRedisDao.DeleteTaskRunListByTask(ctx, taskID); err != nil { -// logs.Error("failed to delete taskrun list by task cache", "taskID", taskID, "err", err) -// } -// } -// -// // 清理对象列表缓存 -// if err := v.TaskRunRedisDao.DeleteObjListWithTaskRun(ctx); err != nil { -// logs.Error("failed to delete obj list with taskrun cache", "err", err) -// } -//} -// -//// isNonFinalStatus 检查是否为非终态状态 -//func isNonFinalStatus(status string) bool { -// nonFinalStatuses := []string{"pending", "running", "paused", "retrying"} -// for _, s := range nonFinalStatuses { -// if status == s { -// return true -// } -// } -// return false -//} -// -//// isActiveStatus 检查是否为活跃状态 -//func isActiveStatus(status string) bool { -// activeStatuses := []string{"running", "retrying"} -// for _, s := range activeStatuses { -// if status == s { -// return true -// } -// } -// return false -//} From cd1ac5b4982e24482704cef5b2c0f8a2d8b99595 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Thu, 9 Oct 2025 21:24:04 +0800 Subject: [PATCH 407/462] fix taskCache --- .../service/taskexe/tracehub/scheduled_task.go | 11 ----------- .../task/service/taskexe/tracehub/trace_hub.go | 15 +++++---------- backend/modules/observability/infra/repo/task.go | 14 ++++---------- 3 files changed, 9 insertions(+), 31 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index d3e912e78..02bfe4992 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -444,14 +444,3 @@ func (h *TraceHubServiceImpl) syncTaskCache() { logs.CtxInfo(ctx, "任务缓存同步完成", "taskCount", len(tasks), "updateTime", newCache.UpdateTime.Format(time.RFC3339)) } - -// getCachedTask 从缓存中获取任务信息 -func (h *TraceHubServiceImpl) getCached() (*TaskCacheInfo, bool) { - cacheKey := "ObjListWithTask" - if value, ok := h.taskCache.Load(cacheKey); ok { - if cacheInfo, ok := value.(*TaskCacheInfo); ok { - return cacheInfo, true - } - } - return nil, false -} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 24f241af9..13fef808f 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -119,22 +119,17 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS return nil } logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) - taskCacheInfo, ok := h.getCached() - if !ok { - tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_task"}) - logs.CtxInfo(ctx, "no task found for span, %s", logSuffix) - return nil - } - - logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", taskCacheInfo.WorkspaceIDs, taskCacheInfo.BotIDs, taskCacheInfo.Tasks) // 1.2 Filter out spans that do not belong to any space or bot - if !gslice.Contains(taskCacheInfo.WorkspaceIDs, span.WorkspaceID) && !gslice.Contains(taskCacheInfo.BotIDs, span.TagsString["bot_id"]) { + spaceIDs, botIDs, tasks := h.getObjListWithTaskFromCache(ctx) + + logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", spaceIDs, botIDs, tasks) + if !gslice.Contains(spaceIDs, span.WorkspaceID) && !gslice.Contains(botIDs, span.TagsString["bot_id"]) { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) logs.CtxInfo(ctx, "no space found for span, %s", logSuffix) return nil } // 2、Match spans against task rules - subs, err := h.getSubscriberOfSpan(ctx, span, taskCacheInfo.Tasks) + subs, err := h.getSubscriberOfSpan(ctx, span, tasks) if err != nil { logs.CtxWarn(ctx, "get subscriber of flow span failed, %s, err: %v", logSuffix, err) } diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index d63da5d85..319442300 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -260,16 +260,10 @@ func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspac } func (v *TaskRepoImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, []*entity.ObservabilityTask) { var tasks []*entity.ObservabilityTask - // 先查 Redis 缓存 - spaceList, botList, results, err := v.TaskRedisDao.GetObjListWithTask(ctx) - if err != nil || len(results) == 0 { - logs.CtxWarn(ctx, "failed to get obj list with task from redis cache", "err", err) - // Redis失败时从MySQL获取 - spaceList, botList, results, err = v.TaskDao.GetObjListWithTask(ctx) - if err != nil { - logs.CtxWarn(ctx, "failed to get obj list with task from mysql", "err", err) - return nil, nil, nil - } + spaceList, botList, results, err := v.TaskDao.GetObjListWithTask(ctx) + if err != nil { + logs.CtxWarn(ctx, "failed to get obj list with task from mysql", "err", err) + return nil, nil, nil } tasks = make([]*entity.ObservabilityTask, len(results)) for i, result := range results { From 9f90c41ffc7138dbd36b7e86fe1f2b77fad95eb5 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Fri, 10 Oct 2025 11:17:12 +0800 Subject: [PATCH 408/462] fix log --- .../task/service/taskexe/processor/auto_evaluate.go | 8 ++------ .../domain/task/service/taskexe/processor/noop.go | 2 +- .../domain/task/service/taskexe/tracehub/backfill.go | 2 +- .../domain/task/service/taskexe/tracehub/subscriber.go | 4 ++-- .../observability/domain/task/service/taskexe/types.go | 10 +++++----- .../modules/observability/infra/repo/redis/dao/task.go | 3 ++- 6 files changed, 13 insertions(+), 16 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index ee4bb1952..9fdfe9fd6 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -95,12 +95,8 @@ func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any) e return nil } -func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { - cfg, ok := config.(*task_entity.TaskRun) - if !ok { - return taskexe.ErrInvalidConfig - } - taskRun := tconv.TaskRunPO2DTO(ctx, cfg, nil) +func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, trigger *taskexe.Trigger) error { + taskRun := tconv.TaskRunPO2DTO(ctx, trigger.TaskRun, nil) workspaceID := trigger.Task.GetWorkspaceID() session := p.getSession(ctx, trigger.Task) var mapping []*task.EvaluateFieldMapping diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/noop.go b/backend/modules/observability/domain/task/service/taskexe/processor/noop.go index aab1e8752..06e01bf39 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/noop.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/noop.go @@ -23,7 +23,7 @@ func (p *NoopTaskProcessor) ValidateConfig(ctx context.Context, config any) erro return nil } -func (p *NoopTaskProcessor) Invoke(ctx context.Context, config any, trigger *taskexe.Trigger) error { +func (p *NoopTaskProcessor) Invoke(ctx context.Context, trigger *taskexe.Trigger) error { return nil } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 7cf140417..aeab6272d 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -460,7 +460,7 @@ func (h *TraceHubServiceImpl) processSpan(ctx context.Context, span *loop_span.S TaskRun: tconv.TaskRunDO2PO(ctx, sub.tr, nil), IsFinish: true, }); err != nil { - logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) + logs.CtxWarn(ctx, "taskCount+1 > sampler.GetSampleSize(), task_id=%d", sub.taskID) return err } } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go index 849f3c753..20427d0d1 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go @@ -191,9 +191,9 @@ func (s *spanSubscriber) AddSpan(ctx context.Context, span *loop_span.Span) erro logs.CtxWarn(ctx, "span start time is before task cycle start time, trace_id=%s, span_id=%s", span.TraceID, span.SpanID) return nil } - trigger := &taskexe.Trigger{Task: s.t, Span: span} + trigger := &taskexe.Trigger{Task: s.t, Span: span, TaskRun: taskRunConfig} logs.CtxInfo(ctx, "invoke processor, trigger: %v", trigger) - err = s.processor.Invoke(ctx, taskRunConfig, trigger) + err = s.processor.Invoke(ctx, trigger) if err != nil { logs.CtxWarn(ctx, "invoke processor failed, trace_id=%s, span_id=%s, err: %v", span.TraceID, span.SpanID, err) return err diff --git a/backend/modules/observability/domain/task/service/taskexe/types.go b/backend/modules/observability/domain/task/service/taskexe/types.go index 7bd18051e..3bea48ce9 100644 --- a/backend/modules/observability/domain/task/service/taskexe/types.go +++ b/backend/modules/observability/domain/task/service/taskexe/types.go @@ -13,9 +13,9 @@ import ( ) type Trigger struct { - Task *task.Task - Span *loop_span.Span - IsFinish bool + Task *task.Task + Span *loop_span.Span + TaskRun *task_entity.TaskRun } var ( @@ -40,8 +40,8 @@ type OnFinishTaskChangeReq struct { } type Processor interface { - ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 - Invoke(ctx context.Context, config any, trigger *Trigger) error // 根据不同类型进行执行,如rpc回调、mq投递等 + ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 + Invoke(ctx context.Context, trigger *Trigger) error // 根据不同类型进行执行,如rpc回调、mq投递等 OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 53cc161ee..7c2c55640 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -577,13 +577,14 @@ func (p *TaskDAOImpl) DeleteAppListWithTask(ctx context.Context) error { func (p *TaskDAOImpl) IncrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) { key := p.makeTaskCountCacheKey(taskID) result, err := p.cmdable.Incr(ctx, key).Result() + logs.CtxInfo(ctx, "redis incr task count success", "key", key, "result", result) if err != nil { logs.CtxError(ctx, "redis incr task count failed", "key", key, "err", err) return 0, errorx.Wrapf(err, "redis incr task count key: %v", key) } // 设置TTL - if err := p.cmdable.Expire(ctx, key, ttl).Err(); err != nil { + if err = p.cmdable.Expire(ctx, key, ttl).Err(); err != nil { logs.CtxWarn(ctx, "failed to set TTL for task count", "key", key, "err", err) } From 82632f630f39165f0a42993abc4f911fe554526d Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Fri, 10 Oct 2025 11:41:24 +0800 Subject: [PATCH 409/462] add debug log --- backend/modules/observability/infra/repo/redis/dao/task.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 7c2c55640..21971cf61 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -577,7 +577,7 @@ func (p *TaskDAOImpl) DeleteAppListWithTask(ctx context.Context) error { func (p *TaskDAOImpl) IncrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) { key := p.makeTaskCountCacheKey(taskID) result, err := p.cmdable.Incr(ctx, key).Result() - logs.CtxInfo(ctx, "redis incr task count success", "key", key, "result", result) + logs.CtxInfo(ctx, "redis incr task count success, taskID: %v, key: %v, result: %v", taskID, key, result) if err != nil { logs.CtxError(ctx, "redis incr task count failed", "key", key, "err", err) return 0, errorx.Wrapf(err, "redis incr task count key: %v", key) From cc0f6bff07f2ffed40d1f14e7c7598ebc4343f30 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Fri, 10 Oct 2025 16:27:11 +0800 Subject: [PATCH 410/462] fix env --- .../domain/task/service/taskexe/tracehub/utils.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index c621a98c0..ef2b03bff 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -5,8 +5,8 @@ package tracehub import ( "context" - "os" + "github.com/bytedance/gopkg/cloud/metainfo" "github.com/bytedance/sonic" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -30,9 +30,13 @@ func ToJSONString(ctx context.Context, obj interface{}) string { } func fillCtxWithEnv(ctx context.Context) context.Context { - if env := os.Getenv(XttEnv); env != "" { + ctx = context.WithValue(ctx, CtxKeyEnv, "boe_auto_task") + if env, ok := metainfo.GetPersistentValue(ctx, XttEnv); ok { ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 } - ctx = context.WithValue(ctx, "K_ENV", "boe_auto_task") + //if env := os.Getenv(XttEnv); env != "" { + // ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 + //} + return ctx } From b4270fc1ced3be8f7490a146284dfb1a2bff1f1d Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Fri, 10 Oct 2025 17:20:11 +0800 Subject: [PATCH 411/462] fix env --- .../domain/task/service/taskexe/tracehub/utils.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index ef2b03bff..8ce8cbed4 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -5,8 +5,8 @@ package tracehub import ( "context" + "os" - "github.com/bytedance/gopkg/cloud/metainfo" "github.com/bytedance/sonic" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -31,12 +31,8 @@ func ToJSONString(ctx context.Context, obj interface{}) string { func fillCtxWithEnv(ctx context.Context) context.Context { ctx = context.WithValue(ctx, CtxKeyEnv, "boe_auto_task") - if env, ok := metainfo.GetPersistentValue(ctx, XttEnv); ok { + if env := os.Getenv(XttEnv); env != "" { ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 } - //if env := os.Getenv(XttEnv); env != "" { - // ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 - //} - return ctx } From 578427da74ab40bef8d3f118fc9508f719d45f5f Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Fri, 10 Oct 2025 17:25:26 +0800 Subject: [PATCH 412/462] fix env --- .../domain/task/service/taskexe/tracehub/utils.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index 8ce8cbed4..445f2af9a 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -30,9 +30,13 @@ func ToJSONString(ctx context.Context, obj interface{}) string { } func fillCtxWithEnv(ctx context.Context) context.Context { - ctx = context.WithValue(ctx, CtxKeyEnv, "boe_auto_task") - if env := os.Getenv(XttEnv); env != "" { - ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 + if os.Getenv("TCE_HOST_ENV") == "boe" { + ctx = context.WithValue(ctx, CtxKeyEnv, "boe_auto_task") + } else { + ctx = context.WithValue(ctx, CtxKeyEnv, "ppe_auto_task") } + //if env := os.Getenv(XttEnv); env != "" { + // ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 + //} return ctx } From 97784b842152594234d6b5c9590bae21c72d27e9 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Fri, 10 Oct 2025 18:02:00 +0800 Subject: [PATCH 413/462] fix --- .../domain/task/service/taskexe/processor/auto_evaluate.go | 4 ++-- .../domain/task/service/taskexe/tracehub/callback.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 9fdfe9fd6..fae1d4888 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -109,10 +109,10 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, trigger *taskexe.Trig return nil } taskTTL := trigger.Task.GetRule().GetEffectiveTime().GetEndAt() - trigger.Task.GetRule().GetEffectiveTime().GetStartAt() - taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) - taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) p.taskRepo.IncrTaskCount(ctx, *trigger.Task.ID, taskTTL) p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID, taskTTL) + taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) + taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go index c595fbf4a..afd08a602 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go @@ -47,7 +47,7 @@ func (h *TraceHubServiceImpl) CallBack(ctx context.Context, event *entity.AutoEv turn.GetTraceIDFromExt(), workspaceIDStr, turn.GetStartTimeFromExt()/1000-(24*time.Duration(storageDuration)*time.Hour).Milliseconds(), - turn.GetStartTimeFromExt()/1000+5*time.Second.Milliseconds(), + turn.GetStartTimeFromExt()/1000+10*time.Minute.Milliseconds(), ) if len(spans) == 0 { return fmt.Errorf("span not found, span_id: %s", turn.GetSpanIDFromExt()) From 7c2571fb171f08ea4368a30040ab70e6bdbc658f Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Fri, 10 Oct 2025 20:01:55 +0800 Subject: [PATCH 414/462] delete useless code --- .../domain/task/service/taskexe/tracehub/scheduled_task.go | 5 +---- .../domain/task/service/taskexe/tracehub/trace_hub.go | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 02bfe4992..797ee337e 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -434,10 +434,7 @@ func (h *TraceHubServiceImpl) syncTaskCache() { defer h.taskCacheLock.Unlock() // 清空旧缓存 - h.taskCache.Range(func(key, value interface{}) bool { - h.taskCache.Delete(key) - return true - }) + h.taskCache.Delete("ObjListWithTask") // 4. 将新缓存写入本地缓存 h.taskCache.Store("ObjListWithTask", &newCache) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 13fef808f..63eb2cd4a 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -374,6 +374,6 @@ func (h *TraceHubServiceImpl) getObjListWithTaskFromCache(ctx context.Context) ( return h.taskRepo.GetObjListWithTask(ctx) } - logs.CtxInfo(ctx, "从缓存获取任务列表", "taskCount", len(cacheInfo.Tasks), "spaceCount", len(cacheInfo.WorkspaceIDs), "botCount", len(cacheInfo.BotIDs)) + logs.CtxInfo(ctx, "从缓存获取任务列表, taskCount=%d, spaceCount=%d, botCount=%d", len(cacheInfo.Tasks), len(cacheInfo.WorkspaceIDs), len(cacheInfo.BotIDs)) return cacheInfo.WorkspaceIDs, cacheInfo.BotIDs, cacheInfo.Tasks } From cf6ea441aee97a9e9eb310bfef324ade47b42d33 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 11:23:24 +0800 Subject: [PATCH 415/462] delete useless code --- .../observability/domain/task/repo/task.go | 5 - .../observability/infra/repo/mysql/task.go | 27 -- .../infra/repo/mysql/task_run.go | 135 ------ .../infra/repo/redis/dao/task.go | 433 ------------------ .../infra/repo/redis/dao/task_run.go | 277 ----------- .../modules/observability/infra/repo/task.go | 247 +--------- 6 files changed, 13 insertions(+), 1111 deletions(-) diff --git a/backend/modules/observability/domain/task/repo/task.go b/backend/modules/observability/domain/task/repo/task.go index 329ca37f6..c2a4988d9 100644 --- a/backend/modules/observability/domain/task/repo/task.go +++ b/backend/modules/observability/domain/task/repo/task.go @@ -24,8 +24,6 @@ type ITaskRepo interface { CreateTaskRun(ctx context.Context, do *entity.TaskRun) (int64, error) UpdateTaskRun(ctx context.Context, do *entity.TaskRun) error UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error - GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.TaskRun, error) - ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) @@ -46,8 +44,5 @@ type ITaskRepo interface { IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) - // - ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) GetObjListWithTask(ctx context.Context) ([]string, []string, []*entity.ObservabilityTask) - ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask } diff --git a/backend/modules/observability/infra/repo/mysql/task.go b/backend/modules/observability/infra/repo/mysql/task.go index e863692b8..9274a2efd 100644 --- a/backend/modules/observability/infra/repo/mysql/task.go +++ b/backend/modules/observability/infra/repo/mysql/task.go @@ -45,10 +45,8 @@ type ITaskDao interface { UpdateTask(ctx context.Context, po *model.ObservabilityTask) error DeleteTask(ctx context.Context, id int64, workspaceID int64, userID string) error ListTasks(ctx context.Context, param ListTaskParam) ([]*model.ObservabilityTask, int64, error) - ListNonFinalTask(ctx context.Context) ([]*model.ObservabilityTask, error) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error GetObjListWithTask(ctx context.Context) ([]string, []string, []*model.ObservabilityTask, error) - ListNonFinalTaskBySpaceID(ctx context.Context, workspaceID int64) ([]*model.ObservabilityTask, error) } func NewTaskDaoImpl(db db.Provider) ITaskDao { @@ -347,31 +345,6 @@ func (d *TaskDaoImpl) order(q *query.Query, orderBy string, asc bool) field.Expr return orderExpr.Desc() } -func (v *TaskDaoImpl) ListNonFinalTask(ctx context.Context) ([]*model.ObservabilityTask, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)) - qd := q.WithContext(ctx).ObservabilityTask - qd = qd.Where(q.ObservabilityTask.TaskStatus.NotIn("success", "disabled")) - - results, err := qd.Limit(500).Find() - if err != nil { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return results, nil -} - -func (v *TaskDaoImpl) ListNonFinalTaskBySpaceID(ctx context.Context, workspaceID int64) ([]*model.ObservabilityTask, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)) - qd := q.WithContext(ctx).ObservabilityTask - qd = qd.Where(q.ObservabilityTask.WorkspaceID.Eq(workspaceID)) - qd = qd.Where(q.ObservabilityTask.TaskStatus.NotIn("success", "disabled")) - - results, err := qd.Limit(500).Find() - if err != nil { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return results, nil -} - func (v *TaskDaoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { //todo[xun]: 乐观锁 logs.CtxInfo(ctx, "UpdateTaskWithOCC, id:%d, workspaceID:%d, updateMap:%+v", id, workspaceID, updateMap) diff --git a/backend/modules/observability/infra/repo/mysql/task_run.go b/backend/modules/observability/infra/repo/mysql/task_run.go index 8fdcf1de2..24f6ed3a0 100755 --- a/backend/modules/observability/infra/repo/mysql/task_run.go +++ b/backend/modules/observability/infra/repo/mysql/task_run.go @@ -39,23 +39,12 @@ type ListTaskRunParam struct { //go:generate mockgen -destination=mocks/task_run.go -package=mocks . ITaskRunDao type ITaskRunDao interface { // 基础CRUD操作 - GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*model.ObservabilityTaskRun, error) GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*model.ObservabilityTaskRun, error) GetLatestNewDataTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*model.ObservabilityTaskRun, error) CreateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) (int64, error) UpdateTaskRun(ctx context.Context, po *model.ObservabilityTaskRun) error - DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error ListTaskRuns(ctx context.Context, param ListTaskRunParam) ([]*model.ObservabilityTaskRun, int64, error) - - // 业务特定方法 - ListNonFinalTaskRun(ctx context.Context) ([]*model.ObservabilityTaskRun, error) - ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) - ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID int64) ([]*model.ObservabilityTaskRun, error) UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error - GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) - ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) - GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*model.ObservabilityTaskRun, error) - ListTaskRunsByStatus(ctx context.Context, status string) ([]*model.ObservabilityTaskRun, error) } func NewTaskRunDaoImpl(db db.Provider) ITaskRunDao { @@ -97,25 +86,6 @@ func calculateTaskRunPagination(reqLimit, reqOffset int32) (int, int) { return limit, offset } -func (v *TaskRunDaoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, taskID *int64) (*model.ObservabilityTaskRun, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - qd := q.WithContext(ctx).Where(q.ID.Eq(id)) - if workspaceID != nil { - qd = qd.Where(q.WorkspaceID.Eq(*workspaceID)) - } - if taskID != nil { - qd = qd.Where(q.TaskID.Eq(*taskID)) - } - taskRunPo, err := qd.First() - if err != nil { - if errors.Is(err, gorm.ErrRecordNotFound) { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("TaskRun not found")) - } else { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - } - return taskRunPo, nil -} func (v *TaskRunDaoImpl) GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*model.ObservabilityTaskRun, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun qd := q.WithContext(ctx).Where(q.TaskType.Eq(task.TaskRunTypeBackFill)).Where(q.TaskID.Eq(taskID)) @@ -175,19 +145,6 @@ func (v *TaskRunDaoImpl) UpdateTaskRun(ctx context.Context, po *model.Observabil } } -func (v *TaskRunDaoImpl) DeleteTaskRun(ctx context.Context, id int64, workspaceID int64, userID string) error { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - // 注意:TaskRun模型中没有CreatedBy字段,只能按ID和WorkspaceID过滤 - qd := q.WithContext(ctx).Where(q.ID.Eq(id)).Where(q.WorkspaceID.Eq(workspaceID)) - // userID参数暂时忽略,因为TaskRun模型中没有CreatedBy字段 - info, err := qd.Delete() - if err != nil { - return errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - logs.CtxInfo(ctx, "%d rows deleted", info.RowsAffected) - return nil -} - func (v *TaskRunDaoImpl) ListTaskRuns(ctx context.Context, param ListTaskRunParam) ([]*model.ObservabilityTaskRun, int64, error) { q := genquery.Use(v.dbMgr.NewSession(ctx)) qd := q.WithContext(ctx).ObservabilityTaskRun @@ -244,42 +201,6 @@ func (d *TaskRunDaoImpl) order(q *query.Query, orderBy string, asc bool) field.E return orderExpr.Desc() } -// ListNonFinalTaskRun 获取非终态TaskRun列表 -func (v *TaskRunDaoImpl) ListNonFinalTaskRun(ctx context.Context) ([]*model.ObservabilityTaskRun, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - qd := q.WithContext(ctx).Where(q.RunStatus.In(NonFinalTaskRunStatuses...)) - - results, err := qd.Find() - if err != nil { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return results, nil -} - -// ListNonFinalTaskRunByTaskID 按TaskID获取非终态TaskRun -func (v *TaskRunDaoImpl) ListNonFinalTaskRunByTaskID(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - qd := q.WithContext(ctx).Where(q.TaskID.Eq(taskID)).Where(q.RunStatus.In(NonFinalTaskRunStatuses...)) - - results, err := qd.Find() - if err != nil { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return results, nil -} - -// ListNonFinalTaskRunBySpaceID 按空间ID获取非终态TaskRun -func (v *TaskRunDaoImpl) ListNonFinalTaskRunBySpaceID(ctx context.Context, spaceID int64) ([]*model.ObservabilityTaskRun, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - qd := q.WithContext(ctx).Where(q.WorkspaceID.Eq(spaceID)).Where(q.RunStatus.In(NonFinalTaskRunStatuses...)) - - results, err := qd.Find() - if err != nil { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return results, nil -} - // UpdateTaskRunWithOCC 乐观并发控制更新 func (v *TaskRunDaoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun @@ -297,59 +218,3 @@ func (v *TaskRunDaoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, wor logs.CtxInfo(ctx, "TaskRun updated with OCC", "id", id, "workspaceID", workspaceID, "rowsAffected", info.RowsAffected) return nil } - -// GetObjListWithTaskRun 获取有TaskRun的对象列表 -func (v *TaskRunDaoImpl) GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - - // 获取不重复的WorkspaceID列表 - var spaceList []string - err := q.WithContext(ctx).Select(q.WorkspaceID).Distinct().Scan(&spaceList) - if err != nil { - return nil, nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - - // TaskRun表中没有bot相关字段,返回空的bot列表 - var botList []string - - return spaceList, botList, nil -} - -// ListActiveTaskRunsByTask 获取Task的活跃TaskRun列表 -func (v *TaskRunDaoImpl) ListActiveTaskRunsByTask(ctx context.Context, taskID int64) ([]*model.ObservabilityTaskRun, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - qd := q.WithContext(ctx).Where(q.TaskID.Eq(taskID)).Where(q.RunStatus.In(ActiveTaskRunStatuses...)) - - results, err := qd.Order(q.CreatedAt.Desc()).Find() - if err != nil { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return results, nil -} - -// GetLatestTaskRunByTask 获取Task的最新TaskRun -func (v *TaskRunDaoImpl) GetLatestTaskRunByTask(ctx context.Context, taskID int64) (*model.ObservabilityTaskRun, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - qd := q.WithContext(ctx).Where(q.TaskID.Eq(taskID)).Order(q.CreatedAt.Desc()) - - taskRun, err := qd.First() - if err != nil { - if errors.Is(err, gorm.ErrRecordNotFound) { - return nil, nil // 没有找到TaskRun,返回nil而不是错误 - } - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return taskRun, nil -} - -// ListTaskRunsByStatus 按状态获取TaskRun列表 -func (v *TaskRunDaoImpl) ListTaskRunsByStatus(ctx context.Context, status string) ([]*model.ObservabilityTaskRun, error) { - q := genquery.Use(v.dbMgr.NewSession(ctx)).ObservabilityTaskRun - qd := q.WithContext(ctx).Where(q.RunStatus.Eq(status)) - - results, err := qd.Order(q.CreatedAt.Desc()).Find() - if err != nil { - return nil, errorx.WrapByCode(err, obErrorx.CommonMySqlErrorCode) - } - return results, nil -} diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 21971cf61..d42af25cc 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -13,7 +13,6 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/redis" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" - "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql/gorm_gen/model" "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/convert" "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/json" @@ -28,53 +27,17 @@ type ITaskDAO interface { SetTask(ctx context.Context, task *entity.ObservabilityTask, ttl time.Duration) error // TaskList相关 - GetTaskList(ctx context.Context, key string) ([]*entity.ObservabilityTask, int64, error) - SetTaskList(ctx context.Context, key string, tasks []*entity.ObservabilityTask, total int64, ttl time.Duration) error DeleteTaskList(ctx context.Context, pattern string) error - // NonFinalTaskList相关 - GetNonFinalTaskList(ctx context.Context) ([]*entity.ObservabilityTask, error) - SetNonFinalTaskList(ctx context.Context, tasks []*entity.ObservabilityTask, ttl time.Duration) error - DeleteNonFinalTaskList(ctx context.Context) error - AddNonFinalTask(ctx context.Context, task *entity.ObservabilityTask) error - RemoveNonFinalTask(ctx context.Context, taskID int64) error - // TaskCount相关 GetTaskCount(ctx context.Context, taskID int64) (int64, error) - SetTaskCount(ctx context.Context, taskID int64, count int64, ttl time.Duration) error - DeleteTaskCount(ctx context.Context, taskID int64) error IncrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) DecrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) // TaskRunCount相关 GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) - SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error - DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl time.Duration) (int64, error) DecrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl time.Duration) (int64, error) - - // GetObjListWithTask 获取包含任务的空间列表缓存 - GetObjListWithTask(ctx context.Context) ([]string, []string, []*model.ObservabilityTask, error) - - // SpaceListWithTask相关 - GetSpaceListWithTask(ctx context.Context) ([]string, error) - SetSpaceListWithTask(ctx context.Context, spaces []string, ttl time.Duration) error - DeleteSpaceListWithTask(ctx context.Context) error - - // BotListWithTask相关 - GetBotListWithTask(ctx context.Context) ([]string, error) - SetBotListWithTask(ctx context.Context, bots []string, ttl time.Duration) error - DeleteBotListWithTask(ctx context.Context) error - - // WorkflowListWithTask相关 - GetWorkflowListWithTask(ctx context.Context) ([]string, error) - SetWorkflowListWithTask(ctx context.Context, workflows []string, ttl time.Duration) error - DeleteWorkflowListWithTask(ctx context.Context) error - - // AppListWithTask相关 - GetAppListWithTask(ctx context.Context) ([]string, error) - SetAppListWithTask(ctx context.Context, apps []string, ttl time.Duration) error - DeleteAppListWithTask(ctx context.Context) error } type TaskDAOImpl struct { @@ -91,24 +54,6 @@ func NewTaskDAO(cmdable redis.Cmdable) ITaskDAO { func (q *TaskDAOImpl) makeTaskConfigKey(taskID int64) string { return fmt.Sprintf("task_config_%d", taskID) } - -func (q *TaskDAOImpl) makeNonFinalTaskListKey() string { - return "task:list:non_final" -} - -func (q *TaskDAOImpl) makeSpaceListWithTaskKey() string { - return "space:list:with_task" -} -func (q *TaskDAOImpl) makeBotListWithTaskKey() string { - return "bot:list:with_task" -} -func (q *TaskDAOImpl) makeWorkflowListWithTaskKey() string { - return "workflow:list:with_task" -} -func (q *TaskDAOImpl) makeAppListWithTaskKey() string { - return "app:list:with_task" -} - func (q *TaskDAOImpl) makeTaskCountCacheKey(taskID int64) string { return fmt.Sprintf("count_%d", taskID) } @@ -161,51 +106,6 @@ func (p *TaskDAOImpl) SetTask(ctx context.Context, task *entity.ObservabilityTas return nil } -// TaskListCache 任务列表缓存结构 -type TaskListCache struct { - Items []*entity.ObservabilityTask `json:"items"` - Total int64 `json:"total"` - CachedAt time.Time `json:"cached_at"` -} - -// GetTaskList 获取任务列表缓存 -func (p *TaskDAOImpl) GetTaskList(ctx context.Context, key string) ([]*entity.ObservabilityTask, int64, error) { - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, 0, nil // 缓存未命中 - } - return nil, 0, errorx.Wrapf(err, "redis get task list fail, key: %v", key) - } - - var cache TaskListCache - if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &cache); err != nil { - return nil, 0, errorx.Wrapf(err, "unmarshal task list cache failed") - } - - return cache.Items, cache.Total, nil -} - -// SetTaskList 设置任务列表缓存 -func (p *TaskDAOImpl) SetTaskList(ctx context.Context, key string, tasks []*entity.ObservabilityTask, total int64, ttl time.Duration) error { - cache := TaskListCache{ - Items: tasks, - Total: total, - CachedAt: time.Now(), - } - - bytes, err := json.Marshal(cache) - if err != nil { - return errorx.Wrapf(err, "marshal task list cache failed") - } - - if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set task list cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set task list key: %v", key) - } - return nil -} - // DeleteTaskList 删除任务列表缓存(支持模糊匹配) func (p *TaskDAOImpl) DeleteTaskList(ctx context.Context, pattern string) error { // 由于 redis.Cmdable 接口没有 Keys 方法,这里简化处理 @@ -214,78 +114,6 @@ func (p *TaskDAOImpl) DeleteTaskList(ctx context.Context, pattern string) error return nil } -// GetNonFinalTaskList 获取非最终状态任务列表缓存 -func (p *TaskDAOImpl) GetNonFinalTaskList(ctx context.Context) ([]*entity.ObservabilityTask, error) { - key := p.makeNonFinalTaskListKey() - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil // 缓存未命中 - } - return nil, errorx.Wrapf(err, "redis get non final task list fail, key: %v", key) - } - - var tasks []*entity.ObservabilityTask - if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &tasks); err != nil { - return nil, errorx.Wrapf(err, "unmarshal non final task list cache failed") - } - - return tasks, nil -} - -// SetNonFinalTaskList 设置非最终状态任务列表缓存 -func (p *TaskDAOImpl) SetNonFinalTaskList(ctx context.Context, tasks []*entity.ObservabilityTask, ttl time.Duration) error { - key := p.makeNonFinalTaskListKey() - - bytes, err := json.Marshal(tasks) - if err != nil { - return errorx.Wrapf(err, "marshal non final task list cache failed") - } - - if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set non final task list cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set non final task list key: %v", key) - } - return nil -} - -// 向非最终状态任务列表中新增任务 -func (p *TaskDAOImpl) AddNonFinalTask(ctx context.Context, task *entity.ObservabilityTask) error { - tasks, err := p.GetNonFinalTaskList(ctx) - if err != nil { - logs.CtxError(ctx, "GetNonFinalTaskList failed", "err", err) - return err - } - tasks = append(tasks, task) - return p.SetNonFinalTaskList(ctx, tasks, time.Hour*24*2) -} - -// 向非最终状态任务列表中删除任务 -func (p *TaskDAOImpl) RemoveNonFinalTask(ctx context.Context, taskID int64) error { - tasks, err := p.GetNonFinalTaskList(ctx) - if err != nil { - logs.CtxError(ctx, "GetNonFinalTaskList failed", "err", err) - return err - } - for i, task := range tasks { - if task.ID == taskID { - tasks = append(tasks[:i], tasks[i+1:]...) - break - } - } - return p.SetNonFinalTaskList(ctx, tasks, time.Hour*24*2) -} - -// DeleteNonFinalTaskList 删除非最终状态任务列表缓存 -func (p *TaskDAOImpl) DeleteNonFinalTaskList(ctx context.Context) error { - key := p.makeNonFinalTaskListKey() - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete non final task list cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete non final task list key: %v", key) - } - return nil -} - // GetTaskCount 获取任务计数缓存 func (p *TaskDAOImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, error) { key := p.makeTaskCountCacheKey(taskID) @@ -299,26 +127,6 @@ func (p *TaskDAOImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, er return got, nil } -// SetTaskCount 设置任务计数缓存 -func (p *TaskDAOImpl) SetTaskCount(ctx context.Context, taskID int64, count int64, ttl time.Duration) error { - key := p.makeTaskCountCacheKey(taskID) - if err := p.cmdable.Set(ctx, key, count, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set task count cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set task count key: %v", key) - } - return nil -} - -// DeleteTaskCount 删除任务计数缓存 -func (p *TaskDAOImpl) DeleteTaskCount(ctx context.Context, taskID int64) error { - key := p.makeTaskCountCacheKey(taskID) - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete task count cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete task count key: %v", key) - } - return nil -} - // GetTaskRunCount 获取任务运行计数缓存 func (p *TaskDAOImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { key := p.makeTaskRunCountCacheKey(taskID, taskRunID) @@ -332,247 +140,6 @@ func (p *TaskDAOImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int return got, nil } -// SetTaskRunCount 设置任务运行计数缓存 -func (p *TaskDAOImpl) SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error { - key := p.makeTaskRunCountCacheKey(taskID, taskRunID) - if err := p.cmdable.Set(ctx, key, count, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set task run count cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set task run count key: %v", key) - } - return nil -} - -// DeleteTaskRunCount 删除任务运行计数缓存 -func (p *TaskDAOImpl) DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { - key := p.makeTaskRunCountCacheKey(taskID, taskRunID) - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete task run count cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete task run count key: %v", key) - } - return nil -} - -func (p *TaskDAOImpl) GetObjListWithTask(ctx context.Context) ([]string, []string, []*model.ObservabilityTask, error) { - spaceKey := "spaceList" - botKey := "botList" - taskKey := "taskList" - gotSpaceList, err := p.cmdable.Get(ctx, spaceKey).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) // 缓存未命中 - } - return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) - } - var spaceList []string - if err = json.Unmarshal(conv.UnsafeStringToBytes(gotSpaceList), &spaceList); err != nil { - return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", spaceKey) - } - gotBotList, err := p.cmdable.Get(ctx, botKey).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", botKey) // 缓存未命中 - } - return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", botKey) - } - var botList []string - if err = json.Unmarshal(conv.UnsafeStringToBytes(gotBotList), &botList); err != nil { - return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", botKey) - } - gotTaskList, err := p.cmdable.Get(ctx, taskKey).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", taskKey) // 缓存未命中 - } - return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", taskKey) - } - var tasks []*model.ObservabilityTask - if err = json.Unmarshal(conv.UnsafeStringToBytes(gotTaskList), &tasks); err != nil { - return nil, nil, nil, errorx.Wrapf(err, "redis get fail, key: %v", taskKey) - } - - return spaceList, botList, tasks, nil -} - -// GetSpaceListWithTask 获取包含任务的空间列表缓存 -func (p *TaskDAOImpl) GetSpaceListWithTask(ctx context.Context) ([]string, error) { - key := p.makeSpaceListWithTaskKey() - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil // 缓存未命中 - } - return nil, errorx.Wrapf(err, "redis get space list with task fail, key: %v", key) - } - - var spaces []string - if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &spaces); err != nil { - return nil, errorx.Wrapf(err, "unmarshal space list with task cache failed") - } - - return spaces, nil -} - -// SetSpaceListWithTask 设置包含任务的空间列表缓存 -func (p *TaskDAOImpl) SetSpaceListWithTask(ctx context.Context, spaces []string, ttl time.Duration) error { - key := p.makeSpaceListWithTaskKey() - - bytes, err := json.Marshal(spaces) - if err != nil { - return errorx.Wrapf(err, "marshal space list with task cache failed") - } - - if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set space list with task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set space list with task key: %v", key) - } - return nil -} - -// DeleteSpaceListWithTask 删除包含任务的空间列表缓存 -func (p *TaskDAOImpl) DeleteSpaceListWithTask(ctx context.Context) error { - key := p.makeSpaceListWithTaskKey() - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete space list with task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete space list with task key: %v", key) - } - return nil -} - -// GetBotListWithTask 获取包含任务的机器人列表缓存 -func (p *TaskDAOImpl) GetBotListWithTask(ctx context.Context) ([]string, error) { - key := p.makeBotListWithTaskKey() - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil // 缓存未命中 - } - return nil, errorx.Wrapf(err, "redis get bot list with task fail, key: %v", key) - } - - var bots []string - if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &bots); err != nil { - return nil, errorx.Wrapf(err, "unmarshal bot list with task cache failed") - } - - return bots, nil -} - -// SetBotListWithTask 设置包含任务的机器人列表缓存 -func (p *TaskDAOImpl) SetBotListWithTask(ctx context.Context, bots []string, ttl time.Duration) error { - key := p.makeBotListWithTaskKey() - - bytes, err := json.Marshal(bots) - if err != nil { - return errorx.Wrapf(err, "marshal bot list with task cache failed") - } - - if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set bot list with task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set bot list with task key: %v", key) - } - return nil -} - -// DeleteBotListWithTask 删除包含任务的机器人列表缓存 -func (p *TaskDAOImpl) DeleteBotListWithTask(ctx context.Context) error { - key := p.makeBotListWithTaskKey() - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete bot list with task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete bot list with task key: %v", key) - } - return nil -} - -// GetWorkflowListWithTask 获取包含任务的工作流列表缓存 -func (p *TaskDAOImpl) GetWorkflowListWithTask(ctx context.Context) ([]string, error) { - key := p.makeWorkflowListWithTaskKey() - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil // 缓存未命中 - } - return nil, errorx.Wrapf(err, "redis get workflow list with task fail, key: %v", key) - } - - var workflows []string - if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &workflows); err != nil { - return nil, errorx.Wrapf(err, "unmarshal workflow list with task cache failed") - } - - return workflows, nil -} - -// SetWorkflowListWithTask 设置包含任务的工作流列表缓存 -func (p *TaskDAOImpl) SetWorkflowListWithTask(ctx context.Context, workflows []string, ttl time.Duration) error { - key := p.makeWorkflowListWithTaskKey() - - bytes, err := json.Marshal(workflows) - if err != nil { - return errorx.Wrapf(err, "marshal workflow list with task cache failed") - } - - if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set workflow list with task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set workflow list with task key: %v", key) - } - return nil -} - -// DeleteWorkflowListWithTask 删除包含任务的工作流列表缓存 -func (p *TaskDAOImpl) DeleteWorkflowListWithTask(ctx context.Context) error { - key := p.makeWorkflowListWithTaskKey() - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete workflow list with task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete workflow list with task key: %v", key) - } - return nil -} - -// GetAppListWithTask 获取包含任务的应用列表缓存 -func (p *TaskDAOImpl) GetAppListWithTask(ctx context.Context) ([]string, error) { - key := p.makeAppListWithTaskKey() - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil // 缓存未命中 - } - return nil, errorx.Wrapf(err, "redis get app list with task fail, key: %v", key) - } - - var apps []string - if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &apps); err != nil { - return nil, errorx.Wrapf(err, "unmarshal app list with task cache failed") - } - - return apps, nil -} - -// SetAppListWithTask 设置包含任务的应用列表缓存 -func (p *TaskDAOImpl) SetAppListWithTask(ctx context.Context, apps []string, ttl time.Duration) error { - key := p.makeAppListWithTaskKey() - - bytes, err := json.Marshal(apps) - if err != nil { - return errorx.Wrapf(err, "marshal app list with task cache failed") - } - - if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set app list with task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set app list with task key: %v", key) - } - return nil -} - -// DeleteAppListWithTask 删除包含任务的应用列表缓存 -func (p *TaskDAOImpl) DeleteAppListWithTask(ctx context.Context) error { - key := p.makeAppListWithTaskKey() - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete app list with task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete app list with task key: %v", key) - } - return nil -} - // IncrTaskCount 原子增加任务计数 func (p *TaskDAOImpl) IncrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) { key := p.makeTaskCountCacheKey(taskID) diff --git a/backend/modules/observability/infra/repo/redis/dao/task_run.go b/backend/modules/observability/infra/repo/redis/dao/task_run.go index e2615026a..6332e5e49 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task_run.go +++ b/backend/modules/observability/infra/repo/redis/dao/task_run.go @@ -6,49 +6,20 @@ package dao import ( "context" "fmt" - "time" "github.com/coze-dev/coze-loop/backend/infra/redis" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" - "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/redis/convert" "github.com/coze-dev/coze-loop/backend/pkg/errorx" - "github.com/coze-dev/coze-loop/backend/pkg/json" - "github.com/coze-dev/coze-loop/backend/pkg/lang/conv" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) //go:generate mockgen -destination=mocks/task_run_dao.go -package=mocks . ITaskRunDAO type ITaskRunDAO interface { - // 基础缓存操作 - GetTaskRun(ctx context.Context, id int64) (*entity.TaskRun, error) - SetTaskRun(ctx context.Context, taskRun *entity.TaskRun, ttl time.Duration) error - DeleteTaskRun(ctx context.Context, id int64) error - - // 列表缓存操作 - GetNonFinalTaskRunList(ctx context.Context) ([]*entity.TaskRun, error) - SetNonFinalTaskRunList(ctx context.Context, taskRuns []*entity.TaskRun, ttl time.Duration) error - DeleteNonFinalTaskRunList(ctx context.Context) error - - GetTaskRunListByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) - SetTaskRunListByTask(ctx context.Context, taskID int64, taskRuns []*entity.TaskRun, ttl time.Duration) error - DeleteTaskRunListByTask(ctx context.Context, taskID int64) error - - // 计数缓存操作 - GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) - SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error - DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error - // 成功/失败计数操作 IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error DecrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error IncrTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) error GetTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) (int64, error) GetTaskRunFailCount(ctx context.Context, taskID, taskRunID int64) (int64, error) - - // 对象列表缓存操作 - GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) - SetObjListWithTaskRun(ctx context.Context, spaceList, botList []string, ttl time.Duration) error - DeleteObjListWithTaskRun(ctx context.Context) error } type TaskRunDAOImpl struct { @@ -63,22 +34,6 @@ func NewTaskRunDAO(cmdable redis.Cmdable) ITaskRunDAO { } // 缓存键生成方法 -func (q *TaskRunDAOImpl) makeTaskRunDetailKey(id int64) string { - return fmt.Sprintf("taskrun:detail:%d", id) -} - -func (q *TaskRunDAOImpl) makeNonFinalTaskRunListKey() string { - return "taskrun:list:non_final" -} - -func (q *TaskRunDAOImpl) makeTaskRunListByTaskKey(taskID int64) string { - return fmt.Sprintf("taskrun:list:task:%d", taskID) -} - -func (q *TaskRunDAOImpl) makeTaskRunCountKey(taskID, taskRunID int64) string { - return fmt.Sprintf("taskrun:count:%d:%d", taskID, taskRunID) -} - func (q *TaskRunDAOImpl) makeTaskRunSuccessCountKey(taskID, taskRunID int64) string { return fmt.Sprintf("taskrun:success_count:%d:%d", taskID, taskRunID) } @@ -87,238 +42,6 @@ func (q *TaskRunDAOImpl) makeTaskRunFailCountKey(taskID, taskRunID int64) string return fmt.Sprintf("taskrun:fail_count:%d:%d", taskID, taskRunID) } -func (q *TaskRunDAOImpl) makeObjListWithTaskRunKey() string { - return "taskrun:obj_list" -} - -// 基础缓存操作实现 - -// GetTaskRun 获取单个TaskRun缓存 -func (p *TaskRunDAOImpl) GetTaskRun(ctx context.Context, id int64) (*entity.TaskRun, error) { - key := p.makeTaskRunDetailKey(id) - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil // 缓存未命中 - } - return nil, errorx.Wrapf(err, "redis get taskrun fail, key: %v", key) - } - return convert.NewTaskRunConverter().ToDO(conv.UnsafeStringToBytes(got)) -} - -// SetTaskRun 设置单个TaskRun缓存 -func (p *TaskRunDAOImpl) SetTaskRun(ctx context.Context, taskRun *entity.TaskRun, ttl time.Duration) error { - bytes, err := convert.NewTaskRunConverter().FromDO(taskRun) - if err != nil { - return err - } - key := p.makeTaskRunDetailKey(taskRun.ID) - if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set taskrun cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set taskrun key: %v", key) - } - return nil -} - -// DeleteTaskRun 删除单个TaskRun缓存 -func (p *TaskRunDAOImpl) DeleteTaskRun(ctx context.Context, id int64) error { - key := p.makeTaskRunDetailKey(id) - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete taskrun cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete taskrun key: %v", key) - } - return nil -} - -// 列表缓存操作实现 - -// GetNonFinalTaskRunList 获取非终态TaskRun列表缓存 -func (p *TaskRunDAOImpl) GetNonFinalTaskRunList(ctx context.Context) ([]*entity.TaskRun, error) { - key := p.makeNonFinalTaskRunListKey() - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil // 缓存未命中 - } - return nil, errorx.Wrapf(err, "redis get non final taskrun list fail, key: %v", key) - } - - var taskRuns []*entity.TaskRun - if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &taskRuns); err != nil { - return nil, errorx.Wrapf(err, "unmarshal non final taskrun list cache failed") - } - - return taskRuns, nil -} - -// SetNonFinalTaskRunList 设置非终态TaskRun列表缓存 -func (p *TaskRunDAOImpl) SetNonFinalTaskRunList(ctx context.Context, taskRuns []*entity.TaskRun, ttl time.Duration) error { - key := p.makeNonFinalTaskRunListKey() - - bytes, err := json.Marshal(taskRuns) - if err != nil { - return errorx.Wrapf(err, "marshal non final taskrun list cache failed") - } - - if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set non final taskrun list cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set non final taskrun list key: %v", key) - } - return nil -} - -// DeleteNonFinalTaskRunList 删除非终态TaskRun列表缓存 -func (p *TaskRunDAOImpl) DeleteNonFinalTaskRunList(ctx context.Context) error { - key := p.makeNonFinalTaskRunListKey() - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete non final taskrun list cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete non final taskrun list key: %v", key) - } - return nil -} - -// GetTaskRunListByTask 获取按Task分组的TaskRun列表缓存 -func (p *TaskRunDAOImpl) GetTaskRunListByTask(ctx context.Context, taskID int64) ([]*entity.TaskRun, error) { - key := p.makeTaskRunListByTaskKey(taskID) - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil // 缓存未命中 - } - return nil, errorx.Wrapf(err, "redis get taskrun list by task fail, key: %v", key) - } - - var taskRuns []*entity.TaskRun - if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &taskRuns); err != nil { - return nil, errorx.Wrapf(err, "unmarshal taskrun list by task cache failed") - } - - return taskRuns, nil -} - -// SetTaskRunListByTask 设置按Task分组的TaskRun列表缓存 -func (p *TaskRunDAOImpl) SetTaskRunListByTask(ctx context.Context, taskID int64, taskRuns []*entity.TaskRun, ttl time.Duration) error { - key := p.makeTaskRunListByTaskKey(taskID) - - bytes, err := json.Marshal(taskRuns) - if err != nil { - return errorx.Wrapf(err, "marshal taskrun list by task cache failed") - } - - if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set taskrun list by task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set taskrun list by task key: %v", key) - } - return nil -} - -// DeleteTaskRunListByTask 删除按Task分组的TaskRun列表缓存 -func (p *TaskRunDAOImpl) DeleteTaskRunListByTask(ctx context.Context, taskID int64) error { - key := p.makeTaskRunListByTaskKey(taskID) - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete taskrun list by task cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete taskrun list by task key: %v", key) - } - return nil -} - -// 计数缓存操作实现 - -// GetTaskRunCount 获取TaskRun计数缓存 -func (p *TaskRunDAOImpl) GetTaskRunCount(ctx context.Context, taskID, taskRunID int64) (int64, error) { - key := p.makeTaskRunCountKey(taskID, taskRunID) - got, err := p.cmdable.Get(ctx, key).Int64() - if err != nil { - if redis.IsNilError(err) { - return -1, nil // 缓存未命中,返回-1表示未缓存 - } - return 0, errorx.Wrapf(err, "redis get taskrun count fail, key: %v", key) - } - return got, nil -} - -// SetTaskRunCount 设置TaskRun计数缓存 -func (p *TaskRunDAOImpl) SetTaskRunCount(ctx context.Context, taskID, taskRunID int64, count int64, ttl time.Duration) error { - key := p.makeTaskRunCountKey(taskID, taskRunID) - if err := p.cmdable.Set(ctx, key, count, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set taskrun count cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set taskrun count key: %v", key) - } - return nil -} - -// DeleteTaskRunCount 删除TaskRun计数缓存 -func (p *TaskRunDAOImpl) DeleteTaskRunCount(ctx context.Context, taskID, taskRunID int64) error { - key := p.makeTaskRunCountKey(taskID, taskRunID) - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete taskrun count cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete taskrun count key: %v", key) - } - return nil -} - -// 对象列表缓存操作实现 - -// ObjListWithTaskRunCache 对象列表缓存结构 -type ObjListWithTaskRunCache struct { - SpaceList []string `json:"space_list"` - BotList []string `json:"bot_list"` - CachedAt time.Time `json:"cached_at"` -} - -// GetObjListWithTaskRun 获取对象列表缓存 -func (p *TaskRunDAOImpl) GetObjListWithTaskRun(ctx context.Context) ([]string, []string, error) { - key := p.makeObjListWithTaskRunKey() - got, err := p.cmdable.Get(ctx, key).Result() - if err != nil { - if redis.IsNilError(err) { - return nil, nil, nil // 缓存未命中 - } - return nil, nil, errorx.Wrapf(err, "redis get obj list with taskrun fail, key: %v", key) - } - - var cache ObjListWithTaskRunCache - if err := json.Unmarshal(conv.UnsafeStringToBytes(got), &cache); err != nil { - return nil, nil, errorx.Wrapf(err, "unmarshal obj list with taskrun cache failed") - } - - return cache.SpaceList, cache.BotList, nil -} - -// SetObjListWithTaskRun 设置对象列表缓存 -func (p *TaskRunDAOImpl) SetObjListWithTaskRun(ctx context.Context, spaceList, botList []string, ttl time.Duration) error { - key := p.makeObjListWithTaskRunKey() - - cache := ObjListWithTaskRunCache{ - SpaceList: spaceList, - BotList: botList, - CachedAt: time.Now(), - } - - bytes, err := json.Marshal(cache) - if err != nil { - return errorx.Wrapf(err, "marshal obj list with taskrun cache failed") - } - - if err := p.cmdable.Set(ctx, key, bytes, ttl).Err(); err != nil { - logs.CtxError(ctx, "redis set obj list with taskrun cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis set obj list with taskrun key: %v", key) - } - return nil -} - -// DeleteObjListWithTaskRun 删除对象列表缓存 -func (p *TaskRunDAOImpl) DeleteObjListWithTaskRun(ctx context.Context) error { - key := p.makeObjListWithTaskRunKey() - if err := p.cmdable.Del(ctx, key).Err(); err != nil { - logs.CtxError(ctx, "redis delete obj list with taskrun cache failed", "key", key, "err", err) - return errorx.Wrapf(err, "redis delete obj list with taskrun key: %v", key) - } - return nil -} - -// 成功/失败计数操作实现 - // IncrTaskRunSuccessCount 增加成功计数 func (p *TaskRunDAOImpl) IncrTaskRunSuccessCount(ctx context.Context, taskID, taskRunID int64) error { key := p.makeTaskRunSuccessCountKey(taskID, taskRunID) diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 319442300..f9b0e6527 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -6,7 +6,6 @@ package repo import ( "context" "fmt" - "strconv" "time" "github.com/coze-dev/coze-loop/backend/infra/idgen" @@ -51,19 +50,19 @@ const ( func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityTask, error) { // 先查 Redis 缓存 - //cachedTask, err := v.TaskRedisDao.GetTask(ctx, id) - //if err != nil { - // logs.CtxWarn(ctx, "failed to get task from redis cache", "id", id, "err", err) - //} else if cachedTask != nil { - // // 验证权限(workspaceID 和 userID) - // if workspaceID != nil && cachedTask.WorkspaceID != *workspaceID { - // return nil, nil // 权限不符,返回空 - // } - // if userID != nil && cachedTask.CreatedBy != *userID { - // return nil, nil // 权限不符,返回空 - // } - // return cachedTask, nil - //} + cachedTask, err := v.TaskRedisDao.GetTask(ctx, id) + if err != nil { + logs.CtxWarn(ctx, "failed to get task from redis cache", "id", id, "err", err) + } else if cachedTask != nil { + // 验证权限(workspaceID 和 userID) + if workspaceID != nil && cachedTask.WorkspaceID != *workspaceID { + return nil, nil // 权限不符,返回空 + } + if userID != nil && cachedTask.CreatedBy != *userID { + return nil, nil // 权限不符,返回空 + } + return cachedTask, nil + } // 缓存未命中,查询数据库 TaskPo, err := v.TaskDao.GetTask(ctx, id, workspaceID, userID) @@ -140,11 +139,6 @@ func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityT if err = v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { logs.Error("failed to set task cache after create", "id", createdID, "err", err) } - // 更新非最终状态任务列表缓存 - if err = v.TaskRedisDao.AddNonFinalTask(ctx, do); err != nil { - logs.Error("failed to set non final task cache after create", "id", createdID, "err", err) - return - } }() return createdID, nil @@ -176,67 +170,6 @@ func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityT return nil } -func (v *TaskRepoImpl) ListNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) { - // 先查 Redis 缓存 - cachedTasks, err := v.TaskRedisDao.GetNonFinalTaskList(ctx) - if err != nil { - logs.CtxWarn(ctx, "failed to get non final task list from redis cache", "err", err) - } else if cachedTasks != nil { - return cachedTasks, nil - } - - // 缓存未命中,查询数据库 - results, err := v.TaskDao.ListNonFinalTask(ctx) - if err != nil { - return nil, err - } - - resp := make([]*entity.ObservabilityTask, len(results)) - for i, result := range results { - taskDO := convertor.TaskPO2DO(result) - taskRuns, _, err := v.TaskRunDao.ListTaskRuns(ctx, mysql.ListTaskRunParam{ - WorkspaceID: ptr.Of(taskDO.WorkspaceID), - TaskID: ptr.Of(taskDO.ID), - ReqLimit: 1000, - ReqOffset: 0, - }) - if err != nil { - logs.CtxError(ctx, "ListTaskRuns err, taskID:%d, err:%v", taskDO.ID, err) - continue - } - taskDO.TaskRuns = convertor.TaskRunsPO2DO(taskRuns) - resp[i] = taskDO - } - - // 异步缓存到 Redis(短TTL,因为非最终状态变化频繁) - go func() { - if err := v.TaskRedisDao.SetNonFinalTaskList(context.Background(), resp, NonFinalTaskListTTL); err != nil { - logs.Error("failed to set non final task list cache", "err", err) - } - }() - - return resp, nil -} -func (v *TaskRepoImpl) ListNonFinalTaskBySpaceID(ctx context.Context, spaceID string) []*entity.ObservabilityTask { - // 先查 Redis 缓存 - cachedTasks, err := v.TaskRedisDao.GetNonFinalTaskList(ctx) - if err != nil { - logs.CtxWarn(ctx, "failed to get non final task list from redis cache", "err", err) - } else if cachedTasks != nil { - return cachedTasks - } - // 缓存未命中,查询数据库 - spaceIDInt, _ := strconv.ParseInt(spaceID, 10, 64) - results, err := v.TaskDao.ListNonFinalTaskBySpaceID(ctx, spaceIDInt) - if err != nil { - return nil - } - resp := make([]*entity.ObservabilityTask, len(results)) - for i, result := range results { - resp[i] = convertor.TaskPO2DO(result) - } - return resp -} func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspaceID int64, updateMap map[string]interface{}) error { // 先执行数据库操作 logs.CtxInfo(ctx, "UpdateTaskWithOCC, id:%d, workspaceID:%d, updateMap:%+v", id, workspaceID, updateMap) @@ -250,10 +183,6 @@ func (v *TaskRepoImpl) UpdateTaskWithOCC(ctx context.Context, id int64, workspac // 清理相关列表缓存 v.clearListCaches(context.Background(), workspaceID) - // 清理非最终状态任务缓存(状态可能发生变化) - if err := v.TaskRedisDao.DeleteNonFinalTaskList(context.Background()); err != nil { - logs.Error("failed to delete non final task list cache after OCC update", "err", err) - } }() return nil @@ -283,13 +212,6 @@ func (v *TaskRepoImpl) DeleteTask(ctx context.Context, do *entity.ObservabilityT go func() { // 清理相关列表缓存 v.clearListCaches(context.Background(), do.WorkspaceID) - - // 如果是非终态任务,需要从非终态任务列表中移除 - if isNonFinalTaskStatus(do.TaskStatus) { - if err := v.TaskRedisDao.RemoveNonFinalTask(context.Background(), do.ID); err != nil { - logs.Error("failed to remove task from non final task list after delete", "id", do.ID, "err", err) - } - } }() return nil @@ -302,16 +224,6 @@ func (v *TaskRepoImpl) clearListCaches(ctx context.Context, workspaceID int64) { if err := v.TaskRedisDao.DeleteTaskList(ctx, pattern); err != nil { logs.Error("failed to delete task list cache", "pattern", pattern, "err", err) } - - // 清理任务计数缓存 - if err := v.TaskRedisDao.DeleteTaskCount(ctx, workspaceID); err != nil { - logs.Error("failed to delete task count cache", "workspaceID", workspaceID, "err", err) - } - - // 清理非最终状态任务缓存 - if err := v.TaskRedisDao.DeleteNonFinalTaskList(ctx); err != nil { - logs.Error("failed to delete non final task list cache", "err", err) - } } // isNonFinalTaskStatus 判断任务状态是否为非最终状态 @@ -375,52 +287,8 @@ func (v *TaskRepoImpl) UpdateTaskRunWithOCC(ctx context.Context, id int64, works return err } - // 数据库操作成功后,删除缓存(因为无法直接更新部分字段) - go func() { - // 删除单个TaskRun缓存,下次查询时会重新加载 - if err := v.TaskRunRedisDao.DeleteTaskRun(context.Background(), id); err != nil { - logs.Error("failed to delete taskrun cache after OCC update", "id", id, "err", err) - } - - // 清理非最终状态TaskRun缓存(状态可能发生变化) - if err := v.TaskRunRedisDao.DeleteNonFinalTaskRunList(context.Background()); err != nil { - logs.Error("failed to delete non final taskrun list cache after OCC update", "err", err) - } - }() - return nil } -func (v *TaskRepoImpl) GetTaskRun(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.TaskRun, error) { - // 直接查询数据库(TaskRun通常不单独缓存) - taskRunPo, err := v.TaskRunDao.GetTaskRun(ctx, id, workspaceID, nil) - if err != nil { - return nil, err - } - - // 如果需要userID验证,需要通过Task表验证创建者权限 - if userID != nil { - taskPo, err := v.TaskDao.GetTask(ctx, taskRunPo.TaskID, workspaceID, userID) - if err != nil { - return nil, err - } - if taskPo == nil { - return nil, nil // 权限不符,返回空 - } - } - - return convertor.TaskRunPO2DO(taskRunPo), nil -} -func (v *TaskRepoImpl) ListTaskRuns(ctx context.Context, param mysql.ListTaskRunParam) ([]*entity.TaskRun, int64, error) { - results, total, err := v.TaskRunDao.ListTaskRuns(ctx, param) - if err != nil { - return nil, 0, err - } - resp := make([]*entity.TaskRun, len(results)) - for i, result := range results { - resp[i] = convertor.TaskRunPO2DO(result) - } - return resp, total, nil -} func (v *TaskRepoImpl) GetBackfillTaskRun(ctx context.Context, workspaceID *int64, taskID int64) (*entity.TaskRun, error) { taskRunPo, err := v.TaskRunDao.GetBackfillTaskRun(ctx, workspaceID, taskID) if err != nil { @@ -442,95 +310,6 @@ func (v *TaskRepoImpl) GetLatestNewDataTaskRun(ctx context.Context, workspaceID return convertor.TaskRunPO2DO(taskRunPo), nil } -// -//// TaskRunCountInfo TaskRunCount信息结构 -//type TaskRunCountInfo struct { -// TaskID int64 -// TaskRunID int64 -// TaskRunCount int64 -// TaskRunSuccCount int64 -// TaskRunFailCount int64 -//} -// -//func (v *TaskRepoImpl) RefreshTaskRunDetails(ctx context.Context, batch []*TaskRunCountInfo) error { -// -// // 1. 批量读取Redis计数数据 -// for _, info := range batch { -// // 读取taskruncount -// count, err := v.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) -// if err != nil || count == -1 { -// logs.CtxWarn(ctx, "获取TaskRunCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) -// } else { -// info.TaskRunCount = count -// } -// -// // 读取taskrunscesscount -// successCount, err := v.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) -// if err != nil || successCount == -1 { -// logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) -// successCount = 0 -// } else { -// info.TaskRunSuccCount = successCount -// } -// -// // 读取taskrunfailcount -// failCount, err := v.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) -// if err != nil || failCount == -1 { -// logs.CtxWarn(ctx, "获取TaskRunFailCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) -// failCount = 0 -// } else { -// info.TaskRunFailCount = failCount -// } -// -// logs.CtxDebug(ctx, "读取计数数据", -// "taskID", info.TaskID, -// "taskRunID", info.TaskRunID, -// "runCount", info.TaskRunCount, -// "successCount", info.TaskRunSuccCount, -// "failCount", info.TaskRunFailCount) -// } -// -// // 2. 批量更新数据库 -// for _, info := range batch { -// // 构建run_detail JSON数据 -// runDetail := map[string]interface{}{ -// "total_count": info.TaskRunCount, -// "success_count": info.TaskRunSuccCount, -// "failed_count": info.TaskRunFailCount, -// } -// -// // 序列化为JSON字符串 -// runDetailJSON, err := json.Marshal(runDetail) -// if err != nil { -// return errors.Wrap(err, "序列化run_detail失败") -// } -// -// runDetailStr := string(runDetailJSON) -// -// // 构建更新映射 -// updateMap := map[string]interface{}{ -// "run_detail": &runDetailStr, -// } -// -// // 使用乐观锁更新 -// err = v.UpdateTaskRunWithOCC(ctx, info.TaskRunID, 0, updateMap) -// if err != nil { -// return errors.Wrap(err, "更新TaskRun失败") -// } -// if err != nil { -// logs.CtxError(ctx, "更新TaskRun详情失败", -// "taskID", info.TaskID, -// "taskRunID", info.TaskRunID, -// "err", err) -// } else { -// logs.CtxDebug(ctx, "更新TaskRun详情成功", -// "taskID", info.TaskID, -// "taskRunID", info.TaskRunID) -// } -// } -// return nil -//} - func (v *TaskRepoImpl) GetTaskCount(ctx context.Context, taskID int64) (int64, error) { count, err := v.TaskRedisDao.GetTaskCount(ctx, taskID) if err != nil { From e48712421f87b2190d992f73afc9acd86958bb64 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 12:13:26 +0800 Subject: [PATCH 416/462] add debug log --- .../application/convertor/task/task.go | 2 - .../taskexe/processor/auto_evaluate.go | 2 +- .../task/service/taskexe/tracehub/backfill.go | 48 +++++++------------ 3 files changed, 19 insertions(+), 33 deletions(-) diff --git a/backend/modules/observability/application/convertor/task/task.go b/backend/modules/observability/application/convertor/task/task.go index f3bf32d9a..fabed281a 100644 --- a/backend/modules/observability/application/convertor/task/task.go +++ b/backend/modules/observability/application/convertor/task/task.go @@ -296,8 +296,6 @@ func SpanFilterDTO2PO(ctx context.Context, filters *filter.SpanFilterFields) *st filterDO.Filters = *filtersDO } - //todo[xun]:coze数据处理 - return ptr.Of(ToJSONString(ctx, filterDO)) } diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index fae1d4888..027394c23 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -153,6 +153,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, trigger *taskexe.Trig } func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { + // todo[xun]:加锁 taskRuns, err := p.taskRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) @@ -256,7 +257,6 @@ func (p *AutoEvaluteProcessor) OnFinishTaskChange(ctx context.Context, param tas } func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { - //todo:[xun]加锁 currentTask := param.CurrentTask ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) sessionInfo := p.getSession(ctx, currentTask) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index aeab6272d..fca1dfe33 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -434,40 +434,28 @@ func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans // processBatchSpans 批量处理 span 数据 func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*loop_span.Span, sub *spanSubscriber) error { for _, span := range spans { - // 执行单个 span 的处理逻辑 - if err := h.processSpan(ctx, span, sub); err != nil { - logs.CtxWarn(ctx, "process individual span failed, span_id=%s, trace_id=%s, err=%v", - span.SpanID, span.TraceID, err) - // 继续处理其他span,不因单个失败而中断批处理 + // 根据任务类型执行相应的处理逻辑 + logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", + span.SpanID, span.TraceID, sub.t.GetID()) + taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) + taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, sub.tr.GetID()) + sampler := sub.t.GetRule().GetSampler() + if taskCount+1 > sampler.GetSampleSize() { + logs.CtxWarn(ctx, "taskCount+1 > sampler.GetSampleSize(), task_id=%d,SampleSize=%d", sub.taskID, sampler.GetSampleSize()) + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: tconv.TaskRunDO2PO(ctx, sub.tr, nil), + IsFinish: true, + }); err != nil { + return err + } + break } - } - - return nil -} - -// processIndividualSpan 处理单个 span -func (h *TraceHubServiceImpl) processSpan(ctx context.Context, span *loop_span.Span, sub *spanSubscriber) error { - // 根据任务类型执行相应的处理逻辑 - logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", - span.SpanID, span.TraceID, sub.t.GetID()) - - taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) - taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, sub.tr.GetID()) - sampler := sub.t.GetRule().GetSampler() - if taskCount+1 > sampler.GetSampleSize() { - if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: sub.t, - TaskRun: tconv.TaskRunDO2PO(ctx, sub.tr, nil), - IsFinish: true, - }); err != nil { - logs.CtxWarn(ctx, "taskCount+1 > sampler.GetSampleSize(), task_id=%d", sub.taskID) + logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) + if err := h.dispatch(ctx, span, []*spanSubscriber{sub}); err != nil { return err } } - logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) - if err := h.dispatch(ctx, span, []*spanSubscriber{sub}); err != nil { - return err - } return nil } From 31650f3ee2eb7f044be2f659d24b6900508f12a6 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 12:59:27 +0800 Subject: [PATCH 417/462] chore: [Coda] translate tracehub backfill comments (LogID: 20251011125600192168031096958E98A) Co-Authored-By: Coda --- .../task/service/taskexe/tracehub/backfill.go | 87 ++++++++++--------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index fca1dfe33..6e5866a80 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -28,14 +28,14 @@ import ( const pageSize = 500 func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { - // 1. 设置当前任务上下文 + // 1. Set the current task context ctx = fillCtxWithEnv(ctx) sub, err := h.setBackfillTask(ctx, event) if err != nil { return err } - // 2. 判断回溯任务是否已完成 - 避免重复执行 + // 2. Determine whether the backfill task is completed to avoid repeated execution isDone, err := h.isBackfillDone(ctx, sub) if err != nil { logs.CtxError(ctx, "check backfill task done failed, task_id=%d, err=%v", sub.t.GetID(), err) @@ -46,41 +46,42 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi return nil } - // 3. 创建并发控制机制 - 设置上下文和等待组 + // 3. Create concurrency control by setting context and wait group subCtx, cancel := context.WithCancel(ctx) defer cancel() wg := sync.WaitGroup{} - // 初始化 flushCh 通道和错误收集器 - h.flushCh = make(chan *flushReq, 100) // 缓冲通道,避免阻塞 + // Initialize the flushCh channel and error collector + h.flushCh = make(chan *flushReq, 100) // Buffered channel to avoid blocking h.flushErrLock.Lock() - h.flushErr = nil // 重置错误收集器 + h.flushErr = nil // Reset error collector h.flushErrLock.Unlock() - // 4. 启动异步刷新处理 - 通过 goroutine 实现并发处理 + // 4. Launch asynchronous flush handling via goroutine for concurrent processing wg.Add(1) goroutine.Go(ctx, func() { defer wg.Done() h.flushSpans(subCtx, sub) }) - // 5. 获取 span 数据 - 从观测服务获取需要处理的数据 + // 5. Retrieve span data from the observability service listErr := h.listSpans(subCtx, sub) if listErr != nil { logs.CtxError(ctx, "list spans failed, task_id=%d, err=%v", sub.t.GetID(), listErr) - // continue on error,不中断处理流程 + // continue on error without interrupting the flow } - // 关闭通道并等待处理完成 + // Close the channel and wait for processing to finish close(h.flushCh) wg.Wait() - // 6. 同步等待完成 - 确保所有数据处理完毕 + // 6. Synchronously wait for completion to ensure all data is processed return h.onHandleDone(ctx, listErr, sub) } -// setBackfillTask 设置当前回填任务的上下文 +// setBackfillTask sets the context for the current backfill task func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity.BackFillEvent) (*spanSubscriber, error) { + taskConfig, err := h.taskRepo.GetTask(ctx, event.TaskID, nil, nil) if err != nil { logs.CtxError(ctx, "get task config failed, task_id=%d, err=%v", event.TaskID, err) @@ -113,7 +114,7 @@ func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity return sub, nil } -// isBackfillDone 检查回填任务是否已完成 +// isBackfillDone checks whether the backfill task has been completed func (h *TraceHubServiceImpl) isBackfillDone(ctx context.Context, sub *spanSubscriber) (bool, error) { if sub.tr == nil { logs.CtxError(ctx, "get backfill task run failed, task_id=%d, err=%v", sub.t.GetID(), nil) @@ -131,26 +132,26 @@ func (h *TraceHubServiceImpl) listSpans(ctx context.Context, sub *spanSubscriber return err } - // todo: 从tcc配置中获取分页大小 + // todo: obtain page size from TCC configuration //batchSize := c.tccCfg.BackfillProcessConfig().ListPageSize //if batchSize == 0 { // batchSize = pageSize //} - // 构建查询参数 + // Build query parameters listParam := &repo.ListSpansParam{ Tenants: tenants, Filters: h.buildSpanFilters(ctx, sub.t), StartAt: backfillTime.GetStartAt(), EndAt: backfillTime.GetEndAt(), - Limit: pageSize, // 分页大小 + Limit: pageSize, // Page size DescByStartTime: true, - NotQueryAnnotation: true, // 回填时不需要查询注解 + NotQueryAnnotation: true, // No annotation query required during backfill } if sub.tr.BackfillRunDetail != nil && sub.tr.BackfillRunDetail.LastSpanPageToken != nil { listParam.PageToken = *sub.tr.BackfillRunDetail.LastSpanPageToken } - // 分页查询并发送数据 + // Paginate query and send data return h.fetchAndSendSpans(ctx, listParam, sub) } @@ -167,10 +168,10 @@ type ListSpansReq struct { SpanListType loop_span.SpanListType } -// buildSpanFilters 构建 span 过滤条件 +// buildSpanFilters constructs span filter conditions func (h *TraceHubServiceImpl) buildSpanFilters(ctx context.Context, taskConfig *task.Task) *loop_span.FilterFields { - // 可以根据任务配置构建更复杂的过滤条件 - // 这里简化处理,返回 nil 表示不添加额外过滤 + // More complex filters can be built based on the task configuration + // Simplified here: return nil to indicate no additional filters platformFilter, err := h.buildHelper.BuildPlatformRelatedFilter(ctx, loop_span.PlatformType(taskConfig.GetRule().GetSpanFilters().GetPlatformType())) if err != nil { @@ -246,7 +247,7 @@ func (h *TraceHubServiceImpl) combineFilters(filters ...*loop_span.FilterFields) return filterAggr } -// fetchAndSendSpans 分页获取并发送 span 数据 +// fetchAndSendSpans paginates and sends span data func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam *repo.ListSpansParam, sub *spanSubscriber) error { totalCount := int64(0) pageToken := listParam.PageToken @@ -274,7 +275,7 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * } if len(spans) > 0 { - // 发送到通道 + // Send to channel flush := &flushReq{ retrievedSpanCount: int64(len(spans)), pageToken: result.PageToken, @@ -308,14 +309,14 @@ func (h *TraceHubServiceImpl) flushSpans(ctx context.Context, sub *spanSubscribe select { case fr, ok := <-h.flushCh: if !ok { - // 通道已关闭,退出 + // Channel closed, exit return } _, _, err := h.doFlush(ctx, fr, sub) if err != nil { logs.CtxError(ctx, "flush spans failed, task_id=%d, err=%v", sub.t.GetID(), err) - // 收集错误,继续处理 + // Collect errors and continue processing h.flushErrLock.Lock() h.flushErr = append(h.flushErr, err) h.flushErrLock.Unlock() @@ -335,14 +336,14 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp logs.CtxInfo(ctx, "processing %d spans for backfill, task_id=%d", len(fr.spans), sub.t.GetID()) - // 应用采样逻辑 + // Apply sampling logic sampledSpans := h.applySampling(fr.spans, sub) if len(sampledSpans) == 0 { logs.CtxInfo(ctx, "no spans after sampling, task_id=%d", sub.t.GetID()) return len(fr.spans), 0, nil } - // 执行具体的业务逻辑处理 + // Execute specific business logic err := h.processSpansForBackfill(ctx, sampledSpans, sub) if err != nil { logs.CtxError(ctx, "process spans failed, task_id=%d, err=%v", sub.t.GetID(), err) @@ -375,7 +376,7 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp return len(fr.spans), len(sampledSpans), nil } -// applySampling 应用采样逻辑 +// applySampling applies sampling logic func (h *TraceHubServiceImpl) applySampling(spans []*loop_span.Span, sub *spanSubscriber) []*loop_span.Span { if sub.t == nil || sub.t.Rule == nil { return spans @@ -388,17 +389,17 @@ func (h *TraceHubServiceImpl) applySampling(spans []*loop_span.Span, sub *spanSu sampleRate := sampler.GetSampleRate() if sampleRate >= 1.0 { - return spans // 100% 采样 + return spans // 100% sampling } if sampleRate <= 0.0 { - return nil // 0% 采样 + return nil // 0% sampling } - // 计算采样数量 + // Calculate sampling size sampleSize := int(float64(len(spans)) * sampleRate) if sampleSize == 0 && len(spans) > 0 { - sampleSize = 1 // 至少采样一个 + sampleSize = 1 // Sample at least one } if sampleSize >= len(spans) { @@ -408,9 +409,9 @@ func (h *TraceHubServiceImpl) applySampling(spans []*loop_span.Span, sub *spanSu return spans[:sampleSize] } -// processSpansForBackfill 处理回填的 span 数据 +// processSpansForBackfill handles spans for backfill func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans []*loop_span.Span, sub *spanSubscriber) error { - // 批量处理 spans,提高效率 + // Batch processing spans for efficiency const batchSize = 100 for i := 0; i < len(spans); i += batchSize { @@ -423,7 +424,7 @@ func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans if err := h.processBatchSpans(ctx, batch, sub); err != nil { logs.CtxError(ctx, "process batch spans failed, task_id=%d, batch_start=%d, err=%v", sub.t.GetID(), i, err) - // 继续处理下一批,不因单批失败而中断 + // Continue with the next batch without stopping due to a single failure continue } } @@ -431,10 +432,10 @@ func (h *TraceHubServiceImpl) processSpansForBackfill(ctx context.Context, spans return nil } -// processBatchSpans 批量处理 span 数据 +// processBatchSpans processes a batch of span data func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*loop_span.Span, sub *spanSubscriber) error { for _, span := range spans { - // 根据任务类型执行相应的处理逻辑 + // Execute processing logic according to the task type logs.CtxDebug(ctx, "processing span for backfill, span_id=%s, trace_id=%s, task_id=%d", span.SpanID, span.TraceID, sub.t.GetID()) taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) @@ -460,9 +461,9 @@ func (h *TraceHubServiceImpl) processBatchSpans(ctx context.Context, spans []*lo return nil } -// onHandleDone 处理完成回调 +// onHandleDone handles completion callback func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error, sub *spanSubscriber) error { - // 收集所有错误 + // Collect all errors h.flushErrLock.Lock() allErrors := append([]error{}, h.flushErr...) if listErr != nil { @@ -476,14 +477,14 @@ func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error, s TaskID: sub.t.GetID(), } - // 异步发送MQ消息,不阻塞任务创建流程 + // Send MQ message asynchronously without blocking task creation flow go func() { if err := h.sendBackfillMessage(context.Background(), backfillEvent); err != nil { logs.CtxWarn(ctx, "send backfill message failed, task_id=%d, err=%v", sub.t.GetID(), err) } }() logs.CtxWarn(ctx, "backfill completed with %d errors, task_id=%d", len(allErrors), sub.t.GetID()) - // 返回第一个错误作为代表 + // Return the first error as a representative return allErrors[0] } @@ -492,11 +493,11 @@ func (h *TraceHubServiceImpl) onHandleDone(ctx context.Context, listErr error, s return nil } -// sendBackfillMessage 发送MQ消息 +// sendBackfillMessage sends an MQ message func (h *TraceHubServiceImpl) sendBackfillMessage(ctx context.Context, event *entity.BackFillEvent) error { if h.backfillProducer == nil { return errorx.NewByCode(obErrorx.CommonInternalErrorCode, errorx.WithExtraMsg("backfill producer not initialized")) } return h.backfillProducer.SendBackfill(ctx, event) -} +} \ No newline at end of file From eaa9fda82d24377344d9a9feb08ce5604768ba92 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 13:05:23 +0800 Subject: [PATCH 418/462] chore: [Coda] translate tracehub callback comments (LogID: 20251011125600192168031096958E98A) Co-Authored-By: Coda --- .../task/service/taskexe/tracehub/callback.go | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go index afd08a602..f8bd167ba 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go @@ -54,12 +54,12 @@ func (h *TraceHubServiceImpl) CallBack(ctx context.Context, event *entity.AutoEv } span := spans[0] - // 新增:根据Status写Redis计数 + // Newly added: write Redis counters based on the Status err = h.updateTaskRunStatusCount(ctx, turn.GetTaskIDFromExt(), turn) if err != nil { logs.CtxWarn(ctx, "更新TaskRun状态计数失败: taskID=%d, status=%d, err=%v", turn.GetTaskIDFromExt(), turn.Status, err) - // 不中断流程,继续处理 + // Continue processing without interrupting the flow } annotation := &loop_span.Annotation{ @@ -99,7 +99,7 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr if workspaceID == 0 { return fmt.Errorf("workspace_id is empty") } - //todo:loopspan下 + // TODO: move under loopspan tenants, err := h.getTenants(ctx, loop_span.PlatformType("loop_all")) if err != nil { return err @@ -148,7 +148,7 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr } annotation.CorrectAutoEvaluateScore(event.EvaluatorResult.Correction.Score, event.EvaluatorResult.Correction.Explain, updateBy) - // 再同步修改观测数据 + // Then synchronize the observability data param := &repo.UpsertAnnotationParam{ Tenant: span.GetTenant(), TTL: span.GetTTL(ctx), @@ -157,8 +157,8 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr } if err = h.traceRepo.UpsertAnnotation(ctx, param); err != nil { recordID := lo.Ternary(annotation.GetAutoEvaluateMetadata() != nil, annotation.GetAutoEvaluateMetadata().EvaluatorRecordID, 0) - // 如果同步修改失败,异步补偿 - // todo 异步有问题,会重复 + // If the synchronous update fails, compensate asynchronously + // TODO: asynchronous processing has issues and may duplicate logs.CtxWarn(ctx, "Sync upsert annotation failed, try async upsert. span_id=[%v], recored_id=[%v], err:%v", annotation.SpanID, recordID, err) return nil @@ -166,31 +166,31 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr return nil } -func (h *TraceHubServiceImpl) getTenants(ctx context.Context, platform loop_span.PlatformType) ([]string, error) { - return h.tenantProvider.GetTenantsByPlatformType(ctx, platform) +// updateTaskRunStatusCount updates the Redis count based on Status +func (h *TraceHubServiceImpl) updateTaskRunStatusCount(ctx context.Context, taskID int64, turn *entity.OnlineExptTurnEvalResult) error { + // Retrieve taskRunID from Ext + taskRunIDStr := turn.Ext["run_id"] + if taskRunIDStr == "" { + return fmt.Errorf("task_run_id not found in ext") + } + + taskRunID, err := strconv.ParseInt(taskRunIDStr, 10, 64) + if err != nil { + return fmt.Errorf("invalid task_run_id: %s, err: %v", taskRunIDStr, err) + } + // Increase the corresponding counter based on Status + switch turn.Status { + case entity.EvaluatorRunStatus_Success: + return h.taskRepo.IncrTaskRunSuccessCount(ctx, taskID, taskRunID) + case entity.EvaluatorRunStatus_Fail: + return h.taskRepo.IncrTaskRunFailCount(ctx, taskID, taskRunID) + default: + logs.CtxDebug(ctx, "未知的评估状态,跳过计数: taskID=%d, taskRunID=%d, status=%d", + taskID, taskRunID, turn.Status) + return nil + } } -func (h *TraceHubServiceImpl) getSpan(ctx context.Context, tenants []string, spanIds []string, traceId, workspaceId string, startAt, endAt int64) ([]*loop_span.Span, error) { - if len(spanIds) == 0 || workspaceId == "" { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) - } - var filterFields []*loop_span.FilterField - filterFields = append(filterFields, &loop_span.FilterField{ - FieldName: loop_span.SpanFieldSpanId, - FieldType: loop_span.FieldTypeString, - Values: spanIds, - QueryType: ptr.Of(loop_span.QueryTypeEnumIn), - }) - filterFields = append(filterFields, &loop_span.FilterField{ - FieldName: loop_span.SpanFieldSpaceId, - FieldType: loop_span.FieldTypeString, - Values: []string{workspaceId}, - QueryType: ptr.Of(loop_span.QueryTypeEnumEq), - }) - if traceId != "" { - filterFields = append(filterFields, &loop_span.FilterField{ - FieldName: loop_span.SpanFieldTraceId, - FieldType: loop_span.FieldTypeString, - Values: []string{traceId}, + QueryType: ptr.Of(loop_span.QueryTypeEnumEq), }) } @@ -213,9 +213,9 @@ func (h *TraceHubServiceImpl) getSpan(ctx context.Context, tenants []string, spa return res.Spans, nil } -// updateTaskRunStatusCount 根据Status更新Redis计数 +// updateTaskRunStatusCount updates the Redis count based on Status func (h *TraceHubServiceImpl) updateTaskRunStatusCount(ctx context.Context, taskID int64, turn *entity.OnlineExptTurnEvalResult) error { - // 从Ext中获取taskRunID + // Retrieve taskRunID from Ext taskRunIDStr := turn.Ext["run_id"] if taskRunIDStr == "" { return fmt.Errorf("task_run_id not found in ext") @@ -225,7 +225,7 @@ func (h *TraceHubServiceImpl) updateTaskRunStatusCount(ctx context.Context, task if err != nil { return fmt.Errorf("invalid task_run_id: %s, err: %v", taskRunIDStr, err) } - // 根据Status增加相应计数 + // Increase the corresponding counter based on Status switch turn.Status { case entity.EvaluatorRunStatus_Success: return h.taskRepo.IncrTaskRunSuccessCount(ctx, taskID, taskRunID) From 3ac6d9de72d6afb47697b275e36ac30403113a5e Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 13:10:45 +0800 Subject: [PATCH 419/462] chore: [Coda] translate tracehub scheduled logs to english (LogID: 20251011130741192168031096951F15E) Co-Authored-By: Coda --- .../taskexe/tracehub/scheduled_task.go | 126 +++++++++--------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 797ee337e..bebb00569 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -19,7 +19,7 @@ import ( "github.com/pkg/errors" ) -// TaskRunCountInfo TaskRunCount信息结构 +// TaskRunCountInfo defines the TaskRunCount structure type TaskRunCountInfo struct { TaskID int64 TaskRunID int64 @@ -28,7 +28,7 @@ type TaskRunCountInfo struct { TaskRunFailCount int64 } -// TaskCacheInfo 任务缓存信息结构 +// TaskCacheInfo represents task cache metadata type TaskCacheInfo struct { WorkspaceIDs []string BotIDs []string @@ -36,16 +36,16 @@ type TaskCacheInfo struct { UpdateTime time.Time } -// startScheduledTask 启动定时任务goroutine - 使用5分钟间隔的定时器 +// startScheduledTask launches the scheduled task goroutine with a five-minute interval timer func (h *TraceHubServiceImpl) startScheduledTask() { go func() { for { select { case <-h.scheduledTaskTicker.C: - // 执行定时任务 + // Execute scheduled task h.runScheduledTask() case <-h.stopChan: - // 停止定时任务 + // Stop scheduled task h.scheduledTaskTicker.Stop() return } @@ -53,16 +53,16 @@ func (h *TraceHubServiceImpl) startScheduledTask() { }() } -// startSyncTaskRunCounts 启动数据同步定时任务goroutine - 使用1分钟间隔的定时器 +// startSyncTaskRunCounts launches the data synchronization goroutine with a one-minute interval timer func (h *TraceHubServiceImpl) startSyncTaskRunCounts() { go func() { for { select { case <-h.syncTaskTicker.C: - // 执行定时任务 + // Execute scheduled task h.syncTaskRunCounts() case <-h.stopChan: - // 停止定时任务 + // Stop scheduled task h.syncTaskTicker.Stop() return } @@ -70,16 +70,16 @@ func (h *TraceHubServiceImpl) startSyncTaskRunCounts() { }() } -// startSyncTaskCache 启动任务缓存定时任务goroutine - 使用1分钟间隔的定时器 +// startSyncTaskCache launches the task cache synchronization goroutine with a one-minute interval timer func (h *TraceHubServiceImpl) startSyncTaskCache() { go func() { for { select { case <-h.syncTaskTicker.C: - // 执行定时任务 + // Execute scheduled task h.syncTaskCache() case <-h.stopChan: - // 停止定时任务 + // Stop scheduled task h.syncTaskTicker.Stop() return } @@ -92,14 +92,14 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) ctx = fillCtxWithEnv(ctx) - logs.CtxInfo(ctx, "定时任务开始执行...") - // 读取所有非终态(成功/禁用)任务 + logs.CtxInfo(ctx, "Scheduled task execution started...") + // Read all non-final (success/disabled) tasks var taskPOs []*entity.ObservabilityTask var err error var offset int32 = 0 const limit int32 = 1000 - // 分页循环读取所有任务 + // Iterate through all tasks with pagination for { tasklist, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ ReqLimit: limit, @@ -120,22 +120,22 @@ func (h *TraceHubServiceImpl) runScheduledTask() { }, }) if err != nil { - logs.CtxError(ctx, "获取非终态任务列表失败", "err", err) + logs.CtxError(ctx, "Failed to retrieve non-final task list", "err", err) return } - // 将当前页的任务添加到总列表中 + // Append current page tasks to the overall list taskPOs = append(taskPOs, tasklist...) - // 如果当前页返回的任务数量小于限制数量,说明已经是最后一页 + // If the number of tasks returned is less than the limit, this is the last page if len(tasklist) < int(limit) { break } - // 继续下一页,offset增加1000 + // Continue to the next page by increasing offset by 1000 offset += limit } - logs.CtxInfo(ctx, "定时任务获取到任务数量:%d", len(taskPOs)) + logs.CtxInfo(ctx, "Scheduled task retrieved %d tasks", len(taskPOs)) for _, taskPO := range taskPOs { var taskRun, backfillTaskRun *entity.TaskRun backfillTaskRun = taskPO.GetBackfillTaskRun() @@ -145,8 +145,8 @@ func (h *TraceHubServiceImpl) runScheduledTask() { endTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetEndAt()) startTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetStartAt()) proc := h.taskProcessor.GetTaskProcessor(taskInfo.TaskType) - // 达到任务时间期限 - // 到任务结束时间就结束 + // Reach task time limit + // End task when reaching the end time logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) if taskInfo.GetRule().GetBackfillEffectiveTime().GetEndAt() != 0 && taskInfo.GetRule().GetEffectiveTime().GetEndAt() != 0 { if time.Now().After(endTime) && backfillTaskRun.RunStatus == task.RunStatusDone { @@ -185,7 +185,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } - // 如果任务状态为unstarted,到任务开始时间就开始create + // If the task status is unstarted, create a run when the start time is reached if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { if !taskInfo.GetRule().GetSampler().GetIsCycle() { err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ @@ -212,10 +212,10 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } - // 处理taskRun + // Handle taskRun if taskInfo.GetTaskStatus() == task.TaskStatusRunning && taskInfo.GetTaskStatus() == task.TaskStatusPending { logs.CtxInfo(ctx, "taskID:%d, taskRun.RunEndAt:%v", taskInfo.GetID(), taskRun.RunEndAt) - // 重复任务的处理:达到单次任务时间期限 + // Handle recurring tasks: reach single task time limit if time.Now().After(taskRun.RunEndAt) { logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ @@ -245,16 +245,16 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } -// syncTaskRunCounts 同步TaskRunCount到数据库 +// syncTaskRunCounts synchronizes TaskRunCount to the database func (h *TraceHubServiceImpl) syncTaskRunCounts() { ctx := context.Background() logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) ctx = fillCtxWithEnv(ctx) - logs.CtxInfo(ctx, "开始同步TaskRunCounts到数据库...") + logs.CtxInfo(ctx, "Start syncing TaskRunCounts to the database...") - // 1. 获取非终态任务列表 + // 1. Retrieve non-final task list taskPOs, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ ReqLimit: 1000, ReqOffset: 0, @@ -278,13 +278,13 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { return } if len(taskPOs) == 0 { - logs.CtxInfo(ctx, "没有非终态任务需要同步") + logs.CtxInfo(ctx, "No non-final tasks to synchronize") return } - logs.CtxInfo(ctx, "获取到非终态任务数量,count:%d", len(taskPOs)) + logs.CtxInfo(ctx, "Retrieved non-final tasks, count:%d", len(taskPOs)) - // 2. 收集所有需要同步的TaskRun信息 + // 2. Collect TaskRun info requiring synchronization var taskRunInfos []*TaskRunCountInfo for _, taskPO := range taskPOs { if len(taskPO.TaskRuns) == 0 { @@ -300,13 +300,13 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { } if len(taskRunInfos) == 0 { - logs.CtxInfo(ctx, "没有TaskRun需要同步") + logs.CtxInfo(ctx, "No TaskRun requires synchronization") return } - logs.CtxInfo(ctx, "需要同步的TaskRun数量", "count", len(taskRunInfos)) + logs.CtxInfo(ctx, "TaskRuns pending synchronization, count:%d", len(taskRunInfos)) - // 3. 批量处理TaskRun,每批50个 + // 3. Process TaskRuns in batches of 50 batchSize := 50 for i := 0; i < len(taskRunInfos); i += batchSize { end := i + batchSize @@ -319,39 +319,39 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { } } -// processBatch 批量处理TaskRun计数同步 +// processBatch handles TaskRun count synchronization for a batch func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRunCountInfo) { - logs.CtxInfo(ctx, "开始处理批次", "batchSize", len(batch)) + logs.CtxInfo(ctx, "Start processing batch, batchSize:%d", len(batch)) - // 1. 批量读取Redis计数数据 + // 1. Read Redis counters in bulk for _, info := range batch { - // 读取taskruncount + // Read task run count count, err := h.taskRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) if err != nil || count == -1 { - logs.CtxWarn(ctx, "获取TaskRunCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) + logs.CtxWarn(ctx, "Failed to get TaskRunCount, taskID:%d, taskRunID:%d, err:%v", info.TaskID, info.TaskRunID, err) } else { info.TaskRunCount = count } - // 读取taskrunscesscount + // Read task run success count successCount, err := h.taskRepo.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) if err != nil || successCount == -1 { - logs.CtxWarn(ctx, "获取TaskRunSuccessCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) + logs.CtxWarn(ctx, "Failed to get TaskRunSuccessCount, taskID:%d, taskRunID:%d, err:%v", info.TaskID, info.TaskRunID, err) successCount = 0 } else { info.TaskRunSuccCount = successCount } - // 读取taskrunfailcount + // Read task run fail count failCount, err := h.taskRepo.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) if err != nil || failCount == -1 { - logs.CtxWarn(ctx, "获取TaskRunFailCount失败", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) + logs.CtxWarn(ctx, "Failed to get TaskRunFailCount, taskID:%d, taskRunID:%d, err:%v", info.TaskID, info.TaskRunID, err) failCount = 0 } else { info.TaskRunFailCount = failCount } - logs.CtxDebug(ctx, "读取计数数据", + logs.CtxDebug(ctx, "Read count data", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "runCount", info.TaskRunCount, @@ -359,51 +359,51 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun "failCount", info.TaskRunFailCount) } - // 2. 批量更新数据库 + // 2. Batch update the database for _, info := range batch { err := h.updateTaskRunDetail(ctx, info) if err != nil { - logs.CtxError(ctx, "更新TaskRun详情失败", + logs.CtxError(ctx, "Failed to update TaskRun detail", "taskID", info.TaskID, "taskRunID", info.TaskRunID, "err", err) } else { - logs.CtxDebug(ctx, "更新TaskRun详情成功", + logs.CtxDebug(ctx, "Successfully updated TaskRun detail", "taskID", info.TaskID, "taskRunID", info.TaskRunID) } } - logs.CtxInfo(ctx, "批次处理完成", + logs.CtxInfo(ctx, "Batch processing completed", "batchSize", len(batch)) } -// updateTaskRunDetail 更新TaskRun的run_detail字段 +// updateTaskRunDetail updates the run_detail field for a TaskRun func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *TaskRunCountInfo) error { - // 构建run_detail JSON数据 + // Build run_detail JSON payload runDetail := map[string]interface{}{ "total_count": info.TaskRunCount, "success_count": info.TaskRunSuccCount, "failed_count": info.TaskRunFailCount, } - // 序列化为JSON字符串 + // Serialize to JSON string runDetailJSON, err := json.Marshal(runDetail) if err != nil { - return errors.Wrap(err, "序列化run_detail失败") + return errors.Wrap(err, "failed to marshal run_detail") } runDetailStr := string(runDetailJSON) - // 构建更新映射 + // Build update map updateMap := map[string]interface{}{ "run_detail": &runDetailStr, } - // 使用乐观锁更新 + // Update with optimistic concurrency control err = h.taskRepo.UpdateTaskRunWithOCC(ctx, info.TaskRunID, 0, updateMap) if err != nil { - return errors.Wrap(err, "更新TaskRun失败") + return errors.Wrap(err, "failed to update TaskRun") } return nil @@ -415,29 +415,29 @@ func (h *TraceHubServiceImpl) syncTaskCache() { ctx = logs.SetLogID(ctx, logID) ctx = fillCtxWithEnv(ctx) - logs.CtxInfo(ctx, "开始同步任务缓存...") + logs.CtxInfo(ctx, "Start syncing task cache...") - // 1. 从数据库中获取所有非终态任务的spaceID、botID和task信息 + // 1. Fetch workspace, bot, and task information for non-final tasks from the database spaceIDs, botIDs, tasks := h.taskRepo.GetObjListWithTask(ctx) - logs.CtxInfo(ctx, "获取到任务数量", "taskCount", len(tasks), "spaceCount", len(spaceIDs), "botCount", len(botIDs)) + logs.CtxInfo(ctx, "Retrieved tasks, taskCount:%d, spaceCount:%d, botCount:%d", len(tasks), len(spaceIDs), len(botIDs)) - // 2. 构建新的缓存映射 + // 2. Build new cache map var newCache = TaskCacheInfo{ WorkspaceIDs: spaceIDs, BotIDs: botIDs, Tasks: tasks, - UpdateTime: time.Now(), // 设置当前时间为更新时间 + UpdateTime: time.Now(), // Set current time as update timestamp } - // 3. 清空旧缓存并更新新缓存 + // 3. Clear the old cache and update with the new cache h.taskCacheLock.Lock() defer h.taskCacheLock.Unlock() - // 清空旧缓存 + // Clear old cache h.taskCache.Delete("ObjListWithTask") - // 4. 将新缓存写入本地缓存 + // 4. Store the new cache into local cache h.taskCache.Store("ObjListWithTask", &newCache) - logs.CtxInfo(ctx, "任务缓存同步完成", "taskCount", len(tasks), "updateTime", newCache.UpdateTime.Format(time.RFC3339)) + logs.CtxInfo(ctx, "Task cache synchronization completed, taskCount:%d, updateTime:%s", len(tasks), newCache.UpdateTime.Format(time.RFC3339)) } From 848c37d817b37fad279b5a136b116ca5ab3c0d94 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 13:14:44 +0800 Subject: [PATCH 420/462] chore: [Coda] translate tracehub scheduled task to english (LogID: 20251011130741192168031096951F15E) Co-Authored-By: Coda --- .../taskexe/tracehub/scheduled_task.go | 87 ++++++++++--------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index bebb00569..3e4045924 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -19,7 +19,7 @@ import ( "github.com/pkg/errors" ) -// TaskRunCountInfo defines the TaskRunCount structure +// TaskRunCountInfo represents the TaskRunCount information structure type TaskRunCountInfo struct { TaskID int64 TaskRunID int64 @@ -28,7 +28,7 @@ type TaskRunCountInfo struct { TaskRunFailCount int64 } -// TaskCacheInfo represents task cache metadata +// TaskCacheInfo represents task cache information type TaskCacheInfo struct { WorkspaceIDs []string BotIDs []string @@ -53,7 +53,7 @@ func (h *TraceHubServiceImpl) startScheduledTask() { }() } -// startSyncTaskRunCounts launches the data synchronization goroutine with a one-minute interval timer +// startSyncTaskRunCounts launches the data sync scheduled task goroutine with a one-minute interval timer func (h *TraceHubServiceImpl) startSyncTaskRunCounts() { go func() { for { @@ -70,7 +70,7 @@ func (h *TraceHubServiceImpl) startSyncTaskRunCounts() { }() } -// startSyncTaskCache launches the task cache synchronization goroutine with a one-minute interval timer +// startSyncTaskCache launches the task cache scheduled task goroutine with a one-minute interval timer func (h *TraceHubServiceImpl) startSyncTaskCache() { go func() { for { @@ -92,14 +92,14 @@ func (h *TraceHubServiceImpl) runScheduledTask() { logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) ctx = fillCtxWithEnv(ctx) - logs.CtxInfo(ctx, "Scheduled task execution started...") + logs.CtxInfo(ctx, "Scheduled task started...") // Read all non-final (success/disabled) tasks var taskPOs []*entity.ObservabilityTask var err error var offset int32 = 0 const limit int32 = 1000 - // Iterate through all tasks with pagination + // Paginate through all tasks for { tasklist, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ ReqLimit: limit, @@ -120,22 +120,22 @@ func (h *TraceHubServiceImpl) runScheduledTask() { }, }) if err != nil { - logs.CtxError(ctx, "Failed to retrieve non-final task list", "err", err) + logs.CtxError(ctx, "Failed to get non-final task list", "err", err) return } - // Append current page tasks to the overall list + // Add tasks from the current page to the full list taskPOs = append(taskPOs, tasklist...) - // If the number of tasks returned is less than the limit, this is the last page + // If fewer tasks than limit are returned, this is the last page if len(tasklist) < int(limit) { break } - // Continue to the next page by increasing offset by 1000 + // Move to the next page, increasing offset by 1000 offset += limit } - logs.CtxInfo(ctx, "Scheduled task retrieved %d tasks", len(taskPOs)) + logs.CtxInfo(ctx, "Scheduled task retrieved number of tasks:%d", len(taskPOs)) for _, taskPO := range taskPOs { var taskRun, backfillTaskRun *entity.TaskRun backfillTaskRun = taskPO.GetBackfillTaskRun() @@ -145,8 +145,8 @@ func (h *TraceHubServiceImpl) runScheduledTask() { endTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetEndAt()) startTime := time.UnixMilli(taskInfo.GetRule().GetEffectiveTime().GetStartAt()) proc := h.taskProcessor.GetTaskProcessor(taskInfo.TaskType) - // Reach task time limit - // End task when reaching the end time + // Task time horizon reached + // End when the task end time is reached logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) if taskInfo.GetRule().GetBackfillEffectiveTime().GetEndAt() != 0 && taskInfo.GetRule().GetEffectiveTime().GetEndAt() != 0 { if time.Now().After(endTime) && backfillTaskRun.RunStatus == task.RunStatusDone { @@ -185,7 +185,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } } } - // If the task status is unstarted, create a run when the start time is reached + // If the task status is unstarted, create it once the task start time is reached if taskInfo.GetTaskStatus() == task.TaskStatusUnstarted && time.Now().After(startTime) { if !taskInfo.GetRule().GetSampler().GetIsCycle() { err = proc.OnCreateTaskRunChange(ctx, taskexe.OnCreateTaskRunChangeReq{ @@ -215,7 +215,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // Handle taskRun if taskInfo.GetTaskStatus() == task.TaskStatusRunning && taskInfo.GetTaskStatus() == task.TaskStatusPending { logs.CtxInfo(ctx, "taskID:%d, taskRun.RunEndAt:%v", taskInfo.GetID(), taskRun.RunEndAt) - // Handle recurring tasks: reach single task time limit + // Handling repeated tasks: single task time horizon reached if time.Now().After(taskRun.RunEndAt) { logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ @@ -245,14 +245,14 @@ func (h *TraceHubServiceImpl) runScheduledTask() { } -// syncTaskRunCounts synchronizes TaskRunCount to the database +// syncTaskRunCounts synchronizes TaskRunCount data to the database func (h *TraceHubServiceImpl) syncTaskRunCounts() { ctx := context.Background() logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) ctx = fillCtxWithEnv(ctx) - logs.CtxInfo(ctx, "Start syncing TaskRunCounts to the database...") + logs.CtxInfo(ctx, "Start syncing TaskRunCounts to database...") // 1. Retrieve non-final task list taskPOs, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ @@ -278,13 +278,13 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { return } if len(taskPOs) == 0 { - logs.CtxInfo(ctx, "No non-final tasks to synchronize") + logs.CtxInfo(ctx, "No non-final tasks need syncing") return } - logs.CtxInfo(ctx, "Retrieved non-final tasks, count:%d", len(taskPOs)) + logs.CtxInfo(ctx, "Retrieved non-final task count:%d", len(taskPOs)) - // 2. Collect TaskRun info requiring synchronization + // 2. Collect all TaskRun information that needs syncing var taskRunInfos []*TaskRunCountInfo for _, taskPO := range taskPOs { if len(taskPO.TaskRuns) == 0 { @@ -300,13 +300,13 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { } if len(taskRunInfos) == 0 { - logs.CtxInfo(ctx, "No TaskRun requires synchronization") + logs.CtxInfo(ctx, "No TaskRun requires syncing") return } - logs.CtxInfo(ctx, "TaskRuns pending synchronization, count:%d", len(taskRunInfos)) + logs.CtxInfo(ctx, "Number of TaskRun entries requiring syncing:%d", len(taskRunInfos)) - // 3. Process TaskRuns in batches of 50 + // 3. Process TaskRun entries in batches of 50 batchSize := 50 for i := 0; i < len(taskRunInfos); i += batchSize { end := i + batchSize @@ -319,13 +319,13 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { } } -// processBatch handles TaskRun count synchronization for a batch +// processBatch synchronizes TaskRun counts in batches func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRunCountInfo) { logs.CtxInfo(ctx, "Start processing batch, batchSize:%d", len(batch)) - // 1. Read Redis counters in bulk + // 1. Read Redis count data in batch for _, info := range batch { - // Read task run count + // Read taskruncount count, err := h.taskRepo.GetTaskRunCount(ctx, info.TaskID, info.TaskRunID) if err != nil || count == -1 { logs.CtxWarn(ctx, "Failed to get TaskRunCount, taskID:%d, taskRunID:%d, err:%v", info.TaskID, info.TaskRunID, err) @@ -333,7 +333,7 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun info.TaskRunCount = count } - // Read task run success count + // Read taskrun success count successCount, err := h.taskRepo.GetTaskRunSuccessCount(ctx, info.TaskID, info.TaskRunID) if err != nil || successCount == -1 { logs.CtxWarn(ctx, "Failed to get TaskRunSuccessCount, taskID:%d, taskRunID:%d, err:%v", info.TaskID, info.TaskRunID, err) @@ -342,7 +342,7 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun info.TaskRunSuccCount = successCount } - // Read task run fail count + // Read taskrun fail count failCount, err := h.taskRepo.GetTaskRunFailCount(ctx, info.TaskID, info.TaskRunID) if err != nil || failCount == -1 { logs.CtxWarn(ctx, "Failed to get TaskRunFailCount, taskID:%d, taskRunID:%d, err:%v", info.TaskID, info.TaskRunID, err) @@ -359,7 +359,7 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun "failCount", info.TaskRunFailCount) } - // 2. Batch update the database + // 2. Update database in batch for _, info := range batch { err := h.updateTaskRunDetail(ctx, info) if err != nil { @@ -368,7 +368,7 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun "taskRunID", info.TaskRunID, "err", err) } else { - logs.CtxDebug(ctx, "Successfully updated TaskRun detail", + logs.CtxDebug(ctx, "Succeeded in updating TaskRun detail", "taskID", info.TaskID, "taskRunID", info.TaskRunID) } @@ -378,19 +378,19 @@ func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRun "batchSize", len(batch)) } -// updateTaskRunDetail updates the run_detail field for a TaskRun +// updateTaskRunDetail updates the run_detail field of TaskRun func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *TaskRunCountInfo) error { - // Build run_detail JSON payload + // Build run_detail JSON data runDetail := map[string]interface{}{ "total_count": info.TaskRunCount, "success_count": info.TaskRunSuccCount, "failed_count": info.TaskRunFailCount, } - // Serialize to JSON string + // Serialize into JSON string runDetailJSON, err := json.Marshal(runDetail) if err != nil { - return errors.Wrap(err, "failed to marshal run_detail") + return errors.Wrap(err, "Failed to serialize run_detail") } runDetailStr := string(runDetailJSON) @@ -400,10 +400,10 @@ func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *Tas "run_detail": &runDetailStr, } - // Update with optimistic concurrency control + // Update using optimistic locking err = h.taskRepo.UpdateTaskRunWithOCC(ctx, info.TaskRunID, 0, updateMap) if err != nil { - return errors.Wrap(err, "failed to update TaskRun") + return errors.Wrap(err, "Failed to update TaskRun") } return nil @@ -417,27 +417,28 @@ func (h *TraceHubServiceImpl) syncTaskCache() { logs.CtxInfo(ctx, "Start syncing task cache...") - // 1. Fetch workspace, bot, and task information for non-final tasks from the database + // 1. Retrieve spaceID, botID, and task information for all non-final tasks from the database spaceIDs, botIDs, tasks := h.taskRepo.GetObjListWithTask(ctx) - logs.CtxInfo(ctx, "Retrieved tasks, taskCount:%d, spaceCount:%d, botCount:%d", len(tasks), len(spaceIDs), len(botIDs)) + logs.CtxInfo(ctx, "Retrieved task information, taskCount:%d, spaceCount:%d, botCount:%d", len(tasks), len(spaceIDs), len(botIDs)) - // 2. Build new cache map + // 2. Build a new cache map var newCache = TaskCacheInfo{ WorkspaceIDs: spaceIDs, BotIDs: botIDs, Tasks: tasks, - UpdateTime: time.Now(), // Set current time as update timestamp + UpdateTime: time.Now(), // Set the current time as the update time } - // 3. Clear the old cache and update with the new cache + // 3. Clear old cache and update with new cache h.taskCacheLock.Lock() defer h.taskCacheLock.Unlock() // Clear old cache h.taskCache.Delete("ObjListWithTask") - // 4. Store the new cache into local cache + // 4. Write new cache into local cache h.taskCache.Store("ObjListWithTask", &newCache) - logs.CtxInfo(ctx, "Task cache synchronization completed, taskCount:%d, updateTime:%s", len(tasks), newCache.UpdateTime.Format(time.RFC3339)) + logs.CtxInfo(ctx, "Task cache sync completed, taskCount:%d, updateTime:%s", len(tasks), newCache.UpdateTime.Format(time.RFC3339)) } +} \ No newline at end of file From 7ebc7ffcd77db5b0f88863087107d44b0f9158cd Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 13:20:48 +0800 Subject: [PATCH 421/462] chore: [Coda] translate subscriber comments to english (LogID: 20251011130741192168031096951F15E) Co-Authored-By: Coda --- .../task/service/taskexe/tracehub/scheduled_task.go | 1 - .../task/service/taskexe/tracehub/subscriber.go | 11 +++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 3e4045924..47f33fa9c 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -441,4 +441,3 @@ func (h *TraceHubServiceImpl) syncTaskCache() { logs.CtxInfo(ctx, "Task cache sync completed, taskCount:%d, updateTime:%s", len(tasks), newCache.UpdateTime.Format(time.RFC3339)) } -} \ No newline at end of file diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go index 20427d0d1..1cc4a1282 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/subscriber.go @@ -39,7 +39,7 @@ type spanSubscriber struct { buildHelper service.TraceFilterProcessorBuilder } -// Sampled 根据采样率计算是否被采样;采样数量将在 flush 时强制校验。 +// Sampled determines whether a span is sampled based on the sampling rate; the sample size will be validated during flush. func (s *spanSubscriber) Sampled() bool { t := s.getTask() if t == nil || t.Rule == nil || t.Rule.Sampler == nil { @@ -72,9 +72,8 @@ func combineFilters(filters ...*loop_span.FilterFields) *loop_span.FilterFields return filterAggr } -// Match 检查 span 是否与 task 的 filter 匹配。 +// Match checks whether the span matches the task filter. func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, error) { - task := s.t if task == nil || task.Rule == nil { return false, nil @@ -89,8 +88,8 @@ func (s *spanSubscriber) Match(ctx context.Context, span *loop_span.Span) (bool, return true, nil } func (s *spanSubscriber) buildSpanFilters(ctx context.Context, taskConfig *task.Task) *loop_span.FilterFields { - // 可以根据任务配置构建更复杂的过滤条件 - // 这里简化处理,返回 nil 表示不添加额外过滤 + // Additional filters can be constructed based on task configuration if needed. + // Simplified handling here: returning nil means no extra filters are applied. platformFilter, err := s.buildHelper.BuildPlatformRelatedFilter(ctx, loop_span.PlatformType(taskConfig.GetRule().GetSpanFilters().GetPlatformType())) if err != nil { @@ -200,4 +199,4 @@ func (s *spanSubscriber) AddSpan(ctx context.Context, span *loop_span.Span) erro } return nil -} +} \ No newline at end of file From 7f6efcc7414bdc9a6c23638627f480060c26ba06 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 13:24:06 +0800 Subject: [PATCH 422/462] chore: [Coda] translate trace hub comments to english (LogID: 20251011130741192168031096951F15E) Co-Authored-By: Coda --- .../service/taskexe/tracehub/trace_hub.go | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 63eb2cd4a..dafe385ad 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -49,9 +49,9 @@ func NewTraceHubImpl( aid int32, backfillProducer mq.IBackfillProducer, ) (ITraceHubService, error) { - // 创建两个不同间隔的独立定时器 - scheduledTaskTicker := time.NewTicker(5 * time.Minute) // 任务状态生命周期管理 - 5分钟间隔 - syncTaskTicker := time.NewTicker(2 * time.Minute) // 数据同步 - 1分钟间隔 + // Create two independent timers with different intervals + scheduledTaskTicker := time.NewTicker(5 * time.Minute) // Task status lifecycle management - 5-minute interval + syncTaskTicker := time.NewTicker(2 * time.Minute) // Data synchronization - 1-minute interval impl := &TraceHubServiceImpl{ taskRepo: tRepo, scheduledTaskTicker: scheduledTaskTicker, @@ -66,7 +66,7 @@ func NewTraceHubImpl( backfillProducer: backfillProducer, } - // 立即启动定时任务 + // Start the scheduled tasks immediately impl.startScheduledTask() impl.startSyncTaskRunCounts() impl.startSyncTaskCache() @@ -75,8 +75,8 @@ func NewTraceHubImpl( } type TraceHubServiceImpl struct { - scheduledTaskTicker *time.Ticker // 任务状态生命周期管理定时器 - 5分钟间隔 - syncTaskTicker *time.Ticker // 数据同步定时器 - 1分钟间隔 + scheduledTaskTicker *time.Ticker // Task status lifecycle management timer - 5-minute interval + syncTaskTicker *time.Ticker // Data synchronization timer - 1-minute interval stopChan chan struct{} taskRepo repo.ITaskRepo traceRepo trace_repo.ITraceRepo @@ -90,7 +90,7 @@ type TraceHubServiceImpl struct { flushErrLock sync.Mutex flushErr []error - // 本地缓存 - 缓存非终态任务信息 + // Local cache - caching non-terminal task information taskCache sync.Map taskCacheLock sync.RWMutex @@ -188,7 +188,7 @@ func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loo merr = &multierror.Error{} keep int ) - // 按照详细的filter规则匹配数据 + // Match data according to detailed filter rules for _, s := range subscribers { ok, err := s.Match(ctx, span) logs.CtxInfo(ctx, "Match span, task_id=%d, trace_id=%s, span_id=%s, ok=%v, err=%v", s.taskID, span.TraceID, span.SpanID, ok, err) @@ -212,8 +212,8 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S logs.CtxWarn(ctx, "span start time is before task cycle start time, trace_id=%s, span_id=%s", span.TraceID, span.SpanID) continue } - // 第一步task状态变更的锁 - // taskrun的状态 + // First step: lock for task status change + // Task run status var runStartAt, runEndAt int64 if sub.t.GetTaskStatus() == task.TaskStatusUnstarted { logs.CtxWarn(ctx, "task is unstarted, need sub.Creative") @@ -240,7 +240,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S continue } } - //获取对应的taskconfig + // Fetch the corresponding task config taskRunConfig, err := h.taskRepo.GetLatestNewDataTaskRun(ctx, sub.t.WorkspaceID, sub.taskID) if err != nil { logs.CtxWarn(ctx, "GetLatestNewDataTaskRun, task_id=%d, err=%v", sub.taskID, err) @@ -268,12 +268,12 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } } sampler := sub.t.GetRule().GetSampler() - //获取对应的taskcount和subtaskcount + // Fetch the corresponding task count and subtask count taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, taskRunConfig.ID) logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) endTime := time.UnixMilli(sub.t.GetRule().GetEffectiveTime().GetEndAt()) - // 达到任务时间期限 + // Reached task time limit if time.Now().After(endTime) { logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d, endTime=%v, now=%v", sub.taskID, endTime, time.Now()) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ @@ -286,7 +286,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S continue } } - // 达到任务上限 + // Reached task limit if taskCount+1 > sampler.GetSampleSize() { logs.CtxWarn(ctx, "taskCount+1 > sampler.GetSampleSize() Finish processor, task_id=%d", sub.taskID) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ @@ -300,7 +300,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } if sampler.GetIsCycle() { cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) - // 达到单次任务时间期限 + // Reached single cycle task time limit if time.Now().After(cycleEndTime) { logs.CtxInfo(ctx, "time.Now().After(cycleEndTime) Finish processor, task_id=%d", sub.taskID) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ @@ -319,7 +319,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S continue } } - // 达到单次任务上限 + // Reached single cycle task limit if taskRunCount+1 > sampler.GetCycleCount() { logs.CtxWarn(ctx, "taskRunCount+1 > sampler.GetCycleCount(), task_id=%d", sub.taskID) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ @@ -358,22 +358,22 @@ func (h *TraceHubServiceImpl) Close() { close(h.stopChan) } -// getObjListWithTaskFromCache 从缓存中获取任务列表,如果缓存为空则回退到数据库 +// getObjListWithTaskFromCache retrieves the task list from cache, falling back to the database if cache is empty func (h *TraceHubServiceImpl) getObjListWithTaskFromCache(ctx context.Context) ([]string, []string, []*entity.ObservabilityTask) { - // 首先尝试从缓存中获取任务 + // First, try to retrieve tasks from cache objListWithTask, ok := h.taskCache.Load("ObjListWithTask") if !ok { - // 缓存为空,回退到数据库 - logs.CtxInfo(ctx, "缓存为空,从数据库获取任务列表") + // Cache is empty, fallback to the database + logs.CtxInfo(ctx, "Cache is empty, retrieving task list from database") return h.taskRepo.GetObjListWithTask(ctx) } cacheInfo, ok := objListWithTask.(*TaskCacheInfo) if !ok { - logs.CtxError(ctx, "缓存数据类型错误") + logs.CtxError(ctx, "Cache data type mismatch") return h.taskRepo.GetObjListWithTask(ctx) } - logs.CtxInfo(ctx, "从缓存获取任务列表, taskCount=%d, spaceCount=%d, botCount=%d", len(cacheInfo.Tasks), len(cacheInfo.WorkspaceIDs), len(cacheInfo.BotIDs)) + logs.CtxInfo(ctx, "Retrieve task list from cache, taskCount=%d, spaceCount=%d, botCount=%d", len(cacheInfo.Tasks), len(cacheInfo.WorkspaceIDs), len(cacheInfo.BotIDs)) return cacheInfo.WorkspaceIDs, cacheInfo.BotIDs, cacheInfo.Tasks } From 9815c9a754b94b027e859f6c46eed9f5e77c39a2 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 13:31:28 +0800 Subject: [PATCH 423/462] chore: [Coda] translate auto evaluate processor to english (LogID: 20251011130741192168031096951F15E) Co-Authored-By: Coda --- .../taskexe/processor/auto_evaluate.go | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 027394c23..4fd37566e 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -81,7 +81,7 @@ func (p *AutoEvaluteProcessor) ValidateConfig(ctx context.Context, config any) e if len(evaluatorVersionIDs) == 0 { return errorx.NewByCode(obErrorx.CommonInvalidParamCode) } - // 检查评估器版本是否合法 + // Verify evaluator version validity evaluators, _, err := p.evalSvc.BatchGetEvaluatorVersions(ctx, &rpc.BatchGetEvaluatorVersionsParam{ WorkspaceID: cfg.GetWorkspaceID(), EvaluatorVersionIds: evaluatorVersionIDs, @@ -136,14 +136,9 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, trigger *taskexe.Trig AllowPartialAdd: gptr.Of(true), ExperimentID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptID()), ExperimentRunID: gptr.Of(taskRun.GetTaskRunConfig().GetAutoEvaluateRunConfig().GetExptRunID()), - //Ext: map[string]string{"workspace_id": strconv.FormatInt(workspaceID, 10), - // "span_id": trigger.Span.SpanID, "trace_id": trigger.Span.TraceID, - // "start_time": strconvh.FormatInt64(trigger.Span.StartTime), - // "task_id": strconvh.FormatInt64(trigger.Task.GetID()), - // "task_run_id": strconvh.FormatInt64(taskRun.ID), - // "platform_type": trigger.Task.GetRule().GetSpanFilters().GetPlatformType()}, - Session: session, + Session: session, }) + if err != nil { p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID, taskTTL) p.taskRepo.DecrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID, taskTTL) @@ -153,7 +148,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, trigger *taskexe.Trig } func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { - // todo[xun]:加锁 + // TODO[xun]: add lock taskRuns, err := p.taskRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) @@ -227,7 +222,7 @@ func (p *AutoEvaluteProcessor) OnUpdateTaskChange(ctx context.Context, currentTa default: return fmt.Errorf("OnUpdateChangeProcessor, valid taskOp:%s", taskOp) } - // 2、更新任务 + // Step 2: update task taskPO := tconv.TaskDTO2PO(ctx, currentTask, "", nil) err := p.taskRepo.UpdateTask(ctx, taskPO) if err != nil { @@ -247,7 +242,7 @@ func (p *AutoEvaluteProcessor) OnFinishTaskChange(ctx context.Context, param tas return err } if param.IsFinish { - logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v,isFinish:%v", param.Task.GetID(), param.TaskRun, param.IsFinish) + logs.CtxWarn(ctx, "OnFinishTaskChange, taskID:%d, taskRun:%+v, isFinish:%v", param.Task.GetID(), param.TaskRun, param.IsFinish) if err := p.OnUpdateTaskChange(ctx, param.Task, task.TaskStatusSuccess); err != nil { logs.CtxError(ctx, "OnUpdateChangeProcessor failed, taskID:%d, err:%v", param.Task.GetID(), err) return err @@ -280,7 +275,7 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { continue } - // todo[xun]:原来有历史数据兼容,plain_text 转为 text,需要刷数据, + // TODO[xun]: historical data compatibility, convert plain_text to text, data needs to be refreshed evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ Key: gptr.Of(fieldMapping.GetEvalSetName()), Name: gptr.Of(fieldMapping.GetEvalSetName()), @@ -303,13 +298,13 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) var datasetName, exptName string if param.RunType == task.TaskRunTypeBackFill { - datasetName = fmt.Sprintf("自动化任务评测集_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - exptName = fmt.Sprintf("自动化任务实验_历史回溯_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + datasetName = fmt.Sprintf("Auto Task Evaluation Set_Backfill_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("Auto Task Experiment_Backfill_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) } else { - datasetName = fmt.Sprintf("自动化任务评测集_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - exptName = fmt.Sprintf("自动化任务实验_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + datasetName = fmt.Sprintf("Auto Task Evaluation Set_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("Auto Task Experiment_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) } - // 1、创建评测集 + // Step 1: create evaluation dataset datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( 0, currentTask.GetWorkspaceID(), @@ -323,14 +318,14 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param return err } logs.CtxInfo(ctx, "[auto_task] AutoEvaluteProcessor OnChangeProcessor, datasetID:%d", datasetID) - // 2、创建实验 + // Step 2: create experiment maxAliveTime := param.RunEndAt - param.RunStartAt submitExperimentReq := rpc.SubmitExperimentReq{ WorkspaceID: currentTask.GetWorkspaceID(), EvalSetVersionID: gptr.Of(datasetID), EvaluatorVersionIds: evaluatorVersionIds, Name: ptr.Of(exptName), - Desc: gptr.Of("自动化任务实验"), + Desc: gptr.Of("Auto Task Experiment"), EvalSetID: gptr.Of(datasetID), EvaluatorFieldMapping: evaluatorFieldMappings, TargetFieldMapping: &expt.TargetFieldMapping{ @@ -360,7 +355,7 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param return err } - // 5、创建 taskrun + // Step 5: create task run taskRunConfig := &task.TaskRunConfig{ AutoEvaluateRunConfig: &task.AutoEvaluateRunConfig{ ExptID: exptID, @@ -415,9 +410,9 @@ func (p *AutoEvaluteProcessor) OnFinishTaskRunChange(ctx context.Context, param }); err != nil { return err } - // 设置taskRun状态为已完成 + // Set task run status to completed taskRun.RunStatus = task.RunStatusDone - // 更新taskRun + // Update task run err := p.taskRepo.UpdateTaskRun(ctx, taskRun) if err != nil { logs.CtxError(ctx, "[auto_task] OnFinishTaskRunProcessor, UpdateTaskRun err, taskRunID:%d, err:%v", taskRun.ID, err) From 0efd0abb139e59f1998b51475c226679e0d8e1e0 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 13:36:09 +0800 Subject: [PATCH 424/462] add conts --- .../service/taskexe/processor/auto_evaluate.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 4fd37566e..c5daa82cc 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -251,6 +251,13 @@ func (p *AutoEvaluteProcessor) OnFinishTaskChange(ctx context.Context, param tas return nil } +const ( + AutoEvaluateCN = "自动化任务实验" + AutoEvaluateI18N = "AutoEvaluate" + BackFillCN = "历史回溯" + BackFillI18N = "BackFill" +) + func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param taskexe.OnCreateTaskRunChangeReq) error { currentTask := param.CurrentTask ctx = session.WithCtxUser(ctx, &session.User{ID: currentTask.GetBaseInfo().GetCreatedBy().GetUserID()}) @@ -298,11 +305,11 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param logs.CtxInfo(ctx, "[auto_task] CreateDataset,category:%s", category) var datasetName, exptName string if param.RunType == task.TaskRunTypeBackFill { - datasetName = fmt.Sprintf("Auto Task Evaluation Set_Backfill_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - exptName = fmt.Sprintf("Auto Task Experiment_Backfill_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + datasetName = fmt.Sprintf("%s_%s_%s_%d.%d.%d.%d", AutoEvaluateCN, BackFillCN, currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("%s_%s_%s_%d.%d.%d.%d", AutoEvaluateCN, BackFillCN, currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) } else { - datasetName = fmt.Sprintf("Auto Task Evaluation Set_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - exptName = fmt.Sprintf("Auto Task Experiment_%s_%d.%d.%d.%d", currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + datasetName = fmt.Sprintf("%s_%s_%s_%d.%d.%d.%d", AutoEvaluateCN, currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("%s_%s_%s_%d.%d.%d.%d", AutoEvaluateCN, currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) } // Step 1: create evaluation dataset datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( From e768ccc369016a5616efadda57051b0ec922dd04 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 13:45:47 +0800 Subject: [PATCH 425/462] delete useless code --- .../task/service/taskexe/tracehub/callback.go | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go index f8bd167ba..703279387 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go @@ -165,31 +165,31 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr } return nil } - -// updateTaskRunStatusCount updates the Redis count based on Status -func (h *TraceHubServiceImpl) updateTaskRunStatusCount(ctx context.Context, taskID int64, turn *entity.OnlineExptTurnEvalResult) error { - // Retrieve taskRunID from Ext - taskRunIDStr := turn.Ext["run_id"] - if taskRunIDStr == "" { - return fmt.Errorf("task_run_id not found in ext") - } - - taskRunID, err := strconv.ParseInt(taskRunIDStr, 10, 64) - if err != nil { - return fmt.Errorf("invalid task_run_id: %s, err: %v", taskRunIDStr, err) - } - // Increase the corresponding counter based on Status - switch turn.Status { - case entity.EvaluatorRunStatus_Success: - return h.taskRepo.IncrTaskRunSuccessCount(ctx, taskID, taskRunID) - case entity.EvaluatorRunStatus_Fail: - return h.taskRepo.IncrTaskRunFailCount(ctx, taskID, taskRunID) - default: - logs.CtxDebug(ctx, "未知的评估状态,跳过计数: taskID=%d, taskRunID=%d, status=%d", - taskID, taskRunID, turn.Status) - return nil - } +func (h *TraceHubServiceImpl) getTenants(ctx context.Context, platform loop_span.PlatformType) ([]string, error) { + return h.tenantProvider.GetTenantsByPlatformType(ctx, platform) } +func (h *TraceHubServiceImpl) getSpan(ctx context.Context, tenants []string, spanIds []string, traceId, workspaceId string, startAt, endAt int64) ([]*loop_span.Span, error) { + if len(spanIds) == 0 || workspaceId == "" { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) + } + var filterFields []*loop_span.FilterField + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldSpanId, + FieldType: loop_span.FieldTypeString, + Values: spanIds, + QueryType: ptr.Of(loop_span.QueryTypeEnumIn), + }) + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldSpaceId, + FieldType: loop_span.FieldTypeString, + Values: []string{workspaceId}, + QueryType: ptr.Of(loop_span.QueryTypeEnumEq), + }) + if traceId != "" { + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldTraceId, + FieldType: loop_span.FieldTypeString, + Values: []string{traceId}, QueryType: ptr.Of(loop_span.QueryTypeEnumEq), }) From 6827d4541d43f851bc522705eb812b60d7279192 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 14:05:04 +0800 Subject: [PATCH 426/462] add fill ctx --- .../domain/task/service/taskexe/tracehub/backfill.go | 4 ++-- .../domain/task/service/taskexe/tracehub/scheduled_task.go | 6 +++--- .../domain/task/service/taskexe/tracehub/trace_hub.go | 7 +------ .../domain/task/service/taskexe/tracehub/utils.go | 5 ++++- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 6e5866a80..252a21599 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -29,7 +29,7 @@ const pageSize = 500 func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 1. Set the current task context - ctx = fillCtxWithEnv(ctx) + ctx = h.fillCtx(ctx) sub, err := h.setBackfillTask(ctx, event) if err != nil { return err @@ -500,4 +500,4 @@ func (h *TraceHubServiceImpl) sendBackfillMessage(ctx context.Context, event *en } return h.backfillProducer.SendBackfill(ctx, event) -} \ No newline at end of file +} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 47f33fa9c..0e5783244 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -91,7 +91,7 @@ func (h *TraceHubServiceImpl) runScheduledTask() { ctx := context.Background() logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) - ctx = fillCtxWithEnv(ctx) + ctx = h.fillCtx(ctx) logs.CtxInfo(ctx, "Scheduled task started...") // Read all non-final (success/disabled) tasks var taskPOs []*entity.ObservabilityTask @@ -250,7 +250,7 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { ctx := context.Background() logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) - ctx = fillCtxWithEnv(ctx) + ctx = h.fillCtx(ctx) logs.CtxInfo(ctx, "Start syncing TaskRunCounts to database...") @@ -413,7 +413,7 @@ func (h *TraceHubServiceImpl) syncTaskCache() { ctx := context.Background() logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) - ctx = fillCtxWithEnv(ctx) + ctx = h.fillCtx(ctx) logs.CtxInfo(ctx, "Start syncing task cache...") diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index dafe385ad..5d2e7e708 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -6,14 +6,11 @@ package tracehub import ( "context" "fmt" - "os" "slices" - "strconv" "sync" "time" "github.com/bytedance/gg/gslice" - "github.com/bytedance/gopkg/cloud/metainfo" "github.com/coze-dev/coze-loop/backend/infra/external/benefit" "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" @@ -107,9 +104,7 @@ type flushReq struct { const TagKeyResult = "tag_key" func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawSpan) error { - logs.CtxInfo(ctx, "XttEnv: %s", os.Getenv(XttEnv)) - ctx = fillCtxWithEnv(ctx) - ctx = metainfo.WithPersistentValue(ctx, "LANE_C_FORNAX_APPID", strconv.FormatInt(int64(h.aid), 10)) + ctx = h.fillCtx(ctx) logs.CtxInfo(ctx, "TraceHub start") var tags []metrics.T // 1、Convert to standard span and perform initial filtering based on space_id diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index 445f2af9a..29599623d 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -6,7 +6,9 @@ package tracehub import ( "context" "os" + "strconv" + "github.com/bytedance/gopkg/cloud/metainfo" "github.com/bytedance/sonic" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -29,7 +31,8 @@ func ToJSONString(ctx context.Context, obj interface{}) string { return jsonStr } -func fillCtxWithEnv(ctx context.Context) context.Context { +func (h *TraceHubServiceImpl) fillCtx(ctx context.Context) context.Context { + ctx = metainfo.WithPersistentValue(ctx, "LANE_C_FORNAX_APPID", strconv.FormatInt(int64(h.aid), 10)) if os.Getenv("TCE_HOST_ENV") == "boe" { ctx = context.WithValue(ctx, CtxKeyEnv, "boe_auto_task") } else { From 433c475757fd810f6129ab2bb581ba5b72dbeee7 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 14:21:51 +0800 Subject: [PATCH 427/462] fix --- .../task/service/taskexe/tracehub/callback.go | 78 +----------------- .../task/service/taskexe/tracehub/utils.go | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+), 77 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go index 703279387..f15339a7d 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go @@ -6,7 +6,6 @@ package tracehub import ( "context" "fmt" - "strconv" "time" "github.com/coze-dev/coze-loop/backend/infra/external/benefit" @@ -14,9 +13,6 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" - obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" - "github.com/coze-dev/coze-loop/backend/pkg/errorx" - "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" "github.com/samber/lo" ) @@ -55,7 +51,7 @@ func (h *TraceHubServiceImpl) CallBack(ctx context.Context, event *entity.AutoEv span := spans[0] // Newly added: write Redis counters based on the Status - err = h.updateTaskRunStatusCount(ctx, turn.GetTaskIDFromExt(), turn) + err = h.updateTaskRunDetailsCount(ctx, turn.GetTaskIDFromExt(), turn) if err != nil { logs.CtxWarn(ctx, "更新TaskRun状态计数失败: taskID=%d, status=%d, err=%v", turn.GetTaskIDFromExt(), turn.Status, err) @@ -165,75 +161,3 @@ func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.Corr } return nil } -func (h *TraceHubServiceImpl) getTenants(ctx context.Context, platform loop_span.PlatformType) ([]string, error) { - return h.tenantProvider.GetTenantsByPlatformType(ctx, platform) -} -func (h *TraceHubServiceImpl) getSpan(ctx context.Context, tenants []string, spanIds []string, traceId, workspaceId string, startAt, endAt int64) ([]*loop_span.Span, error) { - if len(spanIds) == 0 || workspaceId == "" { - return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) - } - var filterFields []*loop_span.FilterField - filterFields = append(filterFields, &loop_span.FilterField{ - FieldName: loop_span.SpanFieldSpanId, - FieldType: loop_span.FieldTypeString, - Values: spanIds, - QueryType: ptr.Of(loop_span.QueryTypeEnumIn), - }) - filterFields = append(filterFields, &loop_span.FilterField{ - FieldName: loop_span.SpanFieldSpaceId, - FieldType: loop_span.FieldTypeString, - Values: []string{workspaceId}, - QueryType: ptr.Of(loop_span.QueryTypeEnumEq), - }) - if traceId != "" { - filterFields = append(filterFields, &loop_span.FilterField{ - FieldName: loop_span.SpanFieldTraceId, - FieldType: loop_span.FieldTypeString, - Values: []string{traceId}, - - QueryType: ptr.Of(loop_span.QueryTypeEnumEq), - }) - } - res, err := h.traceRepo.ListSpans(ctx, &repo.ListSpansParam{ - Tenants: tenants, - Filters: &loop_span.FilterFields{ - FilterFields: filterFields, - }, - StartAt: startAt, - EndAt: endAt, - NotQueryAnnotation: true, - Limit: 2, - }) - if err != nil { - logs.CtxError(ctx, "failed to list span, %v", err) - return nil, err - } else if len(res.Spans) == 0 { - return nil, nil - } - return res.Spans, nil -} - -// updateTaskRunStatusCount updates the Redis count based on Status -func (h *TraceHubServiceImpl) updateTaskRunStatusCount(ctx context.Context, taskID int64, turn *entity.OnlineExptTurnEvalResult) error { - // Retrieve taskRunID from Ext - taskRunIDStr := turn.Ext["run_id"] - if taskRunIDStr == "" { - return fmt.Errorf("task_run_id not found in ext") - } - - taskRunID, err := strconv.ParseInt(taskRunIDStr, 10, 64) - if err != nil { - return fmt.Errorf("invalid task_run_id: %s, err: %v", taskRunIDStr, err) - } - // Increase the corresponding counter based on Status - switch turn.Status { - case entity.EvaluatorRunStatus_Success: - return h.taskRepo.IncrTaskRunSuccessCount(ctx, taskID, taskRunID) - case entity.EvaluatorRunStatus_Fail: - return h.taskRepo.IncrTaskRunFailCount(ctx, taskID, taskRunID) - default: - logs.CtxDebug(ctx, "未知的评估状态,跳过计数: taskID=%d, taskRunID=%d, status=%d", - taskID, taskRunID, turn.Status) - return nil - } -} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index 29599623d..de6f8b87d 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -5,11 +5,18 @@ package tracehub import ( "context" + "fmt" "os" "strconv" "github.com/bytedance/gopkg/cloud/metainfo" "github.com/bytedance/sonic" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" + "github.com/coze-dev/coze-loop/backend/pkg/lang/ptr" "github.com/coze-dev/coze-loop/backend/pkg/logs" ) @@ -43,3 +50,76 @@ func (h *TraceHubServiceImpl) fillCtx(ctx context.Context) context.Context { //} return ctx } + +func (h *TraceHubServiceImpl) getTenants(ctx context.Context, platform loop_span.PlatformType) ([]string, error) { + return h.tenantProvider.GetTenantsByPlatformType(ctx, platform) +} +func (h *TraceHubServiceImpl) getSpan(ctx context.Context, tenants []string, spanIds []string, traceId, workspaceId string, startAt, endAt int64) ([]*loop_span.Span, error) { + if len(spanIds) == 0 || workspaceId == "" { + return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode) + } + var filterFields []*loop_span.FilterField + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldSpanId, + FieldType: loop_span.FieldTypeString, + Values: spanIds, + QueryType: ptr.Of(loop_span.QueryTypeEnumIn), + }) + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldSpaceId, + FieldType: loop_span.FieldTypeString, + Values: []string{workspaceId}, + QueryType: ptr.Of(loop_span.QueryTypeEnumEq), + }) + if traceId != "" { + filterFields = append(filterFields, &loop_span.FilterField{ + FieldName: loop_span.SpanFieldTraceId, + FieldType: loop_span.FieldTypeString, + Values: []string{traceId}, + + QueryType: ptr.Of(loop_span.QueryTypeEnumEq), + }) + } + res, err := h.traceRepo.ListSpans(ctx, &repo.ListSpansParam{ + Tenants: tenants, + Filters: &loop_span.FilterFields{ + FilterFields: filterFields, + }, + StartAt: startAt, + EndAt: endAt, + NotQueryAnnotation: true, + Limit: 2, + }) + if err != nil { + logs.CtxError(ctx, "failed to list span, %v", err) + return nil, err + } else if len(res.Spans) == 0 { + return nil, nil + } + return res.Spans, nil +} + +// updateTaskRunStatusCount updates the Redis count based on Status +func (h *TraceHubServiceImpl) updateTaskRunDetailsCount(ctx context.Context, taskID int64, turn *entity.OnlineExptTurnEvalResult) error { + // Retrieve taskRunID from Ext + taskRunIDStr := turn.Ext["run_id"] + if taskRunIDStr == "" { + return fmt.Errorf("task_run_id not found in ext") + } + + taskRunID, err := strconv.ParseInt(taskRunIDStr, 10, 64) + if err != nil { + return fmt.Errorf("invalid task_run_id: %s, err: %v", taskRunIDStr, err) + } + // Increase the corresponding counter based on Status + switch turn.Status { + case entity.EvaluatorRunStatus_Success: + return h.taskRepo.IncrTaskRunSuccessCount(ctx, taskID, taskRunID) + case entity.EvaluatorRunStatus_Fail: + return h.taskRepo.IncrTaskRunFailCount(ctx, taskID, taskRunID) + default: + logs.CtxDebug(ctx, "未知的评估状态,跳过计数: taskID=%d, taskRunID=%d, status=%d", + taskID, taskRunID, turn.Status) + return nil + } +} From 6e11457f9bb102aebcb67b6b8d791b765b4e1e25 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 14:50:04 +0800 Subject: [PATCH 428/462] delete useless code --- .../task/service/taskexe/tracehub/backfill.go | 6 - .../task/service/taskexe/tracehub/callback.go | 2 +- .../taskexe/tracehub/scheduled_task.go | 190 +++++++----------- .../service/taskexe/tracehub/trace_hub.go | 16 +- .../task/service/taskexe/tracehub/utils.go | 4 + 5 files changed, 88 insertions(+), 130 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 252a21599..463944121 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -81,7 +81,6 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi // setBackfillTask sets the context for the current backfill task func (h *TraceHubServiceImpl) setBackfillTask(ctx context.Context, event *entity.BackFillEvent) (*spanSubscriber, error) { - taskConfig, err := h.taskRepo.GetTask(ctx, event.TaskID, nil, nil) if err != nil { logs.CtxError(ctx, "get task config failed, task_id=%d, err=%v", event.TaskID, err) @@ -132,11 +131,6 @@ func (h *TraceHubServiceImpl) listSpans(ctx context.Context, sub *spanSubscriber return err } - // todo: obtain page size from TCC configuration - //batchSize := c.tccCfg.BackfillProcessConfig().ListPageSize - //if batchSize == 0 { - // batchSize = pageSize - //} // Build query parameters listParam := &repo.ListSpansParam{ Tenants: tenants, diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go index f15339a7d..89b4bef30 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go @@ -90,12 +90,12 @@ func (h *TraceHubServiceImpl) CallBack(ctx context.Context, event *entity.AutoEv } return nil } + func (h *TraceHubServiceImpl) Correction(ctx context.Context, event *entity.CorrectionEvent) error { workspaceIDStr, workspaceID := event.GetWorkspaceIDFromExt() if workspaceID == 0 { return fmt.Errorf("workspace_id is empty") } - // TODO: move under loopspan tenants, err := h.getTenants(ctx, loop_span.PlatformType("loop_all")) if err != nil { return err diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 0e5783244..2c535b9ea 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -36,14 +36,14 @@ type TaskCacheInfo struct { UpdateTime time.Time } -// startScheduledTask launches the scheduled task goroutine with a five-minute interval timer +// startScheduledTask launches the scheduled task goroutine func (h *TraceHubServiceImpl) startScheduledTask() { go func() { for { select { case <-h.scheduledTaskTicker.C: // Execute scheduled task - h.runScheduledTask() + h.transformTaskStatus() case <-h.stopChan: // Stop scheduled task h.scheduledTaskTicker.Stop() @@ -51,32 +51,12 @@ func (h *TraceHubServiceImpl) startScheduledTask() { } } }() -} - -// startSyncTaskRunCounts launches the data sync scheduled task goroutine with a one-minute interval timer -func (h *TraceHubServiceImpl) startSyncTaskRunCounts() { go func() { for { select { case <-h.syncTaskTicker.C: // Execute scheduled task h.syncTaskRunCounts() - case <-h.stopChan: - // Stop scheduled task - h.syncTaskTicker.Stop() - return - } - } - }() -} - -// startSyncTaskCache launches the task cache scheduled task goroutine with a one-minute interval timer -func (h *TraceHubServiceImpl) startSyncTaskCache() { - go func() { - for { - select { - case <-h.syncTaskTicker.C: - // Execute scheduled task h.syncTaskCache() case <-h.stopChan: // Stop scheduled task @@ -87,53 +67,15 @@ func (h *TraceHubServiceImpl) startSyncTaskCache() { }() } -func (h *TraceHubServiceImpl) runScheduledTask() { +func (h *TraceHubServiceImpl) transformTaskStatus() { ctx := context.Background() - logID := logs.NewLogID() - ctx = logs.SetLogID(ctx, logID) ctx = h.fillCtx(ctx) logs.CtxInfo(ctx, "Scheduled task started...") // Read all non-final (success/disabled) tasks - var taskPOs []*entity.ObservabilityTask - var err error - var offset int32 = 0 - const limit int32 = 1000 - - // Paginate through all tasks - for { - tasklist, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ - ReqLimit: limit, - ReqOffset: offset, - TaskFilters: &filter.TaskFilterFields{ - FilterFields: []*filter.TaskFilterField{ - { - FieldName: ptr.Of(filter.TaskFieldNameTaskStatus), - Values: []string{ - string(task.TaskStatusUnstarted), - string(task.TaskStatusRunning), - string(task.TaskStatusPending), - }, - QueryType: ptr.Of(filter.QueryTypeIn), - FieldType: ptr.Of(filter.FieldTypeString), - }, - }, - }, - }) - if err != nil { - logs.CtxError(ctx, "Failed to get non-final task list", "err", err) - return - } - - // Add tasks from the current page to the full list - taskPOs = append(taskPOs, tasklist...) - - // If fewer tasks than limit are returned, this is the last page - if len(tasklist) < int(limit) { - break - } - - // Move to the next page, increasing offset by 1000 - offset += limit + taskPOs, err := h.listNonFinalTask(ctx) + if err != nil { + logs.CtxError(ctx, "Failed to get non-final task list", "err", err) + return } logs.CtxInfo(ctx, "Scheduled task retrieved number of tasks:%d", len(taskPOs)) for _, taskPO := range taskPOs { @@ -248,33 +190,14 @@ func (h *TraceHubServiceImpl) runScheduledTask() { // syncTaskRunCounts synchronizes TaskRunCount data to the database func (h *TraceHubServiceImpl) syncTaskRunCounts() { ctx := context.Background() - logID := logs.NewLogID() - ctx = logs.SetLogID(ctx, logID) ctx = h.fillCtx(ctx) logs.CtxInfo(ctx, "Start syncing TaskRunCounts to database...") // 1. Retrieve non-final task list - taskPOs, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ - ReqLimit: 1000, - ReqOffset: 0, - TaskFilters: &filter.TaskFilterFields{ - FilterFields: []*filter.TaskFilterField{ - { - FieldName: ptr.Of(filter.TaskFieldNameTaskStatus), - Values: []string{ - string(task.TaskStatusPending), - string(task.TaskStatusRunning), - string(task.TaskStatusSuccess), - }, - QueryType: ptr.Of(filter.QueryTypeIn), - FieldType: ptr.Of(filter.FieldTypeString), - }, - }, - }, - }) + taskPOs, err := h.listNonFinalTask(ctx) if err != nil { - logs.CtxError(ctx, "ListNonFinalTask err:%v", err) + logs.CtxError(ctx, "Failed to get non-final task list", "err", err) return } if len(taskPOs) == 0 { @@ -319,6 +242,37 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { } } +func (h *TraceHubServiceImpl) syncTaskCache() { + ctx := context.Background() + ctx = h.fillCtx(ctx) + + logs.CtxInfo(ctx, "Start syncing task cache...") + + // 1. Retrieve spaceID, botID, and task information for all non-final tasks from the database + spaceIDs, botIDs, tasks := h.taskRepo.GetObjListWithTask(ctx) + logs.CtxInfo(ctx, "Retrieved task information, taskCount:%d, spaceCount:%d, botCount:%d", len(tasks), len(spaceIDs), len(botIDs)) + + // 2. Build a new cache map + var newCache = TaskCacheInfo{ + WorkspaceIDs: spaceIDs, + BotIDs: botIDs, + Tasks: tasks, + UpdateTime: time.Now(), // Set the current time as the update time + } + + // 3. Clear old cache and update with new cache + h.taskCacheLock.Lock() + defer h.taskCacheLock.Unlock() + + // Clear old cache + h.taskCache.Delete("ObjListWithTask") + + // 4. Write new cache into local cache + h.taskCache.Store("ObjListWithTask", &newCache) + + logs.CtxInfo(ctx, "Task cache sync completed, taskCount:%d, updateTime:%s", len(tasks), newCache.UpdateTime.Format(time.RFC3339)) +} + // processBatch synchronizes TaskRun counts in batches func (h *TraceHubServiceImpl) processBatch(ctx context.Context, batch []*TaskRunCountInfo) { logs.CtxInfo(ctx, "Start processing batch, batchSize:%d", len(batch)) @@ -409,35 +363,45 @@ func (h *TraceHubServiceImpl) updateTaskRunDetail(ctx context.Context, info *Tas return nil } -func (h *TraceHubServiceImpl) syncTaskCache() { - ctx := context.Background() - logID := logs.NewLogID() - ctx = logs.SetLogID(ctx, logID) - ctx = h.fillCtx(ctx) +func (h *TraceHubServiceImpl) listNonFinalTask(ctx context.Context) ([]*entity.ObservabilityTask, error) { + var taskPOs []*entity.ObservabilityTask + var offset int32 = 0 + const limit int32 = 1000 + // Paginate through all tasks + for { + tasklist, _, err := h.taskRepo.ListTasks(ctx, mysql.ListTaskParam{ + ReqLimit: limit, + ReqOffset: offset, + TaskFilters: &filter.TaskFilterFields{ + FilterFields: []*filter.TaskFilterField{ + { + FieldName: ptr.Of(filter.TaskFieldNameTaskStatus), + Values: []string{ + string(task.TaskStatusUnstarted), + string(task.TaskStatusRunning), + string(task.TaskStatusPending), + }, + QueryType: ptr.Of(filter.QueryTypeIn), + FieldType: ptr.Of(filter.FieldTypeString), + }, + }, + }, + }) + if err != nil { + logs.CtxError(ctx, "Failed to get non-final task list", "err", err) + return nil, err + } - logs.CtxInfo(ctx, "Start syncing task cache...") + // Add tasks from the current page to the full list + taskPOs = append(taskPOs, tasklist...) - // 1. Retrieve spaceID, botID, and task information for all non-final tasks from the database - spaceIDs, botIDs, tasks := h.taskRepo.GetObjListWithTask(ctx) - logs.CtxInfo(ctx, "Retrieved task information, taskCount:%d, spaceCount:%d, botCount:%d", len(tasks), len(spaceIDs), len(botIDs)) + // If fewer tasks than limit are returned, this is the last page + if len(tasklist) < int(limit) { + break + } - // 2. Build a new cache map - var newCache = TaskCacheInfo{ - WorkspaceIDs: spaceIDs, - BotIDs: botIDs, - Tasks: tasks, - UpdateTime: time.Now(), // Set the current time as the update time + // Move to the next page, increasing offset by 1000 + offset += limit } - - // 3. Clear old cache and update with new cache - h.taskCacheLock.Lock() - defer h.taskCacheLock.Unlock() - - // Clear old cache - h.taskCache.Delete("ObjListWithTask") - - // 4. Write new cache into local cache - h.taskCache.Store("ObjListWithTask", &newCache) - - logs.CtxInfo(ctx, "Task cache sync completed, taskCount:%d, updateTime:%s", len(tasks), newCache.UpdateTime.Format(time.RFC3339)) + return taskPOs, nil } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 5d2e7e708..0fb5510df 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -65,8 +65,6 @@ func NewTraceHubImpl( // Start the scheduled tasks immediately impl.startScheduledTask() - impl.startSyncTaskRunCounts() - impl.startSyncTaskCache() return impl, nil } @@ -109,18 +107,17 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS var tags []metrics.T // 1、Convert to standard span and perform initial filtering based on space_id span := rawSpan.RawSpanConvertToLoopSpan() - // 1.1 Filter out spans of type Evaluator + logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) + // 1.1 Filter out spans that do not belong to any space or bot + spaceIDs, botIDs, tasks := h.getObjListWithTaskFromCache(ctx) + // 1.2 Filter out spans of type Evaluator if slices.Contains([]string{"Evaluator"}, span.CallType) { return nil } - logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) - // 1.2 Filter out spans that do not belong to any space or bot - spaceIDs, botIDs, tasks := h.getObjListWithTaskFromCache(ctx) - logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", spaceIDs, botIDs, tasks) if !gslice.Contains(spaceIDs, span.WorkspaceID) && !gslice.Contains(botIDs, span.TagsString["bot_id"]) { - tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space"}) - logs.CtxInfo(ctx, "no space found for span, %s", logSuffix) + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space_or_bot"}) + logs.CtxInfo(ctx, "no space or bot found for span, %s", logSuffix) return nil } // 2、Match spans against task rules @@ -146,7 +143,6 @@ func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawS if err != nil { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "preDispatch_failed"}) logs.CtxWarn(ctx, "preDispatch flow span failed, %s, err: %v", logSuffix, err) - //return err } logs.CtxInfo(ctx, "%d preDispatch success, %v", len(subs), subs) // 4、Dispatch diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index de6f8b87d..a9e983713 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -39,6 +39,10 @@ func ToJSONString(ctx context.Context, obj interface{}) string { } func (h *TraceHubServiceImpl) fillCtx(ctx context.Context) context.Context { + if logs.GetLogID(ctx) == "" { + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) + } ctx = metainfo.WithPersistentValue(ctx, "LANE_C_FORNAX_APPID", strconv.FormatInt(int64(h.aid), 10)) if os.Getenv("TCE_HOST_ENV") == "boe" { ctx = context.WithValue(ctx, CtxKeyEnv, "boe_auto_task") From 449517fa98eff6114b20018ea17aa0c975148b6b Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 14:53:51 +0800 Subject: [PATCH 429/462] fix file --- .../modules/observability/application/task.go | 6 +- .../service/taskexe/tracehub/span_trigger.go | 284 ++++++++++++++++++ .../service/taskexe/tracehub/trace_hub.go | 276 +---------------- .../infra/mq/consumer/task_consumer.go | 2 +- 4 files changed, 289 insertions(+), 279 deletions(-) create mode 100644 backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 672150016..536fa5d83 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -18,7 +18,7 @@ import ( ) type ITaskQueueConsumer interface { - TraceHub(ctx context.Context, event *entity.RawSpan) error + SpanTrigger(ctx context.Context, event *entity.RawSpan) error CallBack(ctx context.Context, event *entity.AutoEvalEvent) error Correction(ctx context.Context, event *entity.CorrectionEvent) error BackFill(ctx context.Context, event *entity.BackFillEvent) error @@ -207,8 +207,8 @@ func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) }, nil } -func (t *TaskApplication) TraceHub(ctx context.Context, event *entity.RawSpan) error { - return t.tracehubSvc.TraceHub(ctx, event) +func (t *TaskApplication) SpanTrigger(ctx context.Context, event *entity.RawSpan) error { + return t.tracehubSvc.SpanTrigger(ctx, event) } func (t *TaskApplication) CallBack(ctx context.Context, event *entity.AutoEvalEvent) error { diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go new file mode 100644 index 000000000..d7b256bc8 --- /dev/null +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go @@ -0,0 +1,284 @@ +package tracehub + +import ( + "context" + "fmt" + "slices" + "sync" + "time" + + "github.com/bytedance/gg/gslice" + "github.com/coze-dev/coze-loop/backend/infra/metrics" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" + "github.com/coze-dev/coze-loop/backend/pkg/logs" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" +) + +func (h *TraceHubServiceImpl) SpanTrigger(ctx context.Context, rawSpan *entity.RawSpan) error { + ctx = h.fillCtx(ctx) + logs.CtxInfo(ctx, "TraceHub start") + var tags []metrics.T + // 1、Convert to standard span and perform initial filtering based on space_id + span := rawSpan.RawSpanConvertToLoopSpan() + logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) + // 1.1 Filter out spans that do not belong to any space or bot + spaceIDs, botIDs, tasks := h.getObjListWithTaskFromCache(ctx) + // 1.2 Filter out spans of type Evaluator + if slices.Contains([]string{"Evaluator"}, span.CallType) { + return nil + } + logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", spaceIDs, botIDs, tasks) + if !gslice.Contains(spaceIDs, span.WorkspaceID) && !gslice.Contains(botIDs, span.TagsString["bot_id"]) { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space_or_bot"}) + logs.CtxInfo(ctx, "no space or bot found for span, %s", logSuffix) + return nil + } + // 2、Match spans against task rules + subs, err := h.getSubscriberOfSpan(ctx, span, tasks) + if err != nil { + logs.CtxWarn(ctx, "get subscriber of flow span failed, %s, err: %v", logSuffix, err) + } + + logs.CtxInfo(ctx, "%d subscriber of flow span found, %s", len(subs), logSuffix) + if len(subs) == 0 { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_subscriber"}) + return nil + } + // 3、Sample + subs = gslice.Filter(subs, func(sub *spanSubscriber) bool { return sub.Sampled() }) + logs.CtxInfo(ctx, "%d subscriber of flow span sampled, %s", len(subs), logSuffix) + if len(subs) == 0 { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "sampler_not_hit"}) + return nil + } + // 3. PreDispatch + err = h.preDispatch(ctx, span, subs) + if err != nil { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "preDispatch_failed"}) + logs.CtxWarn(ctx, "preDispatch flow span failed, %s, err: %v", logSuffix, err) + } + logs.CtxInfo(ctx, "%d preDispatch success, %v", len(subs), subs) + // 4、Dispatch + if err = h.dispatch(ctx, span, subs); err != nil { + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "dispatch_failed"}) + logs.CtxWarn(ctx, "dispatch flow span failed, %s, err: %v", logSuffix, err) + return err + } + tags = append(tags, metrics.T{Name: TagKeyResult, Value: "dispatched"}) + return nil +} + +func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loop_span.Span, tasks []*entity.ObservabilityTask) ([]*spanSubscriber, error) { + logs.CtxInfo(ctx, "getSubscriberOfSpan start") + var subscribers []*spanSubscriber + taskList := tconv.TaskPOs2DOs(ctx, tasks, nil) + for _, taskDO := range taskList { + proc := h.taskProcessor.GetTaskProcessor(taskDO.TaskType) + subscribers = append(subscribers, &spanSubscriber{ + taskID: taskDO.GetID(), + RWMutex: sync.RWMutex{}, + t: taskDO, + processor: proc, + bufCap: 0, + flushWait: sync.WaitGroup{}, + maxFlushInterval: time.Second * 5, + taskRepo: h.taskRepo, + runType: task.TaskRunTypeNewData, + buildHelper: h.buildHelper, + }) + } + + var ( + merr = &multierror.Error{} + keep int + ) + // Match data according to detailed filter rules + for _, s := range subscribers { + ok, err := s.Match(ctx, span) + logs.CtxInfo(ctx, "Match span, task_id=%d, trace_id=%s, span_id=%s, ok=%v, err=%v", s.taskID, span.TraceID, span.SpanID, ok, err) + if err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "match span,task_id=%d, trace_id=%s, span_id=%s", s.taskID, span.TraceID, span.SpanID)) + continue + } + if ok { + subscribers[keep] = s + keep++ + } + } + return subscribers[:keep], merr.ErrorOrNil() +} + +func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { + merr := &multierror.Error{} + var needDispatchSubs []*spanSubscriber + for _, sub := range subs { + if span.StartTime < sub.t.GetRule().GetEffectiveTime().GetStartAt() { + logs.CtxWarn(ctx, "span start time is before task cycle start time, trace_id=%s, span_id=%s", span.TraceID, span.SpanID) + continue + } + // First step: lock for task status change + // Task run status + var runStartAt, runEndAt int64 + if sub.t.GetTaskStatus() == task.TaskStatusUnstarted { + logs.CtxWarn(ctx, "task is unstarted, need sub.Creative") + runStartAt = sub.t.GetRule().GetEffectiveTime().GetStartAt() + if !sub.t.GetRule().GetSampler().GetIsCycle() { + runEndAt = sub.t.GetRule().GetEffectiveTime().GetEndAt() + } else { + switch *sub.t.GetRule().GetSampler().CycleTimeUnit { + case task.TimeUnitDay: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() + case task.TimeUnitWeek: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() + default: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() + } + } + if err := sub.Creative(ctx, runStartAt, runEndAt); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "task is unstarted, need sub.Creative,creative processor, task_id=%d", sub.taskID)) + needDispatchSubs = append(needDispatchSubs, sub) + continue + } + if err := sub.processor.OnUpdateTaskChange(ctx, sub.t, task.TaskStatusRunning); err != nil { + logs.CtxWarn(ctx, "OnUpdateTaskChange, task_id=%d, err=%v", sub.taskID, err) + continue + } + } + // Fetch the corresponding task config + taskRunConfig, err := h.taskRepo.GetLatestNewDataTaskRun(ctx, sub.t.WorkspaceID, sub.taskID) + if err != nil { + logs.CtxWarn(ctx, "GetLatestNewDataTaskRun, task_id=%d, err=%v", sub.taskID, err) + continue + } + if taskRunConfig == nil { + logs.CtxWarn(ctx, "task run config not found, task_id=%d", sub.taskID) + runStartAt = sub.t.GetRule().GetEffectiveTime().GetStartAt() + if !sub.t.GetRule().GetSampler().GetIsCycle() { + runEndAt = sub.t.GetRule().GetEffectiveTime().GetEndAt() + } else { + switch *sub.t.GetRule().GetSampler().CycleTimeUnit { + case task.TimeUnitDay: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() + case task.TimeUnitWeek: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() + default: + runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() + } + } + if err = sub.Creative(ctx, runStartAt, runEndAt); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "task run config not found,creative processor, task_id=%d", sub.taskID)) + needDispatchSubs = append(needDispatchSubs, sub) + continue + } + } + sampler := sub.t.GetRule().GetSampler() + // Fetch the corresponding task count and subtask count + taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) + taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, taskRunConfig.ID) + logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) + endTime := time.UnixMilli(sub.t.GetRule().GetEffectiveTime().GetEndAt()) + // Reached task time limit + if time.Now().After(endTime) { + logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d, endTime=%v, now=%v", sub.taskID, endTime, time.Now()) + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: true, + }); err != nil { + logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) + continue + } + } + // Reached task limit + if taskCount+1 > sampler.GetSampleSize() { + logs.CtxWarn(ctx, "taskCount+1 > sampler.GetSampleSize() Finish processor, task_id=%d", sub.taskID) + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: true, + }); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) + continue + } + } + if sampler.GetIsCycle() { + cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) + // Reached single cycle task time limit + if time.Now().After(cycleEndTime) { + logs.CtxInfo(ctx, "time.Now().After(cycleEndTime) Finish processor, task_id=%d", sub.taskID) + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: false, + }); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) + continue + } + runStartAt = taskRunConfig.RunEndAt.UnixMilli() + runEndAt = taskRunConfig.RunEndAt.UnixMilli() + (taskRunConfig.RunEndAt.UnixMilli() - taskRunConfig.RunStartAt.UnixMilli()) + if err := sub.Creative(ctx, runStartAt, runEndAt); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(cycleEndTime) creative processor, task_id=%d", sub.taskID)) + needDispatchSubs = append(needDispatchSubs, sub) + continue + } + } + // Reached single cycle task limit + if taskRunCount+1 > sampler.GetCycleCount() { + logs.CtxWarn(ctx, "taskRunCount+1 > sampler.GetCycleCount(), task_id=%d", sub.taskID) + if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ + Task: sub.t, + TaskRun: taskRunConfig, + IsFinish: false, + }); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) + continue + } + } + } + } + subs = needDispatchSubs + return merr.ErrorOrNil() +} + +func (h *TraceHubServiceImpl) dispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { + merr := &multierror.Error{} + for _, sub := range subs { + if sub.t.GetTaskStatus() != task.TaskStatusRunning { + continue + } + logs.CtxInfo(ctx, " sub.AddSpan: %v", sub) + if err := sub.AddSpan(ctx, span); err != nil { + merr = multierror.Append(merr, errors.WithMessagef(err, "add span to subscriber, task_id=%d", sub.taskID)) + continue + } + logs.CtxInfo(ctx, "add span to subscriber, task_id=%d, log_id=%s, trace_id=%s, span_id=%s", sub.taskID, + span.LogID, span.TraceID, span.SpanID) + } + return merr.ErrorOrNil() +} + +// getObjListWithTaskFromCache retrieves the task list from cache, falling back to the database if cache is empty +func (h *TraceHubServiceImpl) getObjListWithTaskFromCache(ctx context.Context) ([]string, []string, []*entity.ObservabilityTask) { + // First, try to retrieve tasks from cache + objListWithTask, ok := h.taskCache.Load("ObjListWithTask") + if !ok { + // Cache is empty, fallback to the database + logs.CtxInfo(ctx, "Cache is empty, retrieving task list from database") + return h.taskRepo.GetObjListWithTask(ctx) + } + + cacheInfo, ok := objListWithTask.(*TaskCacheInfo) + if !ok { + logs.CtxError(ctx, "Cache data type mismatch") + return h.taskRepo.GetObjListWithTask(ctx) + } + + logs.CtxInfo(ctx, "Retrieve task list from cache, taskCount=%d, spaceCount=%d, botCount=%d", len(cacheInfo.Tasks), len(cacheInfo.WorkspaceIDs), len(cacheInfo.BotIDs)) + return cacheInfo.WorkspaceIDs, cacheInfo.BotIDs, cacheInfo.Tasks +} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 0fb5510df..8e0391031 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -5,32 +5,22 @@ package tracehub import ( "context" - "fmt" - "slices" "sync" "time" - "github.com/bytedance/gg/gslice" "github.com/coze-dev/coze-loop/backend/infra/external/benefit" - "github.com/coze-dev/coze-loop/backend/infra/metrics" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" - tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/mq" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" - "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" trace_repo "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" - "github.com/coze-dev/coze-loop/backend/pkg/logs" - "github.com/hashicorp/go-multierror" - "github.com/pkg/errors" ) type ITraceHubService interface { - TraceHub(ctx context.Context, event *entity.RawSpan) error + SpanTrigger(ctx context.Context, event *entity.RawSpan) error CallBack(ctx context.Context, event *entity.AutoEvalEvent) error Correction(ctx context.Context, event *entity.CorrectionEvent) error BackFill(ctx context.Context, event *entity.BackFillEvent) error @@ -101,270 +91,6 @@ type flushReq struct { const TagKeyResult = "tag_key" -func (h *TraceHubServiceImpl) TraceHub(ctx context.Context, rawSpan *entity.RawSpan) error { - ctx = h.fillCtx(ctx) - logs.CtxInfo(ctx, "TraceHub start") - var tags []metrics.T - // 1、Convert to standard span and perform initial filtering based on space_id - span := rawSpan.RawSpanConvertToLoopSpan() - logSuffix := fmt.Sprintf("log_id=%s, trace_id=%s, span_id=%s", span.LogID, span.TraceID, span.SpanID) - // 1.1 Filter out spans that do not belong to any space or bot - spaceIDs, botIDs, tasks := h.getObjListWithTaskFromCache(ctx) - // 1.2 Filter out spans of type Evaluator - if slices.Contains([]string{"Evaluator"}, span.CallType) { - return nil - } - logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", spaceIDs, botIDs, tasks) - if !gslice.Contains(spaceIDs, span.WorkspaceID) && !gslice.Contains(botIDs, span.TagsString["bot_id"]) { - tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space_or_bot"}) - logs.CtxInfo(ctx, "no space or bot found for span, %s", logSuffix) - return nil - } - // 2、Match spans against task rules - subs, err := h.getSubscriberOfSpan(ctx, span, tasks) - if err != nil { - logs.CtxWarn(ctx, "get subscriber of flow span failed, %s, err: %v", logSuffix, err) - } - - logs.CtxInfo(ctx, "%d subscriber of flow span found, %s", len(subs), logSuffix) - if len(subs) == 0 { - tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_subscriber"}) - return nil - } - // 3、Sample - subs = gslice.Filter(subs, func(sub *spanSubscriber) bool { return sub.Sampled() }) - logs.CtxInfo(ctx, "%d subscriber of flow span sampled, %s", len(subs), logSuffix) - if len(subs) == 0 { - tags = append(tags, metrics.T{Name: TagKeyResult, Value: "sampler_not_hit"}) - return nil - } - // 3. PreDispatch - err = h.preDispatch(ctx, span, subs) - if err != nil { - tags = append(tags, metrics.T{Name: TagKeyResult, Value: "preDispatch_failed"}) - logs.CtxWarn(ctx, "preDispatch flow span failed, %s, err: %v", logSuffix, err) - } - logs.CtxInfo(ctx, "%d preDispatch success, %v", len(subs), subs) - // 4、Dispatch - if err = h.dispatch(ctx, span, subs); err != nil { - tags = append(tags, metrics.T{Name: TagKeyResult, Value: "dispatch_failed"}) - logs.CtxWarn(ctx, "dispatch flow span failed, %s, err: %v", logSuffix, err) - return err - } - tags = append(tags, metrics.T{Name: TagKeyResult, Value: "dispatched"}) - return nil -} - -func (h *TraceHubServiceImpl) getSubscriberOfSpan(ctx context.Context, span *loop_span.Span, tasks []*entity.ObservabilityTask) ([]*spanSubscriber, error) { - logs.CtxInfo(ctx, "getSubscriberOfSpan start") - var subscribers []*spanSubscriber - taskList := tconv.TaskPOs2DOs(ctx, tasks, nil) - for _, taskDO := range taskList { - proc := h.taskProcessor.GetTaskProcessor(taskDO.TaskType) - subscribers = append(subscribers, &spanSubscriber{ - taskID: taskDO.GetID(), - RWMutex: sync.RWMutex{}, - t: taskDO, - processor: proc, - bufCap: 0, - flushWait: sync.WaitGroup{}, - maxFlushInterval: time.Second * 5, - taskRepo: h.taskRepo, - runType: task.TaskRunTypeNewData, - buildHelper: h.buildHelper, - }) - } - - var ( - merr = &multierror.Error{} - keep int - ) - // Match data according to detailed filter rules - for _, s := range subscribers { - ok, err := s.Match(ctx, span) - logs.CtxInfo(ctx, "Match span, task_id=%d, trace_id=%s, span_id=%s, ok=%v, err=%v", s.taskID, span.TraceID, span.SpanID, ok, err) - if err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "match span,task_id=%d, trace_id=%s, span_id=%s", s.taskID, span.TraceID, span.SpanID)) - continue - } - if ok { - subscribers[keep] = s - keep++ - } - } - return subscribers[:keep], merr.ErrorOrNil() -} - -func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { - merr := &multierror.Error{} - var needDispatchSubs []*spanSubscriber - for _, sub := range subs { - if span.StartTime < sub.t.GetRule().GetEffectiveTime().GetStartAt() { - logs.CtxWarn(ctx, "span start time is before task cycle start time, trace_id=%s, span_id=%s", span.TraceID, span.SpanID) - continue - } - // First step: lock for task status change - // Task run status - var runStartAt, runEndAt int64 - if sub.t.GetTaskStatus() == task.TaskStatusUnstarted { - logs.CtxWarn(ctx, "task is unstarted, need sub.Creative") - runStartAt = sub.t.GetRule().GetEffectiveTime().GetStartAt() - if !sub.t.GetRule().GetSampler().GetIsCycle() { - runEndAt = sub.t.GetRule().GetEffectiveTime().GetEndAt() - } else { - switch *sub.t.GetRule().GetSampler().CycleTimeUnit { - case task.TimeUnitDay: - runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() - case task.TimeUnitWeek: - runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() - default: - runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() - } - } - if err := sub.Creative(ctx, runStartAt, runEndAt); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "task is unstarted, need sub.Creative,creative processor, task_id=%d", sub.taskID)) - needDispatchSubs = append(needDispatchSubs, sub) - continue - } - if err := sub.processor.OnUpdateTaskChange(ctx, sub.t, task.TaskStatusRunning); err != nil { - logs.CtxWarn(ctx, "OnUpdateTaskChange, task_id=%d, err=%v", sub.taskID, err) - continue - } - } - // Fetch the corresponding task config - taskRunConfig, err := h.taskRepo.GetLatestNewDataTaskRun(ctx, sub.t.WorkspaceID, sub.taskID) - if err != nil { - logs.CtxWarn(ctx, "GetLatestNewDataTaskRun, task_id=%d, err=%v", sub.taskID, err) - continue - } - if taskRunConfig == nil { - logs.CtxWarn(ctx, "task run config not found, task_id=%d", sub.taskID) - runStartAt = sub.t.GetRule().GetEffectiveTime().GetStartAt() - if !sub.t.GetRule().GetSampler().GetIsCycle() { - runEndAt = sub.t.GetRule().GetEffectiveTime().GetEndAt() - } else { - switch *sub.t.GetRule().GetSampler().CycleTimeUnit { - case task.TimeUnitDay: - runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*24*time.Hour.Milliseconds() - case task.TimeUnitWeek: - runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*7*24*time.Hour.Milliseconds() - default: - runEndAt = runStartAt + (*sub.t.GetRule().GetSampler().CycleInterval)*10*time.Minute.Milliseconds() - } - } - if err = sub.Creative(ctx, runStartAt, runEndAt); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "task run config not found,creative processor, task_id=%d", sub.taskID)) - needDispatchSubs = append(needDispatchSubs, sub) - continue - } - } - sampler := sub.t.GetRule().GetSampler() - // Fetch the corresponding task count and subtask count - taskCount, _ := h.taskRepo.GetTaskCount(ctx, sub.taskID) - taskRunCount, _ := h.taskRepo.GetTaskRunCount(ctx, sub.taskID, taskRunConfig.ID) - logs.CtxInfo(ctx, "preDispatch, task_id=%d, taskCount=%d, taskRunCount=%d", sub.taskID, taskCount, taskRunCount) - endTime := time.UnixMilli(sub.t.GetRule().GetEffectiveTime().GetEndAt()) - // Reached task time limit - if time.Now().After(endTime) { - logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d, endTime=%v, now=%v", sub.taskID, endTime, time.Now()) - if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: sub.t, - TaskRun: taskRunConfig, - IsFinish: true, - }); err != nil { - logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) - merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) - continue - } - } - // Reached task limit - if taskCount+1 > sampler.GetSampleSize() { - logs.CtxWarn(ctx, "taskCount+1 > sampler.GetSampleSize() Finish processor, task_id=%d", sub.taskID) - if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: sub.t, - TaskRun: taskRunConfig, - IsFinish: true, - }); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) - continue - } - } - if sampler.GetIsCycle() { - cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) - // Reached single cycle task time limit - if time.Now().After(cycleEndTime) { - logs.CtxInfo(ctx, "time.Now().After(cycleEndTime) Finish processor, task_id=%d", sub.taskID) - if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: sub.t, - TaskRun: taskRunConfig, - IsFinish: false, - }); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) - continue - } - runStartAt = taskRunConfig.RunEndAt.UnixMilli() - runEndAt = taskRunConfig.RunEndAt.UnixMilli() + (taskRunConfig.RunEndAt.UnixMilli() - taskRunConfig.RunStartAt.UnixMilli()) - if err := sub.Creative(ctx, runStartAt, runEndAt); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(cycleEndTime) creative processor, task_id=%d", sub.taskID)) - needDispatchSubs = append(needDispatchSubs, sub) - continue - } - } - // Reached single cycle task limit - if taskRunCount+1 > sampler.GetCycleCount() { - logs.CtxWarn(ctx, "taskRunCount+1 > sampler.GetCycleCount(), task_id=%d", sub.taskID) - if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ - Task: sub.t, - TaskRun: taskRunConfig, - IsFinish: false, - }); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID)) - continue - } - } - } - } - subs = needDispatchSubs - return merr.ErrorOrNil() -} - -func (h *TraceHubServiceImpl) dispatch(ctx context.Context, span *loop_span.Span, subs []*spanSubscriber) error { - merr := &multierror.Error{} - for _, sub := range subs { - if sub.t.GetTaskStatus() != task.TaskStatusRunning { - continue - } - logs.CtxInfo(ctx, " sub.AddSpan: %v", sub) - if err := sub.AddSpan(ctx, span); err != nil { - merr = multierror.Append(merr, errors.WithMessagef(err, "add span to subscriber, task_id=%d", sub.taskID)) - continue - } - logs.CtxInfo(ctx, "add span to subscriber, task_id=%d, log_id=%s, trace_id=%s, span_id=%s", sub.taskID, - span.LogID, span.TraceID, span.SpanID) - } - return merr.ErrorOrNil() -} - func (h *TraceHubServiceImpl) Close() { close(h.stopChan) } - -// getObjListWithTaskFromCache retrieves the task list from cache, falling back to the database if cache is empty -func (h *TraceHubServiceImpl) getObjListWithTaskFromCache(ctx context.Context) ([]string, []string, []*entity.ObservabilityTask) { - // First, try to retrieve tasks from cache - objListWithTask, ok := h.taskCache.Load("ObjListWithTask") - if !ok { - // Cache is empty, fallback to the database - logs.CtxInfo(ctx, "Cache is empty, retrieving task list from database") - return h.taskRepo.GetObjListWithTask(ctx) - } - - cacheInfo, ok := objListWithTask.(*TaskCacheInfo) - if !ok { - logs.CtxError(ctx, "Cache data type mismatch") - return h.taskRepo.GetObjListWithTask(ctx) - } - - logs.CtxInfo(ctx, "Retrieve task list from cache, taskCount=%d, spaceCount=%d, botCount=%d", len(cacheInfo.Tasks), len(cacheInfo.WorkspaceIDs), len(cacheInfo.BotIDs)) - return cacheInfo.WorkspaceIDs, cacheInfo.BotIDs, cacheInfo.Tasks -} diff --git a/backend/modules/observability/infra/mq/consumer/task_consumer.go b/backend/modules/observability/infra/mq/consumer/task_consumer.go index 10c95e8d4..2fec62bc2 100644 --- a/backend/modules/observability/infra/mq/consumer/task_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/task_consumer.go @@ -55,5 +55,5 @@ func (e *TaskConsumer) HandleMessage(ctx context.Context, ext *mq.MessageExt) er return nil } logs.CtxInfo(ctx, "Handle Task message,log_id=%s, trace_id=%s, span_id=%s,msgID=%s", event.LogID, event.TraceID, event.SpanID, ext.MsgID) - return e.handler.TraceHub(ctx, event) + return e.handler.SpanTrigger(ctx, event) } From d5e28eaeabc0c58d5736349c2fc86b5209fc7f39 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 14:59:17 +0800 Subject: [PATCH 430/462] fix comment --- .../domain/task/service/taskexe/processor/auto_evaluate.go | 3 +-- .../domain/task/service/taskexe/tracehub/backfill.go | 1 - .../observability/domain/task/service/taskexe/types.go | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index c5daa82cc..4033a139a 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -148,7 +148,6 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, trigger *taskexe.Trig } func (p *AutoEvaluteProcessor) OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error { - // TODO[xun]: add lock taskRuns, err := p.taskRepo.GetBackfillTaskRun(ctx, nil, currentTask.GetID()) if err != nil { logs.CtxError(ctx, "GetBackfillTaskRun failed, taskID:%d, err:%v", currentTask.GetID(), err) @@ -282,7 +281,7 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param if slices.Contains(evaluationSetColumns, fieldMapping.GetEvalSetName()) { continue } - // TODO[xun]: historical data compatibility, convert plain_text to text, data needs to be refreshed + // historical data compatibility, convert plain_text to text, data needs to be refreshed evaluationSetSchema.FieldSchemas = append(evaluationSetSchema.FieldSchemas, &dataset0.FieldSchema{ Key: gptr.Of(fieldMapping.GetEvalSetName()), Name: gptr.Of(fieldMapping.GetEvalSetName()), diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 463944121..e2bf260f9 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -360,7 +360,6 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp TaskRun: tconv.TaskRunDO2PO(ctx, sub.tr, nil), IsFinish: false, }); err != nil { - logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d", sub.taskID) return len(fr.spans), len(sampledSpans), err } } diff --git a/backend/modules/observability/domain/task/service/taskexe/types.go b/backend/modules/observability/domain/task/service/taskexe/types.go index 3bea48ce9..77e08f457 100644 --- a/backend/modules/observability/domain/task/service/taskexe/types.go +++ b/backend/modules/observability/domain/task/service/taskexe/types.go @@ -40,8 +40,8 @@ type OnFinishTaskChangeReq struct { } type Processor interface { - ValidateConfig(ctx context.Context, config any) error // 校验配置项是否有效 - Invoke(ctx context.Context, trigger *Trigger) error // 根据不同类型进行执行,如rpc回调、mq投递等 + ValidateConfig(ctx context.Context, config any) error + Invoke(ctx context.Context, trigger *Trigger) error OnCreateTaskChange(ctx context.Context, currentTask *task.Task) error OnUpdateTaskChange(ctx context.Context, currentTask *task.Task, taskOp task.TaskStatus) error From 7274064ea1cf39ea64dccf9a44418f5a1bb25c69 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 16:13:24 +0800 Subject: [PATCH 431/462] fix --- .../observability/domain/task/entity/task.go | 1 + .../domain/task/service/task_service.go | 4 ++-- .../task/service/taskexe/tracehub/backfill.go | 2 ++ .../task/service/taskexe/tracehub/callback.go | 1 + .../task/service/taskexe/tracehub/trace_hub.go | 1 + .../domain/task/service/taskexe/tracehub/utils.go | 15 ++++++++------- .../infra/mq/consumer/task_consumer.go | 1 + 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/backend/modules/observability/domain/task/entity/task.go b/backend/modules/observability/domain/task/entity/task.go index 92ba8a8f4..261f29f28 100644 --- a/backend/modules/observability/domain/task/entity/task.go +++ b/backend/modules/observability/domain/task/entity/task.go @@ -11,6 +11,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" ) +// do type ObservabilityTask struct { ID int64 // Task ID WorkspaceID int64 // 空间ID diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 7c3caf2c3..4acf318e0 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -31,7 +31,7 @@ import ( ) type CreateTaskReq struct { - Task *task.Task + Task *task.Task //todo:entity } type CreateTaskResp struct { TaskID *int64 @@ -136,7 +136,7 @@ func (t *TaskServiceImpl) CreateTask(ctx context.Context, req *CreateTaskReq) (r if err != nil { return nil, err } - + //dto2do_application taskPO := tconv.TaskDTO2PO(ctx, req.Task, userID, spanFilers) id, err := t.TaskRepo.CreateTask(ctx, taskPO) if err != nil { diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index e2bf260f9..ca413d540 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -27,6 +27,7 @@ import ( const pageSize = 500 +// 定时任务+锁 func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 1. Set the current task context ctx = h.fillCtx(ctx) @@ -58,6 +59,7 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi h.flushErrLock.Unlock() // 4. Launch asynchronous flush handling via goroutine for concurrent processing + //list+flush一个线程处理+续锁 wg.Add(1) goroutine.Go(ctx, func() { defer wg.Done() diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go index 89b4bef30..7caede262 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/callback.go @@ -25,6 +25,7 @@ func (h *TraceHubServiceImpl) CallBack(ctx context.Context, event *entity.AutoEv return err } var storageDuration int64 = 1 + //缓存做了吗? res, err := h.benefitSvc.CheckTraceBenefit(ctx, &benefit.CheckTraceBenefitParams{ ConnectorUID: session.UserIDInCtxOrEmpty(ctx), SpaceID: workspaceID, diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 8e0391031..bbe8e0cc1 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -56,6 +56,7 @@ func NewTraceHubImpl( // Start the scheduled tasks immediately impl.startScheduledTask() + // default+lane?+新集群?——定时任务和任务处理分开——内场 return impl, nil } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index a9e983713..d7cfc5273 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -43,15 +43,16 @@ func (h *TraceHubServiceImpl) fillCtx(ctx context.Context) context.Context { logID := logs.NewLogID() ctx = logs.SetLogID(ctx, logID) } + //todo:是否需要?——eval ctx = metainfo.WithPersistentValue(ctx, "LANE_C_FORNAX_APPID", strconv.FormatInt(int64(h.aid), 10)) - if os.Getenv("TCE_HOST_ENV") == "boe" { - ctx = context.WithValue(ctx, CtxKeyEnv, "boe_auto_task") - } else { - ctx = context.WithValue(ctx, CtxKeyEnv, "ppe_auto_task") - } - //if env := os.Getenv(XttEnv); env != "" { - // ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 + //if os.Getenv("TCE_HOST_ENV") == "boe" { + // ctx = context.WithValue(ctx, CtxKeyEnv, "boe_auto_task") + //} else { + // ctx = context.WithValue(ctx, CtxKeyEnv, "ppe_auto_task") //} + if env := os.Getenv(XttEnv); env != "" { + ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 + } return ctx } diff --git a/backend/modules/observability/infra/mq/consumer/task_consumer.go b/backend/modules/observability/infra/mq/consumer/task_consumer.go index 2fec62bc2..17495cd11 100644 --- a/backend/modules/observability/infra/mq/consumer/task_consumer.go +++ b/backend/modules/observability/infra/mq/consumer/task_consumer.go @@ -30,6 +30,7 @@ func newTaskConsumer(handler obapp.ITaskQueueConsumer, loader conf.IConfigLoader } func (e *TaskConsumer) ConsumerCfg(ctx context.Context) (*mq.ConsumerConfig, error) { + // 【1011】内场的topic,doubaogu过滤 const key = "task_mq_consumer_config" cfg := &config.MqConsumerCfg{} if err := e.UnmarshalKey(ctx, key, cfg); err != nil { From 5212fa7370074effba89ba3fb30e0930be033e14 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 16:16:29 +0800 Subject: [PATCH 432/462] fix --- .../domain/task/service/taskexe/processor/auto_evaluate.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index 4033a139a..e6ce086f1 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -307,8 +307,8 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param datasetName = fmt.Sprintf("%s_%s_%s_%d.%d.%d.%d", AutoEvaluateCN, BackFillCN, currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) exptName = fmt.Sprintf("%s_%s_%s_%d.%d.%d.%d", AutoEvaluateCN, BackFillCN, currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) } else { - datasetName = fmt.Sprintf("%s_%s_%s_%d.%d.%d.%d", AutoEvaluateCN, currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) - exptName = fmt.Sprintf("%s_%s_%s_%d.%d.%d.%d", AutoEvaluateCN, currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + datasetName = fmt.Sprintf("%s_%s_%d.%d.%d.%d", AutoEvaluateCN, currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) + exptName = fmt.Sprintf("%s_%s_%d.%d.%d.%d", AutoEvaluateCN, currentTask.Name, time.Now().Year(), time.Now().Month(), time.Now().Day(), time.Now().Unix()) } // Step 1: create evaluation dataset datasetID, err := p.datasetServiceAdaptor.GetDatasetProvider(category).CreateDataset(ctx, entity.NewDataset( From 13ba147d22577296f5971836e50442f5bd947f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cdsf86=E2=80=9D?= Date: Sat, 11 Oct 2025 16:54:46 +0800 Subject: [PATCH 433/462] fix Change-Id: Ia38d5316b1c1f343b76a396afb474f4f5591cd64 --- .../api/handler/coze/loop/apis/wire_gen.go | 1 + .../coze/loop/data/domain/dataset/dataset.go | 414 ++++++++++++++++++ .../data/domain/dataset/dataset_validator.go | 3 + .../loop/data/domain/dataset/k-dataset.go | 279 ++++++++++++ .../eval_set/coze.loop.evaluation.eval_set.go | 104 ++++- .../k-coze.loop.evaluation.eval_set.go | 85 ++++ .../expt/coze.loop.evaluation.expt.go | 104 ++++- .../expt/k-coze.loop.evaluation.expt.go | 85 ++++ .../evaluation_set/evaluation_set_item.go | 22 + .../application/evaluation_set_app.go | 7 +- .../evaluation/application/experiment_app.go | 9 +- .../domain/component/rpc/dataset.go | 2 +- .../domain/entity/evaluation_set_item.go | 9 + .../domain/service/evaluation_set_item.go | 2 +- .../service/evaluation_set_item_impl.go | 4 +- .../evaluation/infra/rpc/data/dataset.go | 12 +- .../coze/loop/data/domain/dataset.thrift | 7 + .../coze.loop.evaluation.eval_set.thrift | 2 + .../coze.loop.evaluation.expt.thrift | 2 + 19 files changed, 1130 insertions(+), 23 deletions(-) diff --git a/backend/api/handler/coze/loop/apis/wire_gen.go b/backend/api/handler/coze/loop/apis/wire_gen.go index fc7ec4fe1..d69ab0633 100644 --- a/backend/api/handler/coze/loop/apis/wire_gen.go +++ b/backend/api/handler/coze/loop/apis/wire_gen.go @@ -8,6 +8,7 @@ package apis import ( "context" + "github.com/cloudwego/kitex/pkg/endpoint" "github.com/coze-dev/coze-loop/backend/infra/ck" "github.com/coze-dev/coze-loop/backend/infra/db" diff --git a/backend/kitex_gen/coze/loop/data/domain/dataset/dataset.go b/backend/kitex_gen/coze/loop/data/domain/dataset/dataset.go index 46c1a8a88..233ebf02e 100644 --- a/backend/kitex_gen/coze/loop/data/domain/dataset/dataset.go +++ b/backend/kitex_gen/coze/loop/data/domain/dataset/dataset.go @@ -11498,3 +11498,417 @@ func (p *ItemErrorGroup) Field4DeepEqual(src []*ItemErrorDetail) bool { } return true } + +type CreateDatasetItemOutput struct { + // item 在 BatchCreateDatasetItemsReq.items 中的索引 + ItemIndex *int32 `thrift:"item_index,1,optional" frugal:"1,optional,i32" form:"item_index" json:"item_index,omitempty" query:"item_index"` + ItemKey *string `thrift:"item_key,2,optional" frugal:"2,optional,string" form:"item_key" json:"item_key,omitempty" query:"item_key"` + ItemID *int64 `thrift:"item_id,3,optional" frugal:"3,optional,i64" form:"item_id" json:"item_id,omitempty" query:"item_id"` + // 是否是新的 Item。提供 itemKey 时,如果 itemKey 在数据集中已存在数据,则不算做「新 Item」,该字段为 false。 + IsNewItem *bool `thrift:"is_new_item,4,optional" frugal:"4,optional,bool" form:"is_new_item" json:"is_new_item,omitempty" query:"is_new_item"` +} + +func NewCreateDatasetItemOutput() *CreateDatasetItemOutput { + return &CreateDatasetItemOutput{} +} + +func (p *CreateDatasetItemOutput) InitDefault() { +} + +var CreateDatasetItemOutput_ItemIndex_DEFAULT int32 + +func (p *CreateDatasetItemOutput) GetItemIndex() (v int32) { + if p == nil { + return + } + if !p.IsSetItemIndex() { + return CreateDatasetItemOutput_ItemIndex_DEFAULT + } + return *p.ItemIndex +} + +var CreateDatasetItemOutput_ItemKey_DEFAULT string + +func (p *CreateDatasetItemOutput) GetItemKey() (v string) { + if p == nil { + return + } + if !p.IsSetItemKey() { + return CreateDatasetItemOutput_ItemKey_DEFAULT + } + return *p.ItemKey +} + +var CreateDatasetItemOutput_ItemID_DEFAULT int64 + +func (p *CreateDatasetItemOutput) GetItemID() (v int64) { + if p == nil { + return + } + if !p.IsSetItemID() { + return CreateDatasetItemOutput_ItemID_DEFAULT + } + return *p.ItemID +} + +var CreateDatasetItemOutput_IsNewItem_DEFAULT bool + +func (p *CreateDatasetItemOutput) GetIsNewItem() (v bool) { + if p == nil { + return + } + if !p.IsSetIsNewItem() { + return CreateDatasetItemOutput_IsNewItem_DEFAULT + } + return *p.IsNewItem +} +func (p *CreateDatasetItemOutput) SetItemIndex(val *int32) { + p.ItemIndex = val +} +func (p *CreateDatasetItemOutput) SetItemKey(val *string) { + p.ItemKey = val +} +func (p *CreateDatasetItemOutput) SetItemID(val *int64) { + p.ItemID = val +} +func (p *CreateDatasetItemOutput) SetIsNewItem(val *bool) { + p.IsNewItem = val +} + +var fieldIDToName_CreateDatasetItemOutput = map[int16]string{ + 1: "item_index", + 2: "item_key", + 3: "item_id", + 4: "is_new_item", +} + +func (p *CreateDatasetItemOutput) IsSetItemIndex() bool { + return p.ItemIndex != nil +} + +func (p *CreateDatasetItemOutput) IsSetItemKey() bool { + return p.ItemKey != nil +} + +func (p *CreateDatasetItemOutput) IsSetItemID() bool { + return p.ItemID != nil +} + +func (p *CreateDatasetItemOutput) IsSetIsNewItem() bool { + return p.IsNewItem != nil +} + +func (p *CreateDatasetItemOutput) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I32 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.I64 { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.BOOL { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateDatasetItemOutput[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *CreateDatasetItemOutput) ReadField1(iprot thrift.TProtocol) error { + + var _field *int32 + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + _field = &v + } + p.ItemIndex = _field + return nil +} +func (p *CreateDatasetItemOutput) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.ItemKey = _field + return nil +} +func (p *CreateDatasetItemOutput) ReadField3(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.ItemID = _field + return nil +} +func (p *CreateDatasetItemOutput) ReadField4(iprot thrift.TProtocol) error { + + var _field *bool + if v, err := iprot.ReadBool(); err != nil { + return err + } else { + _field = &v + } + p.IsNewItem = _field + return nil +} + +func (p *CreateDatasetItemOutput) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateDatasetItemOutput"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *CreateDatasetItemOutput) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetItemIndex() { + if err = oprot.WriteFieldBegin("item_index", thrift.I32, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(*p.ItemIndex); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *CreateDatasetItemOutput) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetItemKey() { + if err = oprot.WriteFieldBegin("item_key", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.ItemKey); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *CreateDatasetItemOutput) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetItemID() { + if err = oprot.WriteFieldBegin("item_id", thrift.I64, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.ItemID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *CreateDatasetItemOutput) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetIsNewItem() { + if err = oprot.WriteFieldBegin("is_new_item", thrift.BOOL, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteBool(*p.IsNewItem); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} + +func (p *CreateDatasetItemOutput) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("CreateDatasetItemOutput(%+v)", *p) + +} + +func (p *CreateDatasetItemOutput) DeepEqual(ano *CreateDatasetItemOutput) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.ItemIndex) { + return false + } + if !p.Field2DeepEqual(ano.ItemKey) { + return false + } + if !p.Field3DeepEqual(ano.ItemID) { + return false + } + if !p.Field4DeepEqual(ano.IsNewItem) { + return false + } + return true +} + +func (p *CreateDatasetItemOutput) Field1DeepEqual(src *int32) bool { + + if p.ItemIndex == src { + return true + } else if p.ItemIndex == nil || src == nil { + return false + } + if *p.ItemIndex != *src { + return false + } + return true +} +func (p *CreateDatasetItemOutput) Field2DeepEqual(src *string) bool { + + if p.ItemKey == src { + return true + } else if p.ItemKey == nil || src == nil { + return false + } + if strings.Compare(*p.ItemKey, *src) != 0 { + return false + } + return true +} +func (p *CreateDatasetItemOutput) Field3DeepEqual(src *int64) bool { + + if p.ItemID == src { + return true + } else if p.ItemID == nil || src == nil { + return false + } + if *p.ItemID != *src { + return false + } + return true +} +func (p *CreateDatasetItemOutput) Field4DeepEqual(src *bool) bool { + + if p.IsNewItem == src { + return true + } else if p.IsNewItem == nil || src == nil { + return false + } + if *p.IsNewItem != *src { + return false + } + return true +} diff --git a/backend/kitex_gen/coze/loop/data/domain/dataset/dataset_validator.go b/backend/kitex_gen/coze/loop/data/domain/dataset/dataset_validator.go index 7e7350794..9536da08e 100644 --- a/backend/kitex_gen/coze/loop/data/domain/dataset/dataset_validator.go +++ b/backend/kitex_gen/coze/loop/data/domain/dataset/dataset_validator.go @@ -151,3 +151,6 @@ func (p *ItemErrorDetail) IsValid() error { func (p *ItemErrorGroup) IsValid() error { return nil } +func (p *CreateDatasetItemOutput) IsValid() error { + return nil +} diff --git a/backend/kitex_gen/coze/loop/data/domain/dataset/k-dataset.go b/backend/kitex_gen/coze/loop/data/domain/dataset/k-dataset.go index c3e9733cc..4a6e73b6d 100644 --- a/backend/kitex_gen/coze/loop/data/domain/dataset/k-dataset.go +++ b/backend/kitex_gen/coze/loop/data/domain/dataset/k-dataset.go @@ -7617,3 +7617,282 @@ func (p *ItemErrorGroup) DeepCopy(s interface{}) error { return nil } + +func (p *CreateDatasetItemOutput) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.BOOL { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_CreateDatasetItemOutput[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *CreateDatasetItemOutput) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *int32 + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ItemIndex = _field + return offset, nil +} + +func (p *CreateDatasetItemOutput) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ItemKey = _field + return offset, nil +} + +func (p *CreateDatasetItemOutput) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ItemID = _field + return offset, nil +} + +func (p *CreateDatasetItemOutput) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *bool + if v, l, err := thrift.Binary.ReadBool(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.IsNewItem = _field + return offset, nil +} + +func (p *CreateDatasetItemOutput) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *CreateDatasetItemOutput) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *CreateDatasetItemOutput) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *CreateDatasetItemOutput) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetItemIndex() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 1) + offset += thrift.Binary.WriteI32(buf[offset:], *p.ItemIndex) + } + return offset +} + +func (p *CreateDatasetItemOutput) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetItemKey() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ItemKey) + } + return offset +} + +func (p *CreateDatasetItemOutput) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetItemID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 3) + offset += thrift.Binary.WriteI64(buf[offset:], *p.ItemID) + } + return offset +} + +func (p *CreateDatasetItemOutput) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetIsNewItem() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.BOOL, 4) + offset += thrift.Binary.WriteBool(buf[offset:], *p.IsNewItem) + } + return offset +} + +func (p *CreateDatasetItemOutput) field1Length() int { + l := 0 + if p.IsSetItemIndex() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *CreateDatasetItemOutput) field2Length() int { + l := 0 + if p.IsSetItemKey() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.ItemKey) + } + return l +} + +func (p *CreateDatasetItemOutput) field3Length() int { + l := 0 + if p.IsSetItemID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *CreateDatasetItemOutput) field4Length() int { + l := 0 + if p.IsSetIsNewItem() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.BoolLength() + } + return l +} + +func (p *CreateDatasetItemOutput) DeepCopy(s interface{}) error { + src, ok := s.(*CreateDatasetItemOutput) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.ItemIndex != nil { + tmp := *src.ItemIndex + p.ItemIndex = &tmp + } + + if src.ItemKey != nil { + var tmp string + if *src.ItemKey != "" { + tmp = kutils.StringDeepCopy(*src.ItemKey) + } + p.ItemKey = &tmp + } + + if src.ItemID != nil { + tmp := *src.ItemID + p.ItemID = &tmp + } + + if src.IsNewItem != nil { + tmp := *src.IsNewItem + p.IsNewItem = &tmp + } + + return nil +} diff --git a/backend/kitex_gen/coze/loop/evaluation/eval_set/coze.loop.evaluation.eval_set.go b/backend/kitex_gen/coze/loop/evaluation/eval_set/coze.loop.evaluation.eval_set.go index f7b0d4152..52fbb6bfc 100644 --- a/backend/kitex_gen/coze/loop/evaluation/eval_set/coze.loop.evaluation.eval_set.go +++ b/backend/kitex_gen/coze/loop/evaluation/eval_set/coze.loop.evaluation.eval_set.go @@ -8488,9 +8488,10 @@ func (p *BatchCreateEvaluationSetItemsRequest) Field255DeepEqual(src *base.Base) type BatchCreateEvaluationSetItemsResponse struct { // key: item 在 items 中的索引 - AddedItems map[int64]int64 `thrift:"added_items,1,optional" frugal:"1,optional,map" json:"added_items" form:"added_items" query:"added_items"` - Errors []*dataset.ItemErrorGroup `thrift:"errors,2,optional" frugal:"2,optional,list" form:"errors" json:"errors,omitempty" query:"errors"` - BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` + AddedItems map[int64]int64 `thrift:"added_items,1,optional" frugal:"1,optional,map" json:"added_items" form:"added_items" query:"added_items"` + Errors []*dataset.ItemErrorGroup `thrift:"errors,2,optional" frugal:"2,optional,list" form:"errors" json:"errors,omitempty" query:"errors"` + ItemOutputs []*dataset.CreateDatasetItemOutput `thrift:"item_outputs,3,optional" frugal:"3,optional,list" form:"item_outputs" json:"item_outputs,omitempty" query:"item_outputs"` + BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` } func NewBatchCreateEvaluationSetItemsResponse() *BatchCreateEvaluationSetItemsResponse { @@ -8524,6 +8525,18 @@ func (p *BatchCreateEvaluationSetItemsResponse) GetErrors() (v []*dataset.ItemEr return p.Errors } +var BatchCreateEvaluationSetItemsResponse_ItemOutputs_DEFAULT []*dataset.CreateDatasetItemOutput + +func (p *BatchCreateEvaluationSetItemsResponse) GetItemOutputs() (v []*dataset.CreateDatasetItemOutput) { + if p == nil { + return + } + if !p.IsSetItemOutputs() { + return BatchCreateEvaluationSetItemsResponse_ItemOutputs_DEFAULT + } + return p.ItemOutputs +} + var BatchCreateEvaluationSetItemsResponse_BaseResp_DEFAULT *base.BaseResp func (p *BatchCreateEvaluationSetItemsResponse) GetBaseResp() (v *base.BaseResp) { @@ -8541,6 +8554,9 @@ func (p *BatchCreateEvaluationSetItemsResponse) SetAddedItems(val map[int64]int6 func (p *BatchCreateEvaluationSetItemsResponse) SetErrors(val []*dataset.ItemErrorGroup) { p.Errors = val } +func (p *BatchCreateEvaluationSetItemsResponse) SetItemOutputs(val []*dataset.CreateDatasetItemOutput) { + p.ItemOutputs = val +} func (p *BatchCreateEvaluationSetItemsResponse) SetBaseResp(val *base.BaseResp) { p.BaseResp = val } @@ -8548,6 +8564,7 @@ func (p *BatchCreateEvaluationSetItemsResponse) SetBaseResp(val *base.BaseResp) var fieldIDToName_BatchCreateEvaluationSetItemsResponse = map[int16]string{ 1: "added_items", 2: "errors", + 3: "item_outputs", 255: "BaseResp", } @@ -8559,6 +8576,10 @@ func (p *BatchCreateEvaluationSetItemsResponse) IsSetErrors() bool { return p.Errors != nil } +func (p *BatchCreateEvaluationSetItemsResponse) IsSetItemOutputs() bool { + return p.ItemOutputs != nil +} + func (p *BatchCreateEvaluationSetItemsResponse) IsSetBaseResp() bool { return p.BaseResp != nil } @@ -8597,6 +8618,14 @@ func (p *BatchCreateEvaluationSetItemsResponse) Read(iprot thrift.TProtocol) (er } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 3: + if fieldTypeId == thrift.LIST { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -8686,6 +8715,29 @@ func (p *BatchCreateEvaluationSetItemsResponse) ReadField2(iprot thrift.TProtoco p.Errors = _field return nil } +func (p *BatchCreateEvaluationSetItemsResponse) ReadField3(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*dataset.CreateDatasetItemOutput, 0, size) + values := make([]dataset.CreateDatasetItemOutput, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.ItemOutputs = _field + return nil +} func (p *BatchCreateEvaluationSetItemsResponse) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBaseResp() if err := _field.Read(iprot); err != nil { @@ -8709,6 +8761,10 @@ func (p *BatchCreateEvaluationSetItemsResponse) Write(oprot thrift.TProtocol) (e fieldId = 2 goto WriteFieldError } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -8786,6 +8842,32 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } +func (p *BatchCreateEvaluationSetItemsResponse) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetItemOutputs() { + if err = oprot.WriteFieldBegin("item_outputs", thrift.LIST, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.ItemOutputs)); err != nil { + return err + } + for _, v := range p.ItemOutputs { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} func (p *BatchCreateEvaluationSetItemsResponse) writeField255(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError @@ -8823,6 +8905,9 @@ func (p *BatchCreateEvaluationSetItemsResponse) DeepEqual(ano *BatchCreateEvalua if !p.Field2DeepEqual(ano.Errors) { return false } + if !p.Field3DeepEqual(ano.ItemOutputs) { + return false + } if !p.Field255DeepEqual(ano.BaseResp) { return false } @@ -8855,6 +8940,19 @@ func (p *BatchCreateEvaluationSetItemsResponse) Field2DeepEqual(src []*dataset.I } return true } +func (p *BatchCreateEvaluationSetItemsResponse) Field3DeepEqual(src []*dataset.CreateDatasetItemOutput) bool { + + if len(p.ItemOutputs) != len(src) { + return false + } + for i, v := range p.ItemOutputs { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} func (p *BatchCreateEvaluationSetItemsResponse) Field255DeepEqual(src *base.BaseResp) bool { if !p.BaseResp.DeepEqual(src) { diff --git a/backend/kitex_gen/coze/loop/evaluation/eval_set/k-coze.loop.evaluation.eval_set.go b/backend/kitex_gen/coze/loop/evaluation/eval_set/k-coze.loop.evaluation.eval_set.go index 3ca04254c..e604829b2 100644 --- a/backend/kitex_gen/coze/loop/evaluation/eval_set/k-coze.loop.evaluation.eval_set.go +++ b/backend/kitex_gen/coze/loop/evaluation/eval_set/k-coze.loop.evaluation.eval_set.go @@ -6216,6 +6216,20 @@ func (p *BatchCreateEvaluationSetItemsResponse) FastRead(buf []byte) (int, error goto SkipFieldError } } + case 3: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 255: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField255(buf[offset:]) @@ -6305,6 +6319,31 @@ func (p *BatchCreateEvaluationSetItemsResponse) FastReadField2(buf []byte) (int, return offset, nil } +func (p *BatchCreateEvaluationSetItemsResponse) FastReadField3(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*dataset.CreateDatasetItemOutput, 0, size) + values := make([]dataset.CreateDatasetItemOutput, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.ItemOutputs = _field + return offset, nil +} + func (p *BatchCreateEvaluationSetItemsResponse) FastReadField255(buf []byte) (int, error) { offset := 0 _field := base.NewBaseResp() @@ -6326,6 +6365,7 @@ func (p *BatchCreateEvaluationSetItemsResponse) FastWriteNocopy(buf []byte, w th if p != nil { offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) @@ -6337,6 +6377,7 @@ func (p *BatchCreateEvaluationSetItemsResponse) BLength() int { if p != nil { l += p.field1Length() l += p.field2Length() + l += p.field3Length() l += p.field255Length() } l += thrift.Binary.FieldStopLength() @@ -6376,6 +6417,22 @@ func (p *BatchCreateEvaluationSetItemsResponse) fastWriteField2(buf []byte, w th return offset } +func (p *BatchCreateEvaluationSetItemsResponse) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetItemOutputs() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 3) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.ItemOutputs { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + func (p *BatchCreateEvaluationSetItemsResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) @@ -6407,6 +6464,19 @@ func (p *BatchCreateEvaluationSetItemsResponse) field2Length() int { return l } +func (p *BatchCreateEvaluationSetItemsResponse) field3Length() int { + l := 0 + if p.IsSetItemOutputs() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.ItemOutputs { + _ = v + l += v.BLength() + } + } + return l +} + func (p *BatchCreateEvaluationSetItemsResponse) field255Length() int { l := 0 l += thrift.Binary.FieldBeginLength() @@ -6448,6 +6518,21 @@ func (p *BatchCreateEvaluationSetItemsResponse) DeepCopy(s interface{}) error { } } + if src.ItemOutputs != nil { + p.ItemOutputs = make([]*dataset.CreateDatasetItemOutput, 0, len(src.ItemOutputs)) + for _, elem := range src.ItemOutputs { + var _elem *dataset.CreateDatasetItemOutput + if elem != nil { + _elem = &dataset.CreateDatasetItemOutput{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.ItemOutputs = append(p.ItemOutputs, _elem) + } + } + var _baseResp *base.BaseResp if src.BaseResp != nil { _baseResp = &base.BaseResp{} diff --git a/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go b/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go index 5b27810b7..ee7fe7866 100644 --- a/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go @@ -13662,9 +13662,10 @@ func (p *InvokeExperimentRequest) Field255DeepEqual(src *base.Base) bool { type InvokeExperimentResponse struct { // key: item 在 items 中的索引 - AddedItems map[int64]int64 `thrift:"added_items,1,optional" frugal:"1,optional,map" form:"added_items" json:"added_items,omitempty" query:"added_items"` - Errors []*dataset.ItemErrorGroup `thrift:"errors,2,optional" frugal:"2,optional,list" form:"errors" json:"errors,omitempty" query:"errors"` - BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` + AddedItems map[int64]int64 `thrift:"added_items,1,optional" frugal:"1,optional,map" form:"added_items" json:"added_items,omitempty" query:"added_items"` + Errors []*dataset.ItemErrorGroup `thrift:"errors,2,optional" frugal:"2,optional,list" form:"errors" json:"errors,omitempty" query:"errors"` + ItemOutputs []*dataset.CreateDatasetItemOutput `thrift:"item_outputs,3,optional" frugal:"3,optional,list" form:"item_outputs" json:"item_outputs,omitempty" query:"item_outputs"` + BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` } func NewInvokeExperimentResponse() *InvokeExperimentResponse { @@ -13698,6 +13699,18 @@ func (p *InvokeExperimentResponse) GetErrors() (v []*dataset.ItemErrorGroup) { return p.Errors } +var InvokeExperimentResponse_ItemOutputs_DEFAULT []*dataset.CreateDatasetItemOutput + +func (p *InvokeExperimentResponse) GetItemOutputs() (v []*dataset.CreateDatasetItemOutput) { + if p == nil { + return + } + if !p.IsSetItemOutputs() { + return InvokeExperimentResponse_ItemOutputs_DEFAULT + } + return p.ItemOutputs +} + var InvokeExperimentResponse_BaseResp_DEFAULT *base.BaseResp func (p *InvokeExperimentResponse) GetBaseResp() (v *base.BaseResp) { @@ -13715,6 +13728,9 @@ func (p *InvokeExperimentResponse) SetAddedItems(val map[int64]int64) { func (p *InvokeExperimentResponse) SetErrors(val []*dataset.ItemErrorGroup) { p.Errors = val } +func (p *InvokeExperimentResponse) SetItemOutputs(val []*dataset.CreateDatasetItemOutput) { + p.ItemOutputs = val +} func (p *InvokeExperimentResponse) SetBaseResp(val *base.BaseResp) { p.BaseResp = val } @@ -13722,6 +13738,7 @@ func (p *InvokeExperimentResponse) SetBaseResp(val *base.BaseResp) { var fieldIDToName_InvokeExperimentResponse = map[int16]string{ 1: "added_items", 2: "errors", + 3: "item_outputs", 255: "BaseResp", } @@ -13733,6 +13750,10 @@ func (p *InvokeExperimentResponse) IsSetErrors() bool { return p.Errors != nil } +func (p *InvokeExperimentResponse) IsSetItemOutputs() bool { + return p.ItemOutputs != nil +} + func (p *InvokeExperimentResponse) IsSetBaseResp() bool { return p.BaseResp != nil } @@ -13771,6 +13792,14 @@ func (p *InvokeExperimentResponse) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 3: + if fieldTypeId == thrift.LIST { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -13860,6 +13889,29 @@ func (p *InvokeExperimentResponse) ReadField2(iprot thrift.TProtocol) error { p.Errors = _field return nil } +func (p *InvokeExperimentResponse) ReadField3(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*dataset.CreateDatasetItemOutput, 0, size) + values := make([]dataset.CreateDatasetItemOutput, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.ItemOutputs = _field + return nil +} func (p *InvokeExperimentResponse) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBaseResp() if err := _field.Read(iprot); err != nil { @@ -13883,6 +13935,10 @@ func (p *InvokeExperimentResponse) Write(oprot thrift.TProtocol) (err error) { fieldId = 2 goto WriteFieldError } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -13960,6 +14016,32 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } +func (p *InvokeExperimentResponse) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetItemOutputs() { + if err = oprot.WriteFieldBegin("item_outputs", thrift.LIST, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.ItemOutputs)); err != nil { + return err + } + for _, v := range p.ItemOutputs { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} func (p *InvokeExperimentResponse) writeField255(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError @@ -13997,6 +14079,9 @@ func (p *InvokeExperimentResponse) DeepEqual(ano *InvokeExperimentResponse) bool if !p.Field2DeepEqual(ano.Errors) { return false } + if !p.Field3DeepEqual(ano.ItemOutputs) { + return false + } if !p.Field255DeepEqual(ano.BaseResp) { return false } @@ -14029,6 +14114,19 @@ func (p *InvokeExperimentResponse) Field2DeepEqual(src []*dataset.ItemErrorGroup } return true } +func (p *InvokeExperimentResponse) Field3DeepEqual(src []*dataset.CreateDatasetItemOutput) bool { + + if len(p.ItemOutputs) != len(src) { + return false + } + for i, v := range p.ItemOutputs { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} func (p *InvokeExperimentResponse) Field255DeepEqual(src *base.BaseResp) bool { if !p.BaseResp.DeepEqual(src) { diff --git a/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go b/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go index 4dd14f136..2a61f427f 100644 --- a/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go @@ -10090,6 +10090,20 @@ func (p *InvokeExperimentResponse) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 3: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 255: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField255(buf[offset:]) @@ -10179,6 +10193,31 @@ func (p *InvokeExperimentResponse) FastReadField2(buf []byte) (int, error) { return offset, nil } +func (p *InvokeExperimentResponse) FastReadField3(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*dataset.CreateDatasetItemOutput, 0, size) + values := make([]dataset.CreateDatasetItemOutput, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.ItemOutputs = _field + return offset, nil +} + func (p *InvokeExperimentResponse) FastReadField255(buf []byte) (int, error) { offset := 0 _field := base.NewBaseResp() @@ -10200,6 +10239,7 @@ func (p *InvokeExperimentResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWr if p != nil { offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) @@ -10211,6 +10251,7 @@ func (p *InvokeExperimentResponse) BLength() int { if p != nil { l += p.field1Length() l += p.field2Length() + l += p.field3Length() l += p.field255Length() } l += thrift.Binary.FieldStopLength() @@ -10250,6 +10291,22 @@ func (p *InvokeExperimentResponse) fastWriteField2(buf []byte, w thrift.NocopyWr return offset } +func (p *InvokeExperimentResponse) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetItemOutputs() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 3) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.ItemOutputs { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + func (p *InvokeExperimentResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) @@ -10281,6 +10338,19 @@ func (p *InvokeExperimentResponse) field2Length() int { return l } +func (p *InvokeExperimentResponse) field3Length() int { + l := 0 + if p.IsSetItemOutputs() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.ItemOutputs { + _ = v + l += v.BLength() + } + } + return l +} + func (p *InvokeExperimentResponse) field255Length() int { l := 0 l += thrift.Binary.FieldBeginLength() @@ -10322,6 +10392,21 @@ func (p *InvokeExperimentResponse) DeepCopy(s interface{}) error { } } + if src.ItemOutputs != nil { + p.ItemOutputs = make([]*dataset.CreateDatasetItemOutput, 0, len(src.ItemOutputs)) + for _, elem := range src.ItemOutputs { + var _elem *dataset.CreateDatasetItemOutput + if elem != nil { + _elem = &dataset.CreateDatasetItemOutput{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.ItemOutputs = append(p.ItemOutputs, _elem) + } + } + var _baseResp *base.BaseResp if src.BaseResp != nil { _baseResp = &base.BaseResp{} diff --git a/backend/modules/evaluation/application/convertor/evaluation_set/evaluation_set_item.go b/backend/modules/evaluation/application/convertor/evaluation_set/evaluation_set_item.go index 5c59e4519..115ec9a6b 100644 --- a/backend/modules/evaluation/application/convertor/evaluation_set/evaluation_set_item.go +++ b/backend/modules/evaluation/application/convertor/evaluation_set/evaluation_set_item.go @@ -165,6 +165,28 @@ func ItemErrorGroupDO2DTOs(dos []*entity.ItemErrorGroup) []*dataset.ItemErrorGro return result } +func CreateDatasetItemOutputDO2DTOs(dos []*entity.CreateDatasetItemOutput) []*dataset.CreateDatasetItemOutput { + if dos == nil { + return nil + } + result := make([]*dataset.CreateDatasetItemOutput, 0) + for _, do := range dos { + result = append(result, CreateDatasetItemOutputDO2DTO(do)) + } + return result +} +func CreateDatasetItemOutputDO2DTO(do *entity.CreateDatasetItemOutput) *dataset.CreateDatasetItemOutput { + if do == nil { + return nil + } + return &dataset.CreateDatasetItemOutput{ + ItemIndex: do.ItemIndex, + ItemKey: do.ItemKey, + ItemID: do.ItemID, + IsNewItem: do.IsNewItem, + } +} + func ItemErrorGroupDO2DTO(do *entity.ItemErrorGroup) *dataset.ItemErrorGroup { if do == nil { return nil diff --git a/backend/modules/evaluation/application/evaluation_set_app.go b/backend/modules/evaluation/application/evaluation_set_app.go index 95627797d..c42f4a52f 100644 --- a/backend/modules/evaluation/application/evaluation_set_app.go +++ b/backend/modules/evaluation/application/evaluation_set_app.go @@ -294,7 +294,7 @@ func (e *EvaluationSetApplicationImpl) BatchCreateEvaluationSetItems(ctx context return nil, err } // domain调用 - idMap, errors, err := e.evaluationSetItemService.BatchCreateEvaluationSetItems(ctx, &entity.BatchCreateEvaluationSetItemsParam{ + idMap, errors, itemOutputs, err := e.evaluationSetItemService.BatchCreateEvaluationSetItems(ctx, &entity.BatchCreateEvaluationSetItemsParam{ SpaceID: req.WorkspaceID, EvaluationSetID: req.EvaluationSetID, Items: evaluation_set.ItemDTO2DOs(req.Items), @@ -306,8 +306,9 @@ func (e *EvaluationSetApplicationImpl) BatchCreateEvaluationSetItems(ctx context } // 返回结果构建、错误处理 return &eval_set.BatchCreateEvaluationSetItemsResponse{ - AddedItems: idMap, - Errors: evaluation_set.ItemErrorGroupDO2DTOs(errors), + AddedItems: idMap, + Errors: evaluation_set.ItemErrorGroupDO2DTOs(errors), + ItemOutputs: evaluation_set.CreateDatasetItemOutputDO2DTOs(itemOutputs), }, nil } diff --git a/backend/modules/evaluation/application/experiment_app.go b/backend/modules/evaluation/application/experiment_app.go index a51263176..4e6c2c9bf 100644 --- a/backend/modules/evaluation/application/experiment_app.go +++ b/backend/modules/evaluation/application/experiment_app.go @@ -706,7 +706,7 @@ func (e *experimentApplication) InvokeExperiment(ctx context.Context, req *expt. return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("expt status not allow to invoke")) } itemDOS := evaluation_set.ItemDTO2DOs(req.Items) - idMap, evalSetErrors, err := e.evaluationSetItemService.BatchCreateEvaluationSetItems(ctx, &entity.BatchCreateEvaluationSetItemsParam{ + idMap, evalSetErrors, itemOutputs, err := e.evaluationSetItemService.BatchCreateEvaluationSetItems(ctx, &entity.BatchCreateEvaluationSetItemsParam{ SpaceID: req.GetWorkspaceID(), EvaluationSetID: req.GetEvaluationSetID(), Items: itemDOS, @@ -740,9 +740,10 @@ func (e *experimentApplication) InvokeExperiment(ctx context.Context, req *expt. } return &expt.InvokeExperimentResponse{ - AddedItems: idMap, - Errors: evaluation_set.ItemErrorGroupDO2DTOs(evalSetErrors), - BaseResp: base.NewBaseResp(), + AddedItems: idMap, + Errors: evaluation_set.ItemErrorGroupDO2DTOs(evalSetErrors), + ItemOutputs: evaluation_set.CreateDatasetItemOutputDO2DTOs(itemOutputs), + BaseResp: base.NewBaseResp(), }, nil } diff --git a/backend/modules/evaluation/domain/component/rpc/dataset.go b/backend/modules/evaluation/domain/component/rpc/dataset.go index a5919c5dd..487170357 100644 --- a/backend/modules/evaluation/domain/component/rpc/dataset.go +++ b/backend/modules/evaluation/domain/component/rpc/dataset.go @@ -25,7 +25,7 @@ type IDatasetRPCAdapter interface { UpdateDatasetSchema(ctx context.Context, spaceID int64, evaluationSetID int64, schemas []*entity.FieldSchema) (err error) - BatchCreateDatasetItems(ctx context.Context, param *BatchCreateDatasetItemsParam) (idMap map[int64]int64, errorGroup []*entity.ItemErrorGroup, err error) + BatchCreateDatasetItems(ctx context.Context, param *BatchCreateDatasetItemsParam) (idMap map[int64]int64, errorGroup []*entity.ItemErrorGroup, itemOutputs []*entity.CreateDatasetItemOutput, err error) UpdateDatasetItem(ctx context.Context, spaceID int64, evaluationSetID int64, itemID int64, turns []*entity.Turn) (err error) BatchDeleteDatasetItems(ctx context.Context, spaceID int64, evaluationSetID int64, itemIDs []int64) (err error) ListDatasetItems(ctx context.Context, param *ListDatasetItemsParam) (items []*entity.EvaluationSetItem, total *int64, nextPageToken *string, err error) diff --git a/backend/modules/evaluation/domain/entity/evaluation_set_item.go b/backend/modules/evaluation/domain/entity/evaluation_set_item.go index 9bb344164..1cc0886c1 100644 --- a/backend/modules/evaluation/domain/entity/evaluation_set_item.go +++ b/backend/modules/evaluation/domain/entity/evaluation_set_item.go @@ -163,3 +163,12 @@ type ItemSnapshotFieldMapping struct { // tag_array时,无值 MappingSubKey string `json:"mapping_subKey"` } + +type CreateDatasetItemOutput struct { + // item 在 BatchCreateDatasetItemsReq.items 中的索引 + ItemIndex *int32 + ItemKey *string + ItemID *int64 + // 是否是新的 Item。提供 itemKey 时,如果 itemKey 在数据集中已存在数据,则不算做「新 Item」,该字段为 false。 + IsNewItem *bool +} diff --git a/backend/modules/evaluation/domain/service/evaluation_set_item.go b/backend/modules/evaluation/domain/service/evaluation_set_item.go index 67e43e8cf..64cddb1ff 100644 --- a/backend/modules/evaluation/domain/service/evaluation_set_item.go +++ b/backend/modules/evaluation/domain/service/evaluation_set_item.go @@ -11,7 +11,7 @@ import ( //go:generate mockgen -destination=mocks/evaluation_set_item.go -package=mocks . EvaluationSetItemService type EvaluationSetItemService interface { - BatchCreateEvaluationSetItems(ctx context.Context, param *entity.BatchCreateEvaluationSetItemsParam) (idMap map[int64]int64, errors []*entity.ItemErrorGroup, err error) + BatchCreateEvaluationSetItems(ctx context.Context, param *entity.BatchCreateEvaluationSetItemsParam) (idMap map[int64]int64, errors []*entity.ItemErrorGroup, itemOutputs []*entity.CreateDatasetItemOutput, err error) UpdateEvaluationSetItem(ctx context.Context, spaceID, evaluationSetID, itemID int64, turns []*entity.Turn) (err error) BatchDeleteEvaluationSetItems(ctx context.Context, spaceID int64, evaluationSetID int64, itemIDs []int64) (err error) ListEvaluationSetItems(ctx context.Context, param *entity.ListEvaluationSetItemsParam) (items []*entity.EvaluationSetItem, total *int64, nextPageToken *string, err error) diff --git a/backend/modules/evaluation/domain/service/evaluation_set_item_impl.go b/backend/modules/evaluation/domain/service/evaluation_set_item_impl.go index 59a7a4a8b..ab6c3a558 100644 --- a/backend/modules/evaluation/domain/service/evaluation_set_item_impl.go +++ b/backend/modules/evaluation/domain/service/evaluation_set_item_impl.go @@ -31,9 +31,9 @@ func NewEvaluationSetItemServiceImpl(datasetRPCAdapter rpc.IDatasetRPCAdapter) E return evaluationSetItemServiceImpl } -func (d *EvaluationSetItemServiceImpl) BatchCreateEvaluationSetItems(ctx context.Context, param *entity.BatchCreateEvaluationSetItemsParam) (idMap map[int64]int64, errors []*entity.ItemErrorGroup, err error) { +func (d *EvaluationSetItemServiceImpl) BatchCreateEvaluationSetItems(ctx context.Context, param *entity.BatchCreateEvaluationSetItemsParam) (idMap map[int64]int64, errors []*entity.ItemErrorGroup, itemOutputs []*entity.CreateDatasetItemOutput, err error) { if param == nil { - return nil, nil, errorx.NewByCode(errno.CommonInternalErrorCode) + return nil, nil, nil, errorx.NewByCode(errno.CommonInternalErrorCode) } return d.datasetRPCAdapter.BatchCreateDatasetItems(ctx, &rpc.BatchCreateDatasetItemsParam{ SpaceID: param.SpaceID, diff --git a/backend/modules/evaluation/infra/rpc/data/dataset.go b/backend/modules/evaluation/infra/rpc/data/dataset.go index cbc385ad2..a78f86a6e 100644 --- a/backend/modules/evaluation/infra/rpc/data/dataset.go +++ b/backend/modules/evaluation/infra/rpc/data/dataset.go @@ -276,10 +276,10 @@ func (a *DatasetRPCAdapter) UpdateDatasetSchema(ctx context.Context, spaceID int return nil } -func (a *DatasetRPCAdapter) BatchCreateDatasetItems(ctx context.Context, param *rpc.BatchCreateDatasetItemsParam) (idMap map[int64]int64, errorGroup []*entity.ItemErrorGroup, err error) { +func (a *DatasetRPCAdapter) BatchCreateDatasetItems(ctx context.Context, param *rpc.BatchCreateDatasetItemsParam) (idMap map[int64]int64, errorGroup []*entity.ItemErrorGroup, itemOutputs []*entity.CreateDatasetItemOutput, err error) { datasetItems, err := convert2DatasetItems(ctx, param.Items) if err != nil { - return nil, nil, err + return nil, nil, nil, err } resp, err := a.client.BatchCreateDatasetItems(ctx, &dataset.BatchCreateDatasetItemsRequest{ WorkspaceID: ¶m.SpaceID, @@ -289,16 +289,16 @@ func (a *DatasetRPCAdapter) BatchCreateDatasetItems(ctx context.Context, param * AllowPartialAdd: param.AllowPartialAdd, }) if err != nil { - return nil, nil, err + return nil, nil, nil, err } if resp == nil { - return nil, nil, errorx.NewByCode(errno.CommonRPCErrorCode) + return nil, nil, nil, errorx.NewByCode(errno.CommonRPCErrorCode) } if resp.BaseResp != nil && resp.BaseResp.StatusCode != 0 { logs.CtxInfo(ctx, "BatchCreateDatasetItems resp: %v", json.Jsonify(resp)) - return nil, nil, errorx.NewByCode(resp.BaseResp.StatusCode, errorx.WithExtraMsg(resp.BaseResp.StatusMessage)) + return nil, nil, nil, errorx.NewByCode(resp.BaseResp.StatusCode, errorx.WithExtraMsg(resp.BaseResp.StatusMessage)) } - return resp.GetAddedItems(), convert2EvaluationSetErrorGroups(ctx, resp.GetErrors()), nil + return resp.GetAddedItems(), convert2EvaluationSetErrorGroups(ctx, resp.GetErrors()), nil, nil } func (a *DatasetRPCAdapter) UpdateDatasetItem(ctx context.Context, spaceID int64, evaluationSetID int64, itemID int64, turns []*entity.Turn) (err error) { diff --git a/idl/thrift/coze/loop/data/domain/dataset.thrift b/idl/thrift/coze/loop/data/domain/dataset.thrift index a6196b307..9925f774f 100644 --- a/idl/thrift/coze/loop/data/domain/dataset.thrift +++ b/idl/thrift/coze/loop/data/domain/dataset.thrift @@ -285,4 +285,11 @@ struct ItemErrorGroup { 2: optional string summary 3: optional i32 error_count // 错误条数 4: optional list details // 批量写入时,每类错误至多提供 5 个错误详情;导入任务,至多提供 10 个错误详情 +} + +struct CreateDatasetItemOutput { + 1: optional i32 item_index // item 在 BatchCreateDatasetItemsReq.items 中的索引 + 2: optional string item_key + 3: optional i64 item_id (agw.js_conv = "str") + 4: optional bool is_new_item // 是否是新的 Item。提供 itemKey 时,如果 itemKey 在数据集中已存在数据,则不算做「新 Item」,该字段为 false。 } \ No newline at end of file diff --git a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_set.thrift b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_set.thrift index 1e6c4070e..119e2a49c 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_set.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_set.thrift @@ -193,6 +193,8 @@ struct BatchCreateEvaluationSetItemsResponse { 1: optional map added_items (api.js_conv='true', go.tag='json:"added_items"') // key: item 在 items 中的索引 2: optional list errors + 3: optional list item_outputs + 255: base.BaseResp BaseResp } diff --git a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift index a869d32fe..8fdd6247a 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift @@ -285,6 +285,8 @@ struct InvokeExperimentResponse { 1: optional map added_items // key: item 在 items 中的索引 2: optional list errors + 3: optional list item_outputs + 255: base.BaseResp BaseResp } From 1821eda4a822a9457eb48429d4405cc607008355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cdsf86=E2=80=9D?= Date: Sat, 11 Oct 2025 17:03:12 +0800 Subject: [PATCH 434/462] fix Change-Id: I123702b62cd8c3b4b517a1f591493693822f2706 --- .../apis/observabilitytaskservice/client.go | 73 +++++++++++++++++++ .../component/rpc/mocks/data_provider.go | 15 ++-- .../service/mocks/evaluation_set_item.go | 59 ++++++++------- 3 files changed, 114 insertions(+), 33 deletions(-) create mode 100644 backend/kitex_gen/coze/loop/apis/observabilitytaskservice/client.go diff --git a/backend/kitex_gen/coze/loop/apis/observabilitytaskservice/client.go b/backend/kitex_gen/coze/loop/apis/observabilitytaskservice/client.go new file mode 100644 index 000000000..a8e4d3beb --- /dev/null +++ b/backend/kitex_gen/coze/loop/apis/observabilitytaskservice/client.go @@ -0,0 +1,73 @@ +// Code generated by Kitex v0.13.1. DO NOT EDIT. + +package observabilitytaskservice + +import ( + "context" + client "github.com/cloudwego/kitex/client" + callopt "github.com/cloudwego/kitex/client/callopt" + task "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" +) + +// Client is designed to provide IDL-compatible methods with call-option parameter for kitex framework. +type Client interface { + CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest, callOptions ...callopt.Option) (r *task.CheckTaskNameResponse, err error) + CreateTask(ctx context.Context, req *task.CreateTaskRequest, callOptions ...callopt.Option) (r *task.CreateTaskResponse, err error) + UpdateTask(ctx context.Context, req *task.UpdateTaskRequest, callOptions ...callopt.Option) (r *task.UpdateTaskResponse, err error) + ListTasks(ctx context.Context, req *task.ListTasksRequest, callOptions ...callopt.Option) (r *task.ListTasksResponse, err error) + GetTask(ctx context.Context, req *task.GetTaskRequest, callOptions ...callopt.Option) (r *task.GetTaskResponse, err error) +} + +// NewClient creates a client for the service defined in IDL. +func NewClient(destService string, opts ...client.Option) (Client, error) { + var options []client.Option + options = append(options, client.WithDestService(destService)) + + options = append(options, opts...) + + kc, err := client.NewClient(serviceInfo(), options...) + if err != nil { + return nil, err + } + return &kObservabilityTaskServiceClient{ + kClient: newServiceClient(kc), + }, nil +} + +// MustNewClient creates a client for the service defined in IDL. It panics if any error occurs. +func MustNewClient(destService string, opts ...client.Option) Client { + kc, err := NewClient(destService, opts...) + if err != nil { + panic(err) + } + return kc +} + +type kObservabilityTaskServiceClient struct { + *kClient +} + +func (p *kObservabilityTaskServiceClient) CheckTaskName(ctx context.Context, req *task.CheckTaskNameRequest, callOptions ...callopt.Option) (r *task.CheckTaskNameResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CheckTaskName(ctx, req) +} + +func (p *kObservabilityTaskServiceClient) CreateTask(ctx context.Context, req *task.CreateTaskRequest, callOptions ...callopt.Option) (r *task.CreateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.CreateTask(ctx, req) +} + +func (p *kObservabilityTaskServiceClient) UpdateTask(ctx context.Context, req *task.UpdateTaskRequest, callOptions ...callopt.Option) (r *task.UpdateTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.UpdateTask(ctx, req) +} + +func (p *kObservabilityTaskServiceClient) ListTasks(ctx context.Context, req *task.ListTasksRequest, callOptions ...callopt.Option) (r *task.ListTasksResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.ListTasks(ctx, req) +} + +func (p *kObservabilityTaskServiceClient) GetTask(ctx context.Context, req *task.GetTaskRequest, callOptions ...callopt.Option) (r *task.GetTaskResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.GetTask(ctx, req) +} diff --git a/backend/modules/evaluation/domain/component/rpc/mocks/data_provider.go b/backend/modules/evaluation/domain/component/rpc/mocks/data_provider.go index d63beefcd..5606fed70 100644 --- a/backend/modules/evaluation/domain/component/rpc/mocks/data_provider.go +++ b/backend/modules/evaluation/domain/component/rpc/mocks/data_provider.go @@ -43,13 +43,14 @@ func (m *MockIDatasetRPCAdapter) EXPECT() *MockIDatasetRPCAdapterMockRecorder { } // BatchCreateDatasetItems mocks base method. -func (m *MockIDatasetRPCAdapter) BatchCreateDatasetItems(ctx context.Context, param *rpc.BatchCreateDatasetItemsParam) (map[int64]int64, []*entity.ItemErrorGroup, error) { +func (m *MockIDatasetRPCAdapter) BatchCreateDatasetItems(ctx context.Context, param *rpc.BatchCreateDatasetItemsParam) (map[int64]int64, []*entity.ItemErrorGroup, []*entity.CreateDatasetItemOutput, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "BatchCreateDatasetItems", ctx, param) ret0, _ := ret[0].(map[int64]int64) ret1, _ := ret[1].([]*entity.ItemErrorGroup) - ret2, _ := ret[2].(error) - return ret0, ret1, ret2 + ret2, _ := ret[2].([]*entity.CreateDatasetItemOutput) + ret3, _ := ret[3].(error) + return ret0, ret1, ret2, ret3 } // BatchCreateDatasetItems indicates an expected call of BatchCreateDatasetItems. @@ -290,9 +291,9 @@ func (mr *MockIDatasetRPCAdapterMockRecorder) ListDatasets(ctx, param any) *gomo } // QueryItemSnapshotMappings mocks base method. -func (m *MockIDatasetRPCAdapter) QueryItemSnapshotMappings(arg0 context.Context, arg1, arg2 int64, arg3 *int64) ([]*entity.ItemSnapshotFieldMapping, string, error) { +func (m *MockIDatasetRPCAdapter) QueryItemSnapshotMappings(ctx context.Context, spaceID, datasetID int64, versionID *int64) ([]*entity.ItemSnapshotFieldMapping, string, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "QueryItemSnapshotMappings", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "QueryItemSnapshotMappings", ctx, spaceID, datasetID, versionID) ret0, _ := ret[0].([]*entity.ItemSnapshotFieldMapping) ret1, _ := ret[1].(string) ret2, _ := ret[2].(error) @@ -300,9 +301,9 @@ func (m *MockIDatasetRPCAdapter) QueryItemSnapshotMappings(arg0 context.Context, } // QueryItemSnapshotMappings indicates an expected call of QueryItemSnapshotMappings. -func (mr *MockIDatasetRPCAdapterMockRecorder) QueryItemSnapshotMappings(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockIDatasetRPCAdapterMockRecorder) QueryItemSnapshotMappings(ctx, spaceID, datasetID, versionID any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryItemSnapshotMappings", reflect.TypeOf((*MockIDatasetRPCAdapter)(nil).QueryItemSnapshotMappings), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryItemSnapshotMappings", reflect.TypeOf((*MockIDatasetRPCAdapter)(nil).QueryItemSnapshotMappings), ctx, spaceID, datasetID, versionID) } // UpdateDataset mocks base method. diff --git a/backend/modules/evaluation/domain/service/mocks/evaluation_set_item.go b/backend/modules/evaluation/domain/service/mocks/evaluation_set_item.go index 6205e47f2..c79b809ff 100644 --- a/backend/modules/evaluation/domain/service/mocks/evaluation_set_item.go +++ b/backend/modules/evaluation/domain/service/mocks/evaluation_set_item.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/coze-dev/coze-loop/backend/modules/evaluation/domain/service (interfaces: EvaluationSetItemService) +// +// Generated by this command: +// +// mockgen -destination=mocks/evaluation_set_item.go -package=mocks . EvaluationSetItemService +// // Package mocks is a generated GoMock package. package mocks @@ -16,6 +21,7 @@ import ( type MockEvaluationSetItemService struct { ctrl *gomock.Controller recorder *MockEvaluationSetItemServiceMockRecorder + isgomock struct{} } // MockEvaluationSetItemServiceMockRecorder is the mock recorder for MockEvaluationSetItemService. @@ -36,68 +42,69 @@ func (m *MockEvaluationSetItemService) EXPECT() *MockEvaluationSetItemServiceMoc } // BatchCreateEvaluationSetItems mocks base method. -func (m *MockEvaluationSetItemService) BatchCreateEvaluationSetItems(arg0 context.Context, arg1 *entity.BatchCreateEvaluationSetItemsParam) (map[int64]int64, []*entity.ItemErrorGroup, error) { +func (m *MockEvaluationSetItemService) BatchCreateEvaluationSetItems(ctx context.Context, param *entity.BatchCreateEvaluationSetItemsParam) (map[int64]int64, []*entity.ItemErrorGroup, []*entity.CreateDatasetItemOutput, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BatchCreateEvaluationSetItems", arg0, arg1) + ret := m.ctrl.Call(m, "BatchCreateEvaluationSetItems", ctx, param) ret0, _ := ret[0].(map[int64]int64) ret1, _ := ret[1].([]*entity.ItemErrorGroup) - ret2, _ := ret[2].(error) - return ret0, ret1, ret2 + ret2, _ := ret[2].([]*entity.CreateDatasetItemOutput) + ret3, _ := ret[3].(error) + return ret0, ret1, ret2, ret3 } // BatchCreateEvaluationSetItems indicates an expected call of BatchCreateEvaluationSetItems. -func (mr *MockEvaluationSetItemServiceMockRecorder) BatchCreateEvaluationSetItems(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockEvaluationSetItemServiceMockRecorder) BatchCreateEvaluationSetItems(ctx, param any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BatchCreateEvaluationSetItems", reflect.TypeOf((*MockEvaluationSetItemService)(nil).BatchCreateEvaluationSetItems), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BatchCreateEvaluationSetItems", reflect.TypeOf((*MockEvaluationSetItemService)(nil).BatchCreateEvaluationSetItems), ctx, param) } // BatchDeleteEvaluationSetItems mocks base method. -func (m *MockEvaluationSetItemService) BatchDeleteEvaluationSetItems(arg0 context.Context, arg1, arg2 int64, arg3 []int64) error { +func (m *MockEvaluationSetItemService) BatchDeleteEvaluationSetItems(ctx context.Context, spaceID, evaluationSetID int64, itemIDs []int64) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BatchDeleteEvaluationSetItems", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "BatchDeleteEvaluationSetItems", ctx, spaceID, evaluationSetID, itemIDs) ret0, _ := ret[0].(error) return ret0 } // BatchDeleteEvaluationSetItems indicates an expected call of BatchDeleteEvaluationSetItems. -func (mr *MockEvaluationSetItemServiceMockRecorder) BatchDeleteEvaluationSetItems(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockEvaluationSetItemServiceMockRecorder) BatchDeleteEvaluationSetItems(ctx, spaceID, evaluationSetID, itemIDs any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BatchDeleteEvaluationSetItems", reflect.TypeOf((*MockEvaluationSetItemService)(nil).BatchDeleteEvaluationSetItems), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BatchDeleteEvaluationSetItems", reflect.TypeOf((*MockEvaluationSetItemService)(nil).BatchDeleteEvaluationSetItems), ctx, spaceID, evaluationSetID, itemIDs) } // BatchGetEvaluationSetItems mocks base method. -func (m *MockEvaluationSetItemService) BatchGetEvaluationSetItems(arg0 context.Context, arg1 *entity.BatchGetEvaluationSetItemsParam) ([]*entity.EvaluationSetItem, error) { +func (m *MockEvaluationSetItemService) BatchGetEvaluationSetItems(ctx context.Context, param *entity.BatchGetEvaluationSetItemsParam) ([]*entity.EvaluationSetItem, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BatchGetEvaluationSetItems", arg0, arg1) + ret := m.ctrl.Call(m, "BatchGetEvaluationSetItems", ctx, param) ret0, _ := ret[0].([]*entity.EvaluationSetItem) ret1, _ := ret[1].(error) return ret0, ret1 } // BatchGetEvaluationSetItems indicates an expected call of BatchGetEvaluationSetItems. -func (mr *MockEvaluationSetItemServiceMockRecorder) BatchGetEvaluationSetItems(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockEvaluationSetItemServiceMockRecorder) BatchGetEvaluationSetItems(ctx, param any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BatchGetEvaluationSetItems", reflect.TypeOf((*MockEvaluationSetItemService)(nil).BatchGetEvaluationSetItems), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BatchGetEvaluationSetItems", reflect.TypeOf((*MockEvaluationSetItemService)(nil).BatchGetEvaluationSetItems), ctx, param) } // ClearEvaluationSetDraftItem mocks base method. -func (m *MockEvaluationSetItemService) ClearEvaluationSetDraftItem(arg0 context.Context, arg1, arg2 int64) error { +func (m *MockEvaluationSetItemService) ClearEvaluationSetDraftItem(ctx context.Context, spaceID, evaluationSetID int64) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ClearEvaluationSetDraftItem", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "ClearEvaluationSetDraftItem", ctx, spaceID, evaluationSetID) ret0, _ := ret[0].(error) return ret0 } // ClearEvaluationSetDraftItem indicates an expected call of ClearEvaluationSetDraftItem. -func (mr *MockEvaluationSetItemServiceMockRecorder) ClearEvaluationSetDraftItem(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockEvaluationSetItemServiceMockRecorder) ClearEvaluationSetDraftItem(ctx, spaceID, evaluationSetID any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ClearEvaluationSetDraftItem", reflect.TypeOf((*MockEvaluationSetItemService)(nil).ClearEvaluationSetDraftItem), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ClearEvaluationSetDraftItem", reflect.TypeOf((*MockEvaluationSetItemService)(nil).ClearEvaluationSetDraftItem), ctx, spaceID, evaluationSetID) } // ListEvaluationSetItems mocks base method. -func (m *MockEvaluationSetItemService) ListEvaluationSetItems(arg0 context.Context, arg1 *entity.ListEvaluationSetItemsParam) ([]*entity.EvaluationSetItem, *int64, *string, error) { +func (m *MockEvaluationSetItemService) ListEvaluationSetItems(ctx context.Context, param *entity.ListEvaluationSetItemsParam) ([]*entity.EvaluationSetItem, *int64, *string, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListEvaluationSetItems", arg0, arg1) + ret := m.ctrl.Call(m, "ListEvaluationSetItems", ctx, param) ret0, _ := ret[0].([]*entity.EvaluationSetItem) ret1, _ := ret[1].(*int64) ret2, _ := ret[2].(*string) @@ -106,21 +113,21 @@ func (m *MockEvaluationSetItemService) ListEvaluationSetItems(arg0 context.Conte } // ListEvaluationSetItems indicates an expected call of ListEvaluationSetItems. -func (mr *MockEvaluationSetItemServiceMockRecorder) ListEvaluationSetItems(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockEvaluationSetItemServiceMockRecorder) ListEvaluationSetItems(ctx, param any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListEvaluationSetItems", reflect.TypeOf((*MockEvaluationSetItemService)(nil).ListEvaluationSetItems), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListEvaluationSetItems", reflect.TypeOf((*MockEvaluationSetItemService)(nil).ListEvaluationSetItems), ctx, param) } // UpdateEvaluationSetItem mocks base method. -func (m *MockEvaluationSetItemService) UpdateEvaluationSetItem(arg0 context.Context, arg1, arg2, arg3 int64, arg4 []*entity.Turn) error { +func (m *MockEvaluationSetItemService) UpdateEvaluationSetItem(ctx context.Context, spaceID, evaluationSetID, itemID int64, turns []*entity.Turn) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateEvaluationSetItem", arg0, arg1, arg2, arg3, arg4) + ret := m.ctrl.Call(m, "UpdateEvaluationSetItem", ctx, spaceID, evaluationSetID, itemID, turns) ret0, _ := ret[0].(error) return ret0 } // UpdateEvaluationSetItem indicates an expected call of UpdateEvaluationSetItem. -func (mr *MockEvaluationSetItemServiceMockRecorder) UpdateEvaluationSetItem(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { +func (mr *MockEvaluationSetItemServiceMockRecorder) UpdateEvaluationSetItem(ctx, spaceID, evaluationSetID, itemID, turns any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateEvaluationSetItem", reflect.TypeOf((*MockEvaluationSetItemService)(nil).UpdateEvaluationSetItem), arg0, arg1, arg2, arg3, arg4) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateEvaluationSetItem", reflect.TypeOf((*MockEvaluationSetItemService)(nil).UpdateEvaluationSetItem), ctx, spaceID, evaluationSetID, itemID, turns) } From f37ce7663ff4060197445e6577daac3f986f6ab6 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 17:14:46 +0800 Subject: [PATCH 435/462] add wire gen --- backend/api/api.go | 6 ++++++ backend/api/handler/coze/loop/apis/wire.go | 1 + backend/api/handler/coze/loop/apis/wire_gen.go | 5 ++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/backend/api/api.go b/backend/api/api.go index a25185a17..3419c1a98 100644 --- a/backend/api/api.go +++ b/backend/api/api.go @@ -11,6 +11,7 @@ import ( "github.com/cloudwego/hertz/pkg/app/server" "github.com/cloudwego/hertz/pkg/app/server/binding" "github.com/cloudwego/hertz/pkg/app/server/render" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/api/handler/coze/loop/apis" "github.com/coze-dev/coze-loop/backend/infra/ck" @@ -29,6 +30,7 @@ import ( "github.com/coze-dev/coze-loop/backend/loop_gen/coze/loop/data/lotag" "github.com/coze-dev/coze-loop/backend/loop_gen/coze/loop/evaluation/loeval_set" "github.com/coze-dev/coze-loop/backend/loop_gen/coze/loop/evaluation/loevaluator" + "github.com/coze-dev/coze-loop/backend/loop_gen/coze/loop/evaluation/loexpt" "github.com/coze-dev/coze-loop/backend/loop_gen/coze/loop/foundation/loauth" "github.com/coze-dev/coze-loop/backend/loop_gen/coze/loop/foundation/lofile" "github.com/coze-dev/coze-loop/backend/loop_gen/coze/loop/foundation/louser" @@ -115,6 +117,10 @@ func Init( lotag.NewLocalTagService(dataHandler.TagService), limiterFactory, lodataset.NewLocalDatasetService(dataHandler.IDatasetApplication), + cmdable, + loexpt.NewLocalExperimentService(evaluationHandler.IExperimentApplication), + processor.TaskProcessor{}, + 0, ) if err != nil { return nil, err diff --git a/backend/api/handler/coze/loop/apis/wire.go b/backend/api/handler/coze/loop/apis/wire.go index e6bea9836..7872ab501 100644 --- a/backend/api/handler/coze/loop/apis/wire.go +++ b/backend/api/handler/coze/loop/apis/wire.go @@ -213,6 +213,7 @@ func InitObservabilityHandler( redis redis.Cmdable, experimentClient experimentservice.Client, taskProcessor task_processor.TaskProcessor, + aid int32, ) (*ObservabilityHandler, error) { wire.Build( observabilitySet, diff --git a/backend/api/handler/coze/loop/apis/wire_gen.go b/backend/api/handler/coze/loop/apis/wire_gen.go index d69ab0633..8c08b6ecf 100644 --- a/backend/api/handler/coze/loop/apis/wire_gen.go +++ b/backend/api/handler/coze/loop/apis/wire_gen.go @@ -8,7 +8,6 @@ package apis import ( "context" - "github.com/cloudwego/kitex/pkg/endpoint" "github.com/coze-dev/coze-loop/backend/infra/ck" "github.com/coze-dev/coze-loop/backend/infra/db" @@ -151,7 +150,7 @@ func InitDataHandler(ctx context.Context, idgen2 idgen.IIDGenerator, db2 db.Prov return dataHandler, nil } -func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Provider, meter metrics.Meter, mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, idgen2 idgen.IIDGenerator, benefit2 benefit.IBenefitService, fileClient fileservice.Client, authCli authservice.Client, userClient userservice.Client, evalClient evaluatorservice.Client, evalSetClient evaluationsetservice.Client, tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, datasetClient datasetservice.Client, redis2 redis.Cmdable, experimentClient experimentservice.Client, taskProcessor processor.TaskProcessor) (*ObservabilityHandler, error) { +func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Provider, meter metrics.Meter, mqFactory mq.IFactory, configFactory conf.IConfigLoaderFactory, idgen2 idgen.IIDGenerator, benefit2 benefit.IBenefitService, fileClient fileservice.Client, authCli authservice.Client, userClient userservice.Client, evalClient evaluatorservice.Client, evalSetClient evaluationsetservice.Client, tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, datasetClient datasetservice.Client, redis2 redis.Cmdable, experimentClient experimentservice.Client, taskProcessor processor.TaskProcessor, aid int32) (*ObservabilityHandler, error) { iTraceApplication, err := application6.InitTraceApplication(db2, ckDb, redis2, meter, mqFactory, configFactory, idgen2, fileClient, benefit2, authCli, userClient, evalClient, evalSetClient, tagClient, datasetClient) if err != nil { return nil, err @@ -164,7 +163,7 @@ func InitObservabilityHandler(ctx context.Context, db2 db.Provider, ckDb ck.Prov if err != nil { return nil, err } - iTaskApplication, err := application6.InitTaskApplication(db2, idgen2, configFactory, ckDb, redis2, mqFactory, userClient, authCli, evalClient, evalSetClient, experimentClient, datasetClient, benefit2, fileClient, taskProcessor) + iTaskApplication, err := application6.InitTaskApplication(db2, idgen2, configFactory, benefit2, ckDb, redis2, mqFactory, userClient, authCli, evalClient, evalSetClient, experimentClient, datasetClient, fileClient, taskProcessor, aid) if err != nil { return nil, err } From e72391afc1bd8d7eebebe788230bb0b780684c5c Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 17:36:05 +0800 Subject: [PATCH 436/462] add debug log --- .../domain/task/service/taskexe/tracehub/span_trigger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go index d7b256bc8..93bb2ee3a 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go @@ -35,7 +35,7 @@ func (h *TraceHubServiceImpl) SpanTrigger(ctx context.Context, rawSpan *entity.R logs.CtxInfo(ctx, "space list: %v, bot list: %v, task list: %v", spaceIDs, botIDs, tasks) if !gslice.Contains(spaceIDs, span.WorkspaceID) && !gslice.Contains(botIDs, span.TagsString["bot_id"]) { tags = append(tags, metrics.T{Name: TagKeyResult, Value: "no_space_or_bot"}) - logs.CtxInfo(ctx, "no space or bot found for span, %s", logSuffix) + logs.CtxInfo(ctx, "no space or bot found for span, space_id=%s,bot_id=%s, log_suffix=%s", span.WorkspaceID, span.TagsString["bot_id"], logSuffix) return nil } // 2、Match spans against task rules From f1ed90f725b89f5fd0bd068b807c956e15863a15 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 17:51:36 +0800 Subject: [PATCH 437/462] add debuglog --- .../domain/task/service/taskexe/tracehub/backfill.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index ca413d540..b83a1059c 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -248,6 +248,7 @@ func (h *TraceHubServiceImpl) fetchAndSendSpans(ctx context.Context, listParam * totalCount := int64(0) pageToken := listParam.PageToken for { + logs.CtxInfo(ctx, "ListSpansParam:%v", listParam) result, err := h.traceRepo.ListSpans(ctx, listParam) if err != nil { logs.CtxError(ctx, "list spans failed, task_id=%d, page_token=%s, err=%v", sub.t.GetID(), pageToken, err) From 0295248f1168c617fc6bd127a5efd6e4571761af Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 18:23:15 +0800 Subject: [PATCH 438/462] add debug log --- .../domain/task/service/taskexe/tracehub/backfill.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index b83a1059c..a5b76b0fc 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -9,6 +9,7 @@ import ( "sync" "time" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor" tconv "github.com/coze-dev/coze-loop/backend/modules/observability/application/convertor/task" @@ -35,6 +36,10 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi if err != nil { return err } + ctx = session.WithCtxUser(ctx, &session.User{ + ID: sub.t.GetBaseInfo().GetCreatedBy().GetUserID(), + }) + logs.CtxInfo(ctx, "ctx:%v", ctx) // 2. Determine whether the backfill task is completed to avoid repeated execution isDone, err := h.isBackfillDone(ctx, sub) From 90da81f808a09998bf709e62035ce1a764e65ce5 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sat, 11 Oct 2025 19:01:38 +0800 Subject: [PATCH 439/462] add CTX --- .../task/service/taskexe/tracehub/utils.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go index d7cfc5273..ee8f5a56f 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/utils.go @@ -39,17 +39,17 @@ func ToJSONString(ctx context.Context, obj interface{}) string { } func (h *TraceHubServiceImpl) fillCtx(ctx context.Context) context.Context { - if logs.GetLogID(ctx) == "" { - logID := logs.NewLogID() - ctx = logs.SetLogID(ctx, logID) - } + + logID := logs.NewLogID() + ctx = logs.SetLogID(ctx, logID) + //todo:是否需要?——eval ctx = metainfo.WithPersistentValue(ctx, "LANE_C_FORNAX_APPID", strconv.FormatInt(int64(h.aid), 10)) - //if os.Getenv("TCE_HOST_ENV") == "boe" { - // ctx = context.WithValue(ctx, CtxKeyEnv, "boe_auto_task") - //} else { - // ctx = context.WithValue(ctx, CtxKeyEnv, "ppe_auto_task") - //} + if os.Getenv("TCE_HOST_ENV") == "boe" { + ctx = context.WithValue(ctx, CtxKeyEnv, "boe_auto_task") + } else { + ctx = context.WithValue(ctx, CtxKeyEnv, "ppe_auto_task") + } if env := os.Getenv(XttEnv); env != "" { ctx = context.WithValue(ctx, CtxKeyEnv, env) //nolint:staticcheck,SA1029 } From d43efac16882301596e0dfb51bd072e45c9dbd7c Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sun, 12 Oct 2025 22:07:57 +0800 Subject: [PATCH 440/462] add permission --- .../modules/observability/application/task.go | 53 ++++++++++--------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 536fa5d83..08bfe86c2 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -5,6 +5,7 @@ package application import ( "context" + "strconv" "time" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" @@ -65,11 +66,11 @@ func (t *TaskApplication) CheckTaskName(ctx context.Context, req *task.CheckTask } else if req.GetWorkspaceID() <= 0 { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } - //if err := t.authSvc.CheckWorkspacePermission(ctx, - // rpc.AuthActionTraceTaskList, - // strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - // return nil, err - //} + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskList, + strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + return nil, err + } sResp, err := t.taskSvc.CheckTaskName(ctx, &service.CheckTaskNameReq{ WorkspaceID: req.GetWorkspaceID(), Name: req.GetName(), @@ -87,11 +88,11 @@ func (t *TaskApplication) CreateTask(ctx context.Context, req *task.CreateTaskRe if err := t.validateCreateTaskReq(ctx, req); err != nil { return resp, err } - //if err := t.authSvc.CheckWorkspacePermission(ctx, - // rpc.AuthActionTraceTaskCreate, - // strconv.FormatInt(req.GetTask().GetWorkspaceID(), 10)); err != nil { - // return resp, err - //} + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskCreate, + strconv.FormatInt(req.GetTask().GetWorkspaceID(), 10)); err != nil { + return resp, err + } sResp, err := t.taskSvc.CreateTask(ctx, &service.CreateTaskReq{Task: req.GetTask()}) if err != nil { return resp, err @@ -129,12 +130,12 @@ func (t *TaskApplication) UpdateTask(ctx context.Context, req *task.UpdateTaskRe } else if req.GetWorkspaceID() <= 0 { return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } - //if err := t.authSvc.CheckTaskPermission(ctx, - // rpc.AuthActionTraceTaskEdit, - // strconv.FormatInt(req.GetWorkspaceID(), 10), - // strconv.FormatInt(req.GetTaskID(), 10)); err != nil { - // return nil, err - //} + if err := t.authSvc.CheckTaskPermission(ctx, + rpc.AuthActionTraceTaskEdit, + strconv.FormatInt(req.GetWorkspaceID(), 10), + strconv.FormatInt(req.GetTaskID(), 10)); err != nil { + return nil, err + } err := t.taskSvc.UpdateTask(ctx, &service.UpdateTaskReq{ TaskID: req.GetTaskID(), WorkspaceID: req.GetWorkspaceID(), @@ -156,11 +157,11 @@ func (t *TaskApplication) ListTasks(ctx context.Context, req *task.ListTasksRequ } else if req.GetWorkspaceID() <= 0 { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } - //if err := t.authSvc.CheckWorkspacePermission(ctx, - // rpc.AuthActionTraceTaskList, - // strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - // return resp, err - //} + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskList, + strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + return resp, err + } sResp, err := t.taskSvc.ListTasks(ctx, &service.ListTasksReq{ WorkspaceID: req.GetWorkspaceID(), TaskFilters: req.GetTaskFilters(), @@ -186,11 +187,11 @@ func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) } else if req.GetWorkspaceID() <= 0 { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } - //if err := t.authSvc.CheckWorkspacePermission(ctx, - // rpc.AuthActionTraceTaskList, - // strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { - // return resp, err - //} + if err := t.authSvc.CheckWorkspacePermission(ctx, + rpc.AuthActionTraceTaskList, + strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { + return resp, err + } sResp, err := t.taskSvc.GetTask(ctx, &service.GetTaskReq{ TaskID: req.GetTaskID(), WorkspaceID: req.GetWorkspaceID(), From 38206a8d1a137a5a05e11bb5a234e835fec56a0e Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sun, 12 Oct 2025 22:59:26 +0800 Subject: [PATCH 441/462] add permission --- .../modules/observability/application/task.go | 46 +++++++++++++++++-- .../domain/component/rpc/auth.go | 2 + 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 08bfe86c2..e0f06d6bc 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -8,6 +8,7 @@ import ( "strconv" "time" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" @@ -66,8 +67,15 @@ func (t *TaskApplication) CheckTaskName(ctx context.Context, req *task.CheckTask } else if req.GetWorkspaceID() <= 0 { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } + appID := session.AppIDInCtxOrEmpty(ctx) + var action string + if appID == 717152 { + action = rpc.AuthActionTraceTaskList + } else { + action = rpc.AuthActionTaskReadable + } if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskList, + action, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { return nil, err } @@ -88,8 +96,15 @@ func (t *TaskApplication) CreateTask(ctx context.Context, req *task.CreateTaskRe if err := t.validateCreateTaskReq(ctx, req); err != nil { return resp, err } + appID := session.AppIDInCtxOrEmpty(ctx) + var action string + if appID == 717152 { + action = rpc.AuthActionTraceTaskCreate + } else { + action = rpc.AuthActionTaskWritable + } if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskCreate, + action, strconv.FormatInt(req.GetTask().GetWorkspaceID(), 10)); err != nil { return resp, err } @@ -130,8 +145,15 @@ func (t *TaskApplication) UpdateTask(ctx context.Context, req *task.UpdateTaskRe } else if req.GetWorkspaceID() <= 0 { return nil, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } + appID := session.AppIDInCtxOrEmpty(ctx) + var action string + if appID == 717152 { + action = rpc.AuthActionTraceTaskEdit + } else { + action = rpc.AuthActionTaskWritable + } if err := t.authSvc.CheckTaskPermission(ctx, - rpc.AuthActionTraceTaskEdit, + action, strconv.FormatInt(req.GetWorkspaceID(), 10), strconv.FormatInt(req.GetTaskID(), 10)); err != nil { return nil, err @@ -157,8 +179,15 @@ func (t *TaskApplication) ListTasks(ctx context.Context, req *task.ListTasksRequ } else if req.GetWorkspaceID() <= 0 { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } + appID := session.AppIDInCtxOrEmpty(ctx) + var action string + if appID == 717152 { + action = rpc.AuthActionTraceTaskList + } else { + action = rpc.AuthActionTaskReadable + } if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskList, + action, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { return resp, err } @@ -187,8 +216,15 @@ func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) } else if req.GetWorkspaceID() <= 0 { return resp, errorx.NewByCode(obErrorx.CommercialCommonInvalidParamCodeCode, errorx.WithExtraMsg("invalid workspace_id")) } + appID := session.AppIDInCtxOrEmpty(ctx) + var action string + if appID == 717152 { + action = rpc.AuthActionTraceTaskList + } else { + action = rpc.AuthActionTaskReadable + } if err := t.authSvc.CheckWorkspacePermission(ctx, - rpc.AuthActionTraceTaskList, + action, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { return resp, err } diff --git a/backend/modules/observability/domain/component/rpc/auth.go b/backend/modules/observability/domain/component/rpc/auth.go index 9791738ea..f1cdbc820 100644 --- a/backend/modules/observability/domain/component/rpc/auth.go +++ b/backend/modules/observability/domain/component/rpc/auth.go @@ -18,6 +18,8 @@ const ( AuthActionTraceTaskCreate = "createLoopTask" AuthActionTraceTaskList = "listLoopTask" AuthActionTraceTaskEdit = "edit" + AuthActionTaskWritable = "task_writable" + AuthActionTaskReadable = "task_readable" ) //go:generate mockgen -destination=mocks/auth_provider.go -package=mocks . IAuthProvider From e279880849a6ce2912259a04fda4a6097a36ea85 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sun, 12 Oct 2025 23:33:39 +0800 Subject: [PATCH 442/462] fix permission --- .../modules/observability/infra/rpc/auth/auth.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/infra/rpc/auth/auth.go b/backend/modules/observability/infra/rpc/auth/auth.go index 3fe7b1435..7c1d556e8 100644 --- a/backend/modules/observability/infra/rpc/auth/auth.go +++ b/backend/modules/observability/infra/rpc/auth/auth.go @@ -7,6 +7,8 @@ import ( "context" "strconv" + "github.com/bytedance/gg/gptr" + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/auth" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/auth/authservice" authentity "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/foundation/domain/auth" @@ -122,19 +124,22 @@ func (a *AuthProviderImpl) CheckQueryPermission(ctx context.Context, workspaceId } func (a *AuthProviderImpl) CheckTaskPermission(ctx context.Context, action, workspaceId, taskId string) error { + userID := session.UserIDInCtxOrEmpty(ctx) authInfos := make([]*authentity.SubjectActionObjects, 0) authInfos = append(authInfos, &authentity.SubjectActionObjects{ Subject: &authentity.AuthPrincipal{ - AuthPrincipalType: ptr.Of(authentity.AuthPrincipalType_CozeIdentifier), - AuthCozeIdentifier: &authentity.AuthCozeIdentifier{ - IdentityTicket: nil, + AuthPrincipalType: ptr.Of(authentity.AuthPrincipalType_User), + AuthUser: &authentity.AuthUser{ + UserID: gptr.Of(userID), }, }, Action: ptr.Of(action), Objects: []*authentity.AuthEntity{ { - ID: ptr.Of(taskId), - EntityType: ptr.Of(authentity.AuthEntityTypeTraceTask), + ID: ptr.Of(taskId), + EntityType: ptr.Of(authentity.AuthEntityTypeTraceTask), + SpaceID: gptr.Of(workspaceId), + OwnerUserID: gptr.Of(userID), }, }, }) From 5e5872c29313d57023dd165e9cc4ea9bdfbd1085 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Sun, 12 Oct 2025 23:52:27 +0800 Subject: [PATCH 443/462] add permission --- .../modules/observability/application/task.go | 8 +-- .../domain/component/rpc/auth.go | 1 + .../observability/infra/rpc/auth/auth.go | 49 +++++++++++++++++++ 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index e0f06d6bc..2254372f3 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -74,7 +74,7 @@ func (t *TaskApplication) CheckTaskName(ctx context.Context, req *task.CheckTask } else { action = rpc.AuthActionTaskReadable } - if err := t.authSvc.CheckWorkspacePermission(ctx, + if err := t.authSvc.CheckTaskSpacePermission(ctx, action, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { return nil, err @@ -103,7 +103,7 @@ func (t *TaskApplication) CreateTask(ctx context.Context, req *task.CreateTaskRe } else { action = rpc.AuthActionTaskWritable } - if err := t.authSvc.CheckWorkspacePermission(ctx, + if err := t.authSvc.CheckTaskSpacePermission(ctx, action, strconv.FormatInt(req.GetTask().GetWorkspaceID(), 10)); err != nil { return resp, err @@ -186,7 +186,7 @@ func (t *TaskApplication) ListTasks(ctx context.Context, req *task.ListTasksRequ } else { action = rpc.AuthActionTaskReadable } - if err := t.authSvc.CheckWorkspacePermission(ctx, + if err := t.authSvc.CheckTaskSpacePermission(ctx, action, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { return resp, err @@ -223,7 +223,7 @@ func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) } else { action = rpc.AuthActionTaskReadable } - if err := t.authSvc.CheckWorkspacePermission(ctx, + if err := t.authSvc.CheckTaskSpacePermission(ctx, action, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { return resp, err diff --git a/backend/modules/observability/domain/component/rpc/auth.go b/backend/modules/observability/domain/component/rpc/auth.go index f1cdbc820..1dcdd308d 100644 --- a/backend/modules/observability/domain/component/rpc/auth.go +++ b/backend/modules/observability/domain/component/rpc/auth.go @@ -29,4 +29,5 @@ type IAuthProvider interface { CheckIngestPermission(ctx context.Context, workspaceId string) error CheckQueryPermission(ctx context.Context, workspaceId, platformType string) error CheckTaskPermission(ctx context.Context, action, workspaceId, taskId string) error + CheckTaskSpacePermission(ctx context.Context, action, workspaceId string) error } diff --git a/backend/modules/observability/infra/rpc/auth/auth.go b/backend/modules/observability/infra/rpc/auth/auth.go index 7c1d556e8..fce0447c2 100644 --- a/backend/modules/observability/infra/rpc/auth/auth.go +++ b/backend/modules/observability/infra/rpc/auth/auth.go @@ -172,6 +172,55 @@ func (a *AuthProviderImpl) CheckTaskPermission(ctx context.Context, action, work return nil } +func (a *AuthProviderImpl) CheckTaskSpacePermission(ctx context.Context, action, workspaceId string) error { + userID := session.UserIDInCtxOrEmpty(ctx) + authInfos := make([]*authentity.SubjectActionObjects, 0) + authInfos = append(authInfos, &authentity.SubjectActionObjects{ + Subject: &authentity.AuthPrincipal{ + AuthPrincipalType: ptr.Of(authentity.AuthPrincipalType_User), + AuthUser: &authentity.AuthUser{ + UserID: gptr.Of(userID), + }, + }, + Action: ptr.Of(action), + Objects: []*authentity.AuthEntity{ + { + ID: ptr.Of(workspaceId), + EntityType: ptr.Of(authentity.AuthEntityTypeSpace), + SpaceID: gptr.Of(workspaceId), + OwnerUserID: gptr.Of(userID), + }, + }, + }) + + // 将workspaceId字符串转换为int64 + spaceID, err := strconv.ParseInt(workspaceId, 10, 64) + if err != nil { + return errorx.NewByCode(obErrorx.CommonInternalErrorCode) + } + + req := &auth.MCheckPermissionRequest{ + Auths: authInfos, + SpaceID: ptr.Of(spaceID), + } + resp, err := a.cli.MCheckPermission(ctx, req) + if err != nil { + return errorx.WrapByCode(err, obErrorx.CommercialCommonRPCErrorCodeCode) + } else if resp == nil { + logs.CtxWarn(ctx, "MCheckPermission returned nil response") + return errorx.NewByCode(obErrorx.CommercialCommonRPCErrorCodeCode) + } else if resp.BaseResp != nil && resp.BaseResp.StatusCode != 0 { + logs.CtxWarn(ctx, "MCheckPermission returned non-zero status code %d", resp.BaseResp.StatusCode) + return errorx.NewByCode(obErrorx.CommercialCommonRPCErrorCodeCode) + } + for _, r := range resp.AuthRes { + if r != nil && !r.GetIsAllowed() { + return errorx.NewByCode(obErrorx.CommonNoPermissionCode) + } + } + return nil +} + func NewAuthProvider(cli authservice.Client) rpc.IAuthProvider { return &AuthProviderImpl{ cli: cli, From 9205188edf7cef8957eb31c40e6d029b796b566f Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 00:10:44 +0800 Subject: [PATCH 444/462] fix permission --- .../modules/observability/application/task.go | 8 +- .../domain/component/rpc/auth.go | 2 +- .../observability/infra/rpc/auth/auth.go | 96 +++++++++---------- 3 files changed, 53 insertions(+), 53 deletions(-) diff --git a/backend/modules/observability/application/task.go b/backend/modules/observability/application/task.go index 2254372f3..e0f06d6bc 100644 --- a/backend/modules/observability/application/task.go +++ b/backend/modules/observability/application/task.go @@ -74,7 +74,7 @@ func (t *TaskApplication) CheckTaskName(ctx context.Context, req *task.CheckTask } else { action = rpc.AuthActionTaskReadable } - if err := t.authSvc.CheckTaskSpacePermission(ctx, + if err := t.authSvc.CheckWorkspacePermission(ctx, action, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { return nil, err @@ -103,7 +103,7 @@ func (t *TaskApplication) CreateTask(ctx context.Context, req *task.CreateTaskRe } else { action = rpc.AuthActionTaskWritable } - if err := t.authSvc.CheckTaskSpacePermission(ctx, + if err := t.authSvc.CheckWorkspacePermission(ctx, action, strconv.FormatInt(req.GetTask().GetWorkspaceID(), 10)); err != nil { return resp, err @@ -186,7 +186,7 @@ func (t *TaskApplication) ListTasks(ctx context.Context, req *task.ListTasksRequ } else { action = rpc.AuthActionTaskReadable } - if err := t.authSvc.CheckTaskSpacePermission(ctx, + if err := t.authSvc.CheckWorkspacePermission(ctx, action, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { return resp, err @@ -223,7 +223,7 @@ func (t *TaskApplication) GetTask(ctx context.Context, req *task.GetTaskRequest) } else { action = rpc.AuthActionTaskReadable } - if err := t.authSvc.CheckTaskSpacePermission(ctx, + if err := t.authSvc.CheckWorkspacePermission(ctx, action, strconv.FormatInt(req.GetWorkspaceID(), 10)); err != nil { return resp, err diff --git a/backend/modules/observability/domain/component/rpc/auth.go b/backend/modules/observability/domain/component/rpc/auth.go index 1dcdd308d..8e775dc0e 100644 --- a/backend/modules/observability/domain/component/rpc/auth.go +++ b/backend/modules/observability/domain/component/rpc/auth.go @@ -29,5 +29,5 @@ type IAuthProvider interface { CheckIngestPermission(ctx context.Context, workspaceId string) error CheckQueryPermission(ctx context.Context, workspaceId, platformType string) error CheckTaskPermission(ctx context.Context, action, workspaceId, taskId string) error - CheckTaskSpacePermission(ctx context.Context, action, workspaceId string) error + //CheckTaskSpacePermission(ctx context.Context, action, workspaceId string) error } diff --git a/backend/modules/observability/infra/rpc/auth/auth.go b/backend/modules/observability/infra/rpc/auth/auth.go index fce0447c2..d935020a1 100644 --- a/backend/modules/observability/infra/rpc/auth/auth.go +++ b/backend/modules/observability/infra/rpc/auth/auth.go @@ -172,54 +172,54 @@ func (a *AuthProviderImpl) CheckTaskPermission(ctx context.Context, action, work return nil } -func (a *AuthProviderImpl) CheckTaskSpacePermission(ctx context.Context, action, workspaceId string) error { - userID := session.UserIDInCtxOrEmpty(ctx) - authInfos := make([]*authentity.SubjectActionObjects, 0) - authInfos = append(authInfos, &authentity.SubjectActionObjects{ - Subject: &authentity.AuthPrincipal{ - AuthPrincipalType: ptr.Of(authentity.AuthPrincipalType_User), - AuthUser: &authentity.AuthUser{ - UserID: gptr.Of(userID), - }, - }, - Action: ptr.Of(action), - Objects: []*authentity.AuthEntity{ - { - ID: ptr.Of(workspaceId), - EntityType: ptr.Of(authentity.AuthEntityTypeSpace), - SpaceID: gptr.Of(workspaceId), - OwnerUserID: gptr.Of(userID), - }, - }, - }) - - // 将workspaceId字符串转换为int64 - spaceID, err := strconv.ParseInt(workspaceId, 10, 64) - if err != nil { - return errorx.NewByCode(obErrorx.CommonInternalErrorCode) - } - - req := &auth.MCheckPermissionRequest{ - Auths: authInfos, - SpaceID: ptr.Of(spaceID), - } - resp, err := a.cli.MCheckPermission(ctx, req) - if err != nil { - return errorx.WrapByCode(err, obErrorx.CommercialCommonRPCErrorCodeCode) - } else if resp == nil { - logs.CtxWarn(ctx, "MCheckPermission returned nil response") - return errorx.NewByCode(obErrorx.CommercialCommonRPCErrorCodeCode) - } else if resp.BaseResp != nil && resp.BaseResp.StatusCode != 0 { - logs.CtxWarn(ctx, "MCheckPermission returned non-zero status code %d", resp.BaseResp.StatusCode) - return errorx.NewByCode(obErrorx.CommercialCommonRPCErrorCodeCode) - } - for _, r := range resp.AuthRes { - if r != nil && !r.GetIsAllowed() { - return errorx.NewByCode(obErrorx.CommonNoPermissionCode) - } - } - return nil -} +//func (a *AuthProviderImpl) CheckTaskSpacePermission(ctx context.Context, action, workspaceId string) error { +// userID := session.UserIDInCtxOrEmpty(ctx) +// authInfos := make([]*authentity.SubjectActionObjects, 0) +// authInfos = append(authInfos, &authentity.SubjectActionObjects{ +// Subject: &authentity.AuthPrincipal{ +// AuthPrincipalType: ptr.Of(authentity.AuthPrincipalType_User), +// AuthUser: &authentity.AuthUser{ +// UserID: gptr.Of(userID), +// }, +// }, +// Action: ptr.Of(action), +// Objects: []*authentity.AuthEntity{ +// { +// ID: ptr.Of(workspaceId), +// EntityType: ptr.Of(authentity.AuthEntityTypeSpace), +// SpaceID: gptr.Of(workspaceId), +// OwnerUserID: gptr.Of(userID), +// }, +// }, +// }) +// +// // 将workspaceId字符串转换为int64 +// spaceID, err := strconv.ParseInt(workspaceId, 10, 64) +// if err != nil { +// return errorx.NewByCode(obErrorx.CommonInternalErrorCode) +// } +// +// req := &auth.MCheckPermissionRequest{ +// Auths: authInfos, +// SpaceID: ptr.Of(spaceID), +// } +// resp, err := a.cli.MCheckPermission(ctx, req) +// if err != nil { +// return errorx.WrapByCode(err, obErrorx.CommercialCommonRPCErrorCodeCode) +// } else if resp == nil { +// logs.CtxWarn(ctx, "MCheckPermission returned nil response") +// return errorx.NewByCode(obErrorx.CommercialCommonRPCErrorCodeCode) +// } else if resp.BaseResp != nil && resp.BaseResp.StatusCode != 0 { +// logs.CtxWarn(ctx, "MCheckPermission returned non-zero status code %d", resp.BaseResp.StatusCode) +// return errorx.NewByCode(obErrorx.CommercialCommonRPCErrorCodeCode) +// } +// for _, r := range resp.AuthRes { +// if r != nil && !r.GetIsAllowed() { +// return errorx.NewByCode(obErrorx.CommonNoPermissionCode) +// } +// } +// return nil +//} func NewAuthProvider(cli authservice.Client) rpc.IAuthProvider { return &AuthProviderImpl{ From 8b3f1e9462bc24d5e1946c4781f99000abb2a7fb Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 01:10:09 +0800 Subject: [PATCH 445/462] fix --- .../domain/component/rpc/auth.go | 1 - .../observability/infra/rpc/auth/auth.go | 49 ------------------- 2 files changed, 50 deletions(-) diff --git a/backend/modules/observability/domain/component/rpc/auth.go b/backend/modules/observability/domain/component/rpc/auth.go index 8e775dc0e..f1cdbc820 100644 --- a/backend/modules/observability/domain/component/rpc/auth.go +++ b/backend/modules/observability/domain/component/rpc/auth.go @@ -29,5 +29,4 @@ type IAuthProvider interface { CheckIngestPermission(ctx context.Context, workspaceId string) error CheckQueryPermission(ctx context.Context, workspaceId, platformType string) error CheckTaskPermission(ctx context.Context, action, workspaceId, taskId string) error - //CheckTaskSpacePermission(ctx context.Context, action, workspaceId string) error } diff --git a/backend/modules/observability/infra/rpc/auth/auth.go b/backend/modules/observability/infra/rpc/auth/auth.go index d935020a1..7c1d556e8 100644 --- a/backend/modules/observability/infra/rpc/auth/auth.go +++ b/backend/modules/observability/infra/rpc/auth/auth.go @@ -172,55 +172,6 @@ func (a *AuthProviderImpl) CheckTaskPermission(ctx context.Context, action, work return nil } -//func (a *AuthProviderImpl) CheckTaskSpacePermission(ctx context.Context, action, workspaceId string) error { -// userID := session.UserIDInCtxOrEmpty(ctx) -// authInfos := make([]*authentity.SubjectActionObjects, 0) -// authInfos = append(authInfos, &authentity.SubjectActionObjects{ -// Subject: &authentity.AuthPrincipal{ -// AuthPrincipalType: ptr.Of(authentity.AuthPrincipalType_User), -// AuthUser: &authentity.AuthUser{ -// UserID: gptr.Of(userID), -// }, -// }, -// Action: ptr.Of(action), -// Objects: []*authentity.AuthEntity{ -// { -// ID: ptr.Of(workspaceId), -// EntityType: ptr.Of(authentity.AuthEntityTypeSpace), -// SpaceID: gptr.Of(workspaceId), -// OwnerUserID: gptr.Of(userID), -// }, -// }, -// }) -// -// // 将workspaceId字符串转换为int64 -// spaceID, err := strconv.ParseInt(workspaceId, 10, 64) -// if err != nil { -// return errorx.NewByCode(obErrorx.CommonInternalErrorCode) -// } -// -// req := &auth.MCheckPermissionRequest{ -// Auths: authInfos, -// SpaceID: ptr.Of(spaceID), -// } -// resp, err := a.cli.MCheckPermission(ctx, req) -// if err != nil { -// return errorx.WrapByCode(err, obErrorx.CommercialCommonRPCErrorCodeCode) -// } else if resp == nil { -// logs.CtxWarn(ctx, "MCheckPermission returned nil response") -// return errorx.NewByCode(obErrorx.CommercialCommonRPCErrorCodeCode) -// } else if resp.BaseResp != nil && resp.BaseResp.StatusCode != 0 { -// logs.CtxWarn(ctx, "MCheckPermission returned non-zero status code %d", resp.BaseResp.StatusCode) -// return errorx.NewByCode(obErrorx.CommercialCommonRPCErrorCodeCode) -// } -// for _, r := range resp.AuthRes { -// if r != nil && !r.GetIsAllowed() { -// return errorx.NewByCode(obErrorx.CommonNoPermissionCode) -// } -// } -// return nil -//} - func NewAuthProvider(cli authservice.Client) rpc.IAuthProvider { return &AuthProviderImpl{ cli: cli, From d21d6a229d83be6d78f2d5514b4ad8b839aa4a42 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 03:22:58 +0800 Subject: [PATCH 446/462] NA (LogID: 202510130112151921680310966149939) Co-Authored-By: Coda --- .../observability/application/task_test.go | 10 ++ .../tracehub/mocks/trace_hub_service.go | 92 +++++++++++++++++++ .../service/taskexe/tracehub/trace_hub.go | 4 +- 3 files changed, 105 insertions(+), 1 deletion(-) create mode 100755 backend/modules/observability/application/task_test.go create mode 100644 backend/modules/observability/domain/task/service/taskexe/tracehub/mocks/trace_hub_service.go diff --git a/backend/modules/observability/application/task_test.go b/backend/modules/observability/application/task_test.go new file mode 100755 index 000000000..f187e6ec2 --- /dev/null +++ b/backend/modules/observability/application/task_test.go @@ -0,0 +1,10 @@ +package application + +import ( + "context" + "testing" +) + +func TestTaskApplication_CheckTaskName(t *testing.T) { + t.Parallel() +} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/mocks/trace_hub_service.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/mocks/trace_hub_service.go new file mode 100644 index 000000000..c8f7abb5d --- /dev/null +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/mocks/trace_hub_service.go @@ -0,0 +1,92 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub (interfaces: ITraceHubService) + +// Package mocks is a generated GoMock package. +package mocks + +import ( + context "context" + reflect "reflect" + + entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + gomock "github.com/golang/mock/gomock" +) + +// MockITraceHubService is a mock of ITraceHubService interface. +type MockITraceHubService struct { + ctrl *gomock.Controller + recorder *MockITraceHubServiceMockRecorder +} + +// MockITraceHubServiceMockRecorder is the mock recorder for MockITraceHubService. +type MockITraceHubServiceMockRecorder struct { + mock *MockITraceHubService +} + +// NewMockITraceHubService creates a new mock instance. +func NewMockITraceHubService(ctrl *gomock.Controller) *MockITraceHubService { + mock := &MockITraceHubService{ctrl: ctrl} + mock.recorder = &MockITraceHubServiceMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockITraceHubService) EXPECT() *MockITraceHubServiceMockRecorder { + return m.recorder +} + +// BackFill mocks base method. +func (m *MockITraceHubService) BackFill(arg0 context.Context, arg1 *entity.BackFillEvent) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "BackFill", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// BackFill indicates an expected call of BackFill. +func (mr *MockITraceHubServiceMockRecorder) BackFill(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BackFill", reflect.TypeOf((*MockITraceHubService)(nil).BackFill), arg0, arg1) +} + +// CallBack mocks base method. +func (m *MockITraceHubService) CallBack(arg0 context.Context, arg1 *entity.AutoEvalEvent) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CallBack", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// CallBack indicates an expected call of CallBack. +func (mr *MockITraceHubServiceMockRecorder) CallBack(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CallBack", reflect.TypeOf((*MockITraceHubService)(nil).CallBack), arg0, arg1) +} + +// Correction mocks base method. +func (m *MockITraceHubService) Correction(arg0 context.Context, arg1 *entity.CorrectionEvent) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Correction", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// Correction indicates an expected call of Correction. +func (mr *MockITraceHubServiceMockRecorder) Correction(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Correction", reflect.TypeOf((*MockITraceHubService)(nil).Correction), arg0, arg1) +} + +// SpanTrigger mocks base method. +func (m *MockITraceHubService) SpanTrigger(arg0 context.Context, arg1 *entity.RawSpan) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SpanTrigger", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// SpanTrigger indicates an expected call of SpanTrigger. +func (mr *MockITraceHubServiceMockRecorder) SpanTrigger(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SpanTrigger", reflect.TypeOf((*MockITraceHubService)(nil).SpanTrigger), arg0, arg1) +} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index bbe8e0cc1..d5fc886b8 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -19,6 +19,8 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" ) +//go:generate mockgen -destination=mocks/trace_hub_service.go -package=mocks . ITraceHubService + type ITraceHubService interface { SpanTrigger(ctx context.Context, event *entity.RawSpan) error CallBack(ctx context.Context, event *entity.AutoEvalEvent) error @@ -94,4 +96,4 @@ const TagKeyResult = "tag_key" func (h *TraceHubServiceImpl) Close() { close(h.stopChan) -} +} \ No newline at end of file From 87429b87b4d75e6354ab9d5642fa1bc148d470b1 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 04:30:38 +0800 Subject: [PATCH 447/462] feat: [Coda] add tests for observability task application (LogID: 202510130112151921680310966149939) Co-Authored-By: Coda --- .../observability/application/task_test.go | 814 +++++++++++++++++- .../domain/component/config/mocks/config.go | 140 +-- .../component/rpc/mocks/auth_provider.go | 47 +- .../rpc/mocks/dataset_provider_mock.go | 15 + .../domain/component/rpc/mocks/evaluator.go | 38 +- .../domain/component/rpc/mocks/file.go | 1 - .../domain/component/rpc/mocks/tag.go | 1 - .../domain/component/rpc/mocks/user.go | 9 +- .../domain/task/repo/mocks/Task.go | 377 ++++++++ .../domain/task/service/mocks/task_service.go | 115 +++ .../tracehub/mocks/trace_hub_service.go | 15 +- .../domain/trace/repo/mocks/trace.go | 16 +- .../domain/trace/repo/mocks/view.go | 41 +- .../domain/trace/service/mocks/ingestion.go | 17 +- .../trace/service/mocks/span_processor.go | 1 - .../trace/service/mocks/trace_service.go | 158 ++-- 16 files changed, 1616 insertions(+), 189 deletions(-) create mode 100644 backend/modules/observability/domain/task/repo/mocks/Task.go create mode 100644 backend/modules/observability/domain/task/service/mocks/task_service.go diff --git a/backend/modules/observability/application/task_test.go b/backend/modules/observability/application/task_test.go index f187e6ec2..0f1b51851 100755 --- a/backend/modules/observability/application/task_test.go +++ b/backend/modules/observability/application/task_test.go @@ -1,10 +1,818 @@ package application import ( - "context" - "testing" + "context" + "errors" + "strconv" + "testing" + "time" + + "github.com/bytedance/gg/gptr" + "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" + + "github.com/coze-dev/coze-loop/backend/infra/middleware/session" + taskdto "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/task" + taskapi "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/task" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" + rpcmock "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc/mocks" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + svc "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" + svcmock "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/mocks" + tracehubmock "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub/mocks" + obErrorx "github.com/coze-dev/coze-loop/backend/modules/observability/pkg/errno" + "github.com/coze-dev/coze-loop/backend/pkg/errorx" ) +func ctxWithAppID(appID int32) context.Context { + return session.WithCtxUser(context.Background(), &session.User{ID: "uid", AppID: appID}) +} + +func assertErrorCode(t *testing.T, err error, code int32) { + t.Helper() + statusErr, ok := errorx.FromStatusError(err) + if !assert.True(t, ok, "error should be StatusError") { + return + } + assert.Equal(t, code, statusErr.Code()) +} + func TestTaskApplication_CheckTaskName(t *testing.T) { - t.Parallel() + t.Parallel() + tests := []struct { + name string + fieldsBuilder func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) + ctx context.Context + req *taskapi.CheckTaskNameRequest + expectResp *taskapi.CheckTaskNameResponse + expectErr error + expectErrCode int32 + }{ + { + name: "nil request", + ctx: context.Background(), + req: nil, + expectResp: taskapi.NewCheckTaskNameResponse(), + expectErrCode: obErrorx.CommercialCommonInvalidParamCodeCode, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + return nil, nil + }, + }, + { + name: "invalid workspace", + ctx: context.Background(), + req: &taskapi.CheckTaskNameRequest{ + WorkspaceID: 0, + }, + expectResp: taskapi.NewCheckTaskNameResponse(), + expectErrCode: obErrorx.CommercialCommonInvalidParamCodeCode, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + return nil, nil + }, + }, + { + name: "auth error with trace app id", + ctx: ctxWithAppID(717152), + req: &taskapi.CheckTaskNameRequest{ + WorkspaceID: 101, + Name: "task", + }, + expectErr: errors.New("auth error"), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTraceTaskList, strconv.FormatInt(101, 10)).Return(errors.New("auth error")) + return nil, auth + }, + }, + { + name: "service error", + ctx: context.Background(), + req: &taskapi.CheckTaskNameRequest{ + WorkspaceID: 201, + Name: "dup", + }, + expectResp: taskapi.NewCheckTaskNameResponse(), + expectErr: errors.New("service error"), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTaskReadable, strconv.FormatInt(201, 10)).Return(nil) + s := svcmock.NewMockITaskService(ctrl) + s.EXPECT().CheckTaskName(gomock.Any(), &svc.CheckTaskNameReq{WorkspaceID: 201, Name: "dup"}).Return(nil, errors.New("service error")) + return s, auth + }, + }, + { + name: "pass true", + ctx: context.Background(), + req: &taskapi.CheckTaskNameRequest{ + WorkspaceID: 301, + Name: "ok", + }, + expectResp: &taskapi.CheckTaskNameResponse{Pass: gptr.Of(true)}, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTaskReadable, strconv.FormatInt(301, 10)).Return(nil) + s := svcmock.NewMockITaskService(ctrl) + s.EXPECT().CheckTaskName(gomock.Any(), &svc.CheckTaskNameReq{WorkspaceID: 301, Name: "ok"}).Return(&svc.CheckTaskNameResp{Pass: gptr.Of(true)}, nil) + return s, auth + }, + }, + { + name: "pass false with trace app id", + ctx: ctxWithAppID(717152), + req: &taskapi.CheckTaskNameRequest{ + WorkspaceID: 401, + Name: "dup", + }, + expectResp: &taskapi.CheckTaskNameResponse{Pass: gptr.Of(false)}, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTraceTaskList, strconv.FormatInt(401, 10)).Return(nil) + s := svcmock.NewMockITaskService(ctrl) + s.EXPECT().CheckTaskName(gomock.Any(), &svc.CheckTaskNameReq{WorkspaceID: 401, Name: "dup"}).Return(&svc.CheckTaskNameResp{Pass: gptr.Of(false)}, nil) + return s, auth + }, + }, + } + + for _, tt := range tests { + caseItem := tt + t.Run(caseItem.name, func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + taskSvc, authSvc := caseItem.fieldsBuilder(ctrl) + app := &TaskApplication{ + taskSvc: taskSvc, + authSvc: authSvc, + } + resp, err := app.CheckTaskName(caseItem.ctx, caseItem.req) + + if caseItem.expectErr != nil { + assert.EqualError(t, err, caseItem.expectErr.Error()) + } else if caseItem.expectErrCode != 0 { + assert.Error(t, err) + assertErrorCode(t, err, caseItem.expectErrCode) + } else { + assert.NoError(t, err) + } + + if caseItem.expectResp != nil { + assert.Equal(t, caseItem.expectResp, resp) + } else { + assert.Nil(t, resp) + } + }) + } +} + +func TestTaskApplication_CreateTask(t *testing.T) { + t.Parallel() + + newValidTask := func() *taskdto.Task { + return &taskdto.Task{ + Name: "task", + WorkspaceID: gptr.Of(int64(123)), + TaskType: taskdto.TaskTypeAutoEval, + Rule: &taskdto.Rule{ + EffectiveTime: &taskdto.EffectiveTime{ + StartAt: gptr.Of(time.Now().Add(time.Hour).UnixMilli()), + EndAt: gptr.Of(time.Now().Add(2 * time.Hour).UnixMilli()), + }, + }, + } + } + + taskForAuth := newValidTask() + taskForSvcErr := newValidTask() + taskForSuccess := newValidTask() + + tests := []struct { + name string + ctx context.Context + req *taskapi.CreateTaskRequest + fieldsBuilder func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) + expectResp *taskapi.CreateTaskResponse + expectErr error + expectErrCode int32 + }{ + { + name: "nil request", + ctx: context.Background(), + req: nil, + expectResp: taskapi.NewCreateTaskResponse(), + expectErrCode: obErrorx.CommercialCommonInvalidParamCodeCode, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + return nil, nil + }, + }, + { + name: "task nil", + ctx: context.Background(), + req: &taskapi.CreateTaskRequest{ + Task: nil, + }, + expectResp: taskapi.NewCreateTaskResponse(), + expectErrCode: obErrorx.CommercialCommonInvalidParamCodeCode, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + return nil, nil + }, + }, + { + name: "auth error", + ctx: ctxWithAppID(1), + req: &taskapi.CreateTaskRequest{Task: taskForAuth}, + expectResp: taskapi.NewCreateTaskResponse(), + expectErr: errors.New("auth error"), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTaskWritable, strconv.FormatInt(123, 10)).Return(errors.New("auth error")) + return nil, auth + }, + }, + { + name: "service error", + ctx: context.Background(), + req: &taskapi.CreateTaskRequest{Task: taskForSvcErr}, + expectResp: taskapi.NewCreateTaskResponse(), + expectErr: errors.New("svc error"), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTaskWritable, strconv.FormatInt(123, 10)).Return(nil) + svcMock := svcmock.NewMockITaskService(ctrl) + svcMock.EXPECT().CreateTask(gomock.Any(), &svc.CreateTaskReq{Task: taskForSvcErr}).Return(nil, errors.New("svc error")) + return svcMock, auth + }, + }, + { + name: "success with trace app", + ctx: ctxWithAppID(717152), + req: &taskapi.CreateTaskRequest{Task: taskForSuccess}, + expectResp: &taskapi.CreateTaskResponse{TaskID: gptr.Of(int64(1000))}, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTraceTaskCreate, strconv.FormatInt(123, 10)).Return(nil) + svcMock := svcmock.NewMockITaskService(ctrl) + svcMock.EXPECT().CreateTask(gomock.Any(), &svc.CreateTaskReq{Task: taskForSuccess}).Return(&svc.CreateTaskResp{TaskID: gptr.Of(int64(1000))}, nil) + return svcMock, auth + }, + }, + } + + for _, tt := range tests { + caseItem := tt + t.Run(caseItem.name, func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + taskSvc, authSvc := caseItem.fieldsBuilder(ctrl) + app := &TaskApplication{ + taskSvc: taskSvc, + authSvc: authSvc, + } + + resp, err := app.CreateTask(caseItem.ctx, caseItem.req) + + if caseItem.expectErr != nil { + assert.EqualError(t, err, caseItem.expectErr.Error()) + } else if caseItem.expectErrCode != 0 { + assert.Error(t, err) + assertErrorCode(t, err, caseItem.expectErrCode) + } else { + assert.NoError(t, err) + } + + if caseItem.expectResp != nil { + assert.Equal(t, caseItem.expectResp, resp) + } else { + assert.Nil(t, resp) + } + }) + } +} + +func TestTaskApplication_UpdateTask(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + ctx context.Context + req *taskapi.UpdateTaskRequest + fieldsBuilder func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) + expectResp *taskapi.UpdateTaskResponse + expectErr error + expectErrCode int32 + }{ + { + name: "nil request", + ctx: context.Background(), + req: nil, + expectErrCode: obErrorx.CommercialCommonInvalidParamCodeCode, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + return nil, nil + }, + }, + { + name: "invalid workspace", + ctx: context.Background(), + req: &taskapi.UpdateTaskRequest{ + TaskID: 1, + WorkspaceID: 0, + }, + expectErrCode: obErrorx.CommercialCommonInvalidParamCodeCode, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + return nil, nil + }, + }, + { + name: "auth error", + ctx: ctxWithAppID(717152), + req: &taskapi.UpdateTaskRequest{TaskID: 11, WorkspaceID: 22}, + expectErr: errors.New("auth error"), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckTaskPermission(gomock.Any(), rpc.AuthActionTraceTaskEdit, strconv.FormatInt(22, 10), strconv.FormatInt(11, 10)).Return(errors.New("auth error")) + return nil, auth + }, + }, + { + name: "service error", + ctx: context.Background(), + req: &taskapi.UpdateTaskRequest{TaskID: 33, WorkspaceID: 44}, + expectResp: taskapi.NewUpdateTaskResponse(), + expectErr: errors.New("svc error"), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckTaskPermission(gomock.Any(), rpc.AuthActionTaskWritable, strconv.FormatInt(44, 10), strconv.FormatInt(33, 10)).Return(nil) + s := svcmock.NewMockITaskService(ctrl) + s.EXPECT().UpdateTask(gomock.Any(), &svc.UpdateTaskReq{ + TaskID: 33, + WorkspaceID: 44, + TaskStatus: nil, + Description: nil, + }).Return(errors.New("svc error")) + return s, auth + }, + }, + { + name: "success", + ctx: context.Background(), + req: &taskapi.UpdateTaskRequest{TaskID: 55, WorkspaceID: 66}, + expectResp: taskapi.NewUpdateTaskResponse(), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckTaskPermission(gomock.Any(), rpc.AuthActionTaskWritable, strconv.FormatInt(66, 10), strconv.FormatInt(55, 10)).Return(nil) + s := svcmock.NewMockITaskService(ctrl) + s.EXPECT().UpdateTask(gomock.Any(), &svc.UpdateTaskReq{ + TaskID: 55, + WorkspaceID: 66, + TaskStatus: nil, + Description: nil, + }).Return(nil) + return s, auth + }, + }, + } + + for _, tt := range tests { + caseItem := tt + t.Run(caseItem.name, func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + taskSvc, authSvc := caseItem.fieldsBuilder(ctrl) + app := &TaskApplication{ + taskSvc: taskSvc, + authSvc: authSvc, + } + resp, err := app.UpdateTask(caseItem.ctx, caseItem.req) + + if caseItem.expectErr != nil { + assert.EqualError(t, err, caseItem.expectErr.Error()) + } else if caseItem.expectErrCode != 0 { + assert.Error(t, err) + assertErrorCode(t, err, caseItem.expectErrCode) + } else { + assert.NoError(t, err) + } + + if caseItem.expectResp != nil { + assert.Equal(t, caseItem.expectResp, resp) + } else { + assert.Nil(t, resp) + } + }) + } +} + +func TestTaskApplication_ListTasks(t *testing.T) { + t.Parallel() + + taskListResp := &svc.ListTasksResp{ + Tasks: []*taskdto.Task{{Name: "task1"}}, + Total: gptr.Of(int64(1)), + } + tests := []struct { + name string + ctx context.Context + req *taskapi.ListTasksRequest + fieldsBuilder func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) + expectResp *taskapi.ListTasksResponse + expectErr error + expectErrCode int32 + }{ + { + name: "nil request", + ctx: context.Background(), + req: nil, + expectResp: taskapi.NewListTasksResponse(), + expectErrCode: obErrorx.CommercialCommonInvalidParamCodeCode, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + return nil, nil + }, + }, + { + name: "invalid workspace", + ctx: context.Background(), + req: &taskapi.ListTasksRequest{WorkspaceID: 0}, + expectResp: taskapi.NewListTasksResponse(), + expectErrCode: obErrorx.CommercialCommonInvalidParamCodeCode, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + return nil, nil + }, + }, + { + name: "auth error", + ctx: ctxWithAppID(717152), + req: &taskapi.ListTasksRequest{WorkspaceID: 123}, + expectResp: taskapi.NewListTasksResponse(), + expectErr: errors.New("auth error"), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTraceTaskList, strconv.FormatInt(123, 10)).Return(errors.New("auth error")) + return nil, auth + }, + }, + { + name: "service error", + ctx: context.Background(), + req: &taskapi.ListTasksRequest{WorkspaceID: 456}, + expectResp: taskapi.NewListTasksResponse(), + expectErr: errors.New("svc error"), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTaskReadable, strconv.FormatInt(456, 10)).Return(nil) + s := svcmock.NewMockITaskService(ctrl) + s.EXPECT().ListTasks(gomock.Any(), &svc.ListTasksReq{ + WorkspaceID: 456, + }).Return(nil, errors.New("svc error")) + return s, auth + }, + }, + { + name: "success", + ctx: context.Background(), + req: &taskapi.ListTasksRequest{WorkspaceID: 789}, + expectResp: &taskapi.ListTasksResponse{Tasks: taskListResp.Tasks, Total: taskListResp.Total}, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTaskReadable, strconv.FormatInt(789, 10)).Return(nil) + s := svcmock.NewMockITaskService(ctrl) + s.EXPECT().ListTasks(gomock.Any(), &svc.ListTasksReq{ + WorkspaceID: 789, + }).Return(taskListResp, nil) + return s, auth + }, + }, + } + + for _, tt := range tests { + caseItem := tt + t.Run(caseItem.name, func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + taskSvc, authSvc := caseItem.fieldsBuilder(ctrl) + app := &TaskApplication{ + taskSvc: taskSvc, + authSvc: authSvc, + } + resp, err := app.ListTasks(caseItem.ctx, caseItem.req) + + if caseItem.expectErr != nil { + assert.EqualError(t, err, caseItem.expectErr.Error()) + } else if caseItem.expectErrCode != 0 { + assert.Error(t, err) + assertErrorCode(t, err, caseItem.expectErrCode) + } else { + assert.NoError(t, err) + } + + if caseItem.expectResp != nil { + assert.Equal(t, caseItem.expectResp, resp) + } else { + assert.Nil(t, resp) + } + }) + } +} + +func TestTaskApplication_GetTask(t *testing.T) { + t.Parallel() + + taskResp := &svc.GetTaskResp{Task: &taskdto.Task{Name: "task"}} + + tests := []struct { + name string + ctx context.Context + req *taskapi.GetTaskRequest + fieldsBuilder func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) + expectResp *taskapi.GetTaskResponse + expectErr error + expectErrCode int32 + }{ + { + name: "nil request", + ctx: context.Background(), + req: nil, + expectResp: taskapi.NewGetTaskResponse(), + expectErrCode: obErrorx.CommercialCommonInvalidParamCodeCode, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + return nil, nil + }, + }, + { + name: "invalid workspace", + ctx: context.Background(), + req: &taskapi.GetTaskRequest{WorkspaceID: 0}, + expectResp: taskapi.NewGetTaskResponse(), + expectErrCode: obErrorx.CommercialCommonInvalidParamCodeCode, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + return nil, nil + }, + }, + { + name: "auth error", + ctx: ctxWithAppID(717152), + req: &taskapi.GetTaskRequest{WorkspaceID: 100, TaskID: 1}, + expectResp: taskapi.NewGetTaskResponse(), + expectErr: errors.New("auth error"), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTraceTaskList, strconv.FormatInt(100, 10)).Return(errors.New("auth error")) + return nil, auth + }, + }, + { + name: "service error", + ctx: context.Background(), + req: &taskapi.GetTaskRequest{WorkspaceID: 101, TaskID: 2}, + expectResp: taskapi.NewGetTaskResponse(), + expectErr: errors.New("svc error"), + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTaskReadable, strconv.FormatInt(101, 10)).Return(nil) + s := svcmock.NewMockITaskService(ctrl) + s.EXPECT().GetTask(gomock.Any(), &svc.GetTaskReq{WorkspaceID: 101, TaskID: 2}).Return(nil, errors.New("svc error")) + return s, auth + }, + }, + { + name: "success", + ctx: context.Background(), + req: &taskapi.GetTaskRequest{WorkspaceID: 202, TaskID: 3}, + expectResp: &taskapi.GetTaskResponse{Task: taskResp.Task}, + fieldsBuilder: func(ctrl *gomock.Controller) (svc.ITaskService, rpc.IAuthProvider) { + auth := rpcmock.NewMockIAuthProvider(ctrl) + auth.EXPECT().CheckWorkspacePermission(gomock.Any(), rpc.AuthActionTaskReadable, strconv.FormatInt(202, 10)).Return(nil) + s := svcmock.NewMockITaskService(ctrl) + s.EXPECT().GetTask(gomock.Any(), &svc.GetTaskReq{WorkspaceID: 202, TaskID: 3}).Return(taskResp, nil) + return s, auth + }, + }, + } + + for _, tt := range tests { + caseItem := tt + t.Run(caseItem.name, func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + taskSvc, authSvc := caseItem.fieldsBuilder(ctrl) + app := &TaskApplication{ + taskSvc: taskSvc, + authSvc: authSvc, + } + resp, err := app.GetTask(caseItem.ctx, caseItem.req) + + if caseItem.expectErr != nil { + assert.EqualError(t, err, caseItem.expectErr.Error()) + } else if caseItem.expectErrCode != 0 { + assert.Error(t, err) + assertErrorCode(t, err, caseItem.expectErrCode) + } else { + assert.NoError(t, err) + } + + if caseItem.expectResp != nil { + assert.Equal(t, caseItem.expectResp, resp) + } else { + assert.Nil(t, resp) + } + }) + } +} + +func TestTaskApplication_SpanTrigger(t *testing.T) { + t.Parallel() + + event := &entity.RawSpan{} + + tests := []struct { + name string + mockSvc func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService + expectErr bool + }{ + { + name: "trace hub error", + mockSvc: func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService { + svc := tracehubmock.NewMockITraceHubService(ctrl) + svc.EXPECT().SpanTrigger(gomock.Any(), event).Return(errors.New("hub error")) + return svc + }, + expectErr: true, + }, + { + name: "success", + mockSvc: func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService { + svc := tracehubmock.NewMockITraceHubService(ctrl) + svc.EXPECT().SpanTrigger(gomock.Any(), event).Return(nil) + return svc + }, + }, + } + + for _, tt := range tests { + caseItem := tt + t.Run(caseItem.name, func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + traceSvc := caseItem.mockSvc(ctrl) + app := &TaskApplication{tracehubSvc: traceSvc} + err := app.SpanTrigger(context.Background(), event) + if caseItem.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestTaskApplication_CallBack(t *testing.T) { + t.Parallel() + + event := &entity.AutoEvalEvent{} + tests := []struct { + name string + mockSvc func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService + expectErr bool + }{ + { + name: "trace hub error", + mockSvc: func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService { + svc := tracehubmock.NewMockITraceHubService(ctrl) + svc.EXPECT().CallBack(gomock.Any(), event).Return(errors.New("hub error")) + return svc + }, + expectErr: true, + }, + { + name: "success", + mockSvc: func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService { + svc := tracehubmock.NewMockITraceHubService(ctrl) + svc.EXPECT().CallBack(gomock.Any(), event).Return(nil) + return svc + }, + }, + } + + for _, tt := range tests { + caseItem := tt + t.Run(caseItem.name, func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + traceSvc := caseItem.mockSvc(ctrl) + app := &TaskApplication{tracehubSvc: traceSvc} + err := app.CallBack(context.Background(), event) + if caseItem.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestTaskApplication_Correction(t *testing.T) { + t.Parallel() + + event := &entity.CorrectionEvent{} + tests := []struct { + name string + mockSvc func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService + expectErr bool + }{ + { + name: "trace hub error", + mockSvc: func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService { + svc := tracehubmock.NewMockITraceHubService(ctrl) + svc.EXPECT().Correction(gomock.Any(), event).Return(errors.New("hub error")) + return svc + }, + expectErr: true, + }, + { + name: "success", + mockSvc: func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService { + svc := tracehubmock.NewMockITraceHubService(ctrl) + svc.EXPECT().Correction(gomock.Any(), event).Return(nil) + return svc + }, + }, + } + + for _, tt := range tests { + caseItem := tt + t.Run(caseItem.name, func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + traceSvc := caseItem.mockSvc(ctrl) + app := &TaskApplication{tracehubSvc: traceSvc} + err := app.Correction(context.Background(), event) + if caseItem.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestTaskApplication_BackFill(t *testing.T) { + t.Parallel() + + event := &entity.BackFillEvent{} + tests := []struct { + name string + mockSvc func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService + expectErr bool + }{ + { + name: "trace hub error", + mockSvc: func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService { + svc := tracehubmock.NewMockITraceHubService(ctrl) + svc.EXPECT().BackFill(gomock.Any(), event).Return(errors.New("hub error")) + return svc + }, + expectErr: true, + }, + { + name: "success", + mockSvc: func(ctrl *gomock.Controller) *tracehubmock.MockITraceHubService { + svc := tracehubmock.NewMockITraceHubService(ctrl) + svc.EXPECT().BackFill(gomock.Any(), event).Return(nil) + return svc + }, + }, + } + + for _, tt := range tests { + caseItem := tt + t.Run(caseItem.name, func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + traceSvc := caseItem.mockSvc(ctrl) + app := &TaskApplication{tracehubSvc: traceSvc} + err := app.BackFill(context.Background(), event) + if caseItem.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } } diff --git a/backend/modules/observability/domain/component/config/mocks/config.go b/backend/modules/observability/domain/component/config/mocks/config.go index 3e2d45000..1aea3c576 100644 --- a/backend/modules/observability/domain/component/config/mocks/config.go +++ b/backend/modules/observability/domain/component/config/mocks/config.go @@ -22,7 +22,6 @@ import ( type MockITraceConfig struct { ctrl *gomock.Controller recorder *MockITraceConfigMockRecorder - isgomock struct{} } // MockITraceConfigMockRecorder is the mock recorder for MockITraceConfig. @@ -43,202 +42,217 @@ func (m *MockITraceConfig) EXPECT() *MockITraceConfigMockRecorder { } // Get mocks base method. -func (m *MockITraceConfig) Get(ctx context.Context, key string) any { +func (m *MockITraceConfig) Get(arg0 context.Context, arg1 string) any { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Get", ctx, key) + ret := m.ctrl.Call(m, "Get", arg0, arg1) ret0, _ := ret[0].(any) return ret0 } // Get indicates an expected call of Get. -func (mr *MockITraceConfigMockRecorder) Get(ctx, key any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) Get(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockITraceConfig)(nil).Get), ctx, key) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockITraceConfig)(nil).Get), arg0, arg1) } // GetAnnotationMqProducerCfg mocks base method. -func (m *MockITraceConfig) GetAnnotationMqProducerCfg(ctx context.Context) (*config.MqProducerCfg, error) { +func (m *MockITraceConfig) GetAnnotationMqProducerCfg(arg0 context.Context) (*config.MqProducerCfg, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAnnotationMqProducerCfg", ctx) + ret := m.ctrl.Call(m, "GetAnnotationMqProducerCfg", arg0) ret0, _ := ret[0].(*config.MqProducerCfg) ret1, _ := ret[1].(error) return ret0, ret1 } // GetAnnotationMqProducerCfg indicates an expected call of GetAnnotationMqProducerCfg. -func (mr *MockITraceConfigMockRecorder) GetAnnotationMqProducerCfg(ctx any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetAnnotationMqProducerCfg(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAnnotationMqProducerCfg", reflect.TypeOf((*MockITraceConfig)(nil).GetAnnotationMqProducerCfg), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAnnotationMqProducerCfg", reflect.TypeOf((*MockITraceConfig)(nil).GetAnnotationMqProducerCfg), arg0) } // GetAnnotationSourceCfg mocks base method. -func (m *MockITraceConfig) GetAnnotationSourceCfg(ctx context.Context) (*config.AnnotationSourceConfig, error) { +func (m *MockITraceConfig) GetAnnotationSourceCfg(arg0 context.Context) (*config.AnnotationSourceConfig, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAnnotationSourceCfg", ctx) + ret := m.ctrl.Call(m, "GetAnnotationSourceCfg", arg0) ret0, _ := ret[0].(*config.AnnotationSourceConfig) ret1, _ := ret[1].(error) return ret0, ret1 } // GetAnnotationSourceCfg indicates an expected call of GetAnnotationSourceCfg. -func (mr *MockITraceConfigMockRecorder) GetAnnotationSourceCfg(ctx any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetAnnotationSourceCfg(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAnnotationSourceCfg", reflect.TypeOf((*MockITraceConfig)(nil).GetAnnotationSourceCfg), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAnnotationSourceCfg", reflect.TypeOf((*MockITraceConfig)(nil).GetAnnotationSourceCfg), arg0) +} + +// GetBackfillMqProducerCfg mocks base method. +func (m *MockITraceConfig) GetBackfillMqProducerCfg(arg0 context.Context) (*config.MqProducerCfg, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetBackfillMqProducerCfg", arg0) + ret0, _ := ret[0].(*config.MqProducerCfg) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetBackfillMqProducerCfg indicates an expected call of GetBackfillMqProducerCfg. +func (mr *MockITraceConfigMockRecorder) GetBackfillMqProducerCfg(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBackfillMqProducerCfg", reflect.TypeOf((*MockITraceConfig)(nil).GetBackfillMqProducerCfg), arg0) } // GetDefaultTraceTenant mocks base method. -func (m *MockITraceConfig) GetDefaultTraceTenant(ctx context.Context) string { +func (m *MockITraceConfig) GetDefaultTraceTenant(arg0 context.Context) string { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetDefaultTraceTenant", ctx) + ret := m.ctrl.Call(m, "GetDefaultTraceTenant", arg0) ret0, _ := ret[0].(string) return ret0 } // GetDefaultTraceTenant indicates an expected call of GetDefaultTraceTenant. -func (mr *MockITraceConfigMockRecorder) GetDefaultTraceTenant(ctx any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetDefaultTraceTenant(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDefaultTraceTenant", reflect.TypeOf((*MockITraceConfig)(nil).GetDefaultTraceTenant), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDefaultTraceTenant", reflect.TypeOf((*MockITraceConfig)(nil).GetDefaultTraceTenant), arg0) } // GetPlatformSpansTrans mocks base method. -func (m *MockITraceConfig) GetPlatformSpansTrans(ctx context.Context) (*config.SpanTransHandlerConfig, error) { +func (m *MockITraceConfig) GetPlatformSpansTrans(arg0 context.Context) (*config.SpanTransHandlerConfig, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPlatformSpansTrans", ctx) + ret := m.ctrl.Call(m, "GetPlatformSpansTrans", arg0) ret0, _ := ret[0].(*config.SpanTransHandlerConfig) ret1, _ := ret[1].(error) return ret0, ret1 } // GetPlatformSpansTrans indicates an expected call of GetPlatformSpansTrans. -func (mr *MockITraceConfigMockRecorder) GetPlatformSpansTrans(ctx any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetPlatformSpansTrans(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPlatformSpansTrans", reflect.TypeOf((*MockITraceConfig)(nil).GetPlatformSpansTrans), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPlatformSpansTrans", reflect.TypeOf((*MockITraceConfig)(nil).GetPlatformSpansTrans), arg0) } // GetPlatformTenants mocks base method. -func (m *MockITraceConfig) GetPlatformTenants(ctx context.Context) (*config.PlatformTenantsCfg, error) { +func (m *MockITraceConfig) GetPlatformTenants(arg0 context.Context) (*config.PlatformTenantsCfg, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPlatformTenants", ctx) + ret := m.ctrl.Call(m, "GetPlatformTenants", arg0) ret0, _ := ret[0].(*config.PlatformTenantsCfg) ret1, _ := ret[1].(error) return ret0, ret1 } // GetPlatformTenants indicates an expected call of GetPlatformTenants. -func (mr *MockITraceConfigMockRecorder) GetPlatformTenants(ctx any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetPlatformTenants(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPlatformTenants", reflect.TypeOf((*MockITraceConfig)(nil).GetPlatformTenants), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPlatformTenants", reflect.TypeOf((*MockITraceConfig)(nil).GetPlatformTenants), arg0) } // GetQueryMaxQPS mocks base method. -func (m *MockITraceConfig) GetQueryMaxQPS(ctx context.Context, key string) (int, error) { +func (m *MockITraceConfig) GetQueryMaxQPS(arg0 context.Context, arg1 string) (int, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetQueryMaxQPS", ctx, key) + ret := m.ctrl.Call(m, "GetQueryMaxQPS", arg0, arg1) ret0, _ := ret[0].(int) ret1, _ := ret[1].(error) return ret0, ret1 } // GetQueryMaxQPS indicates an expected call of GetQueryMaxQPS. -func (mr *MockITraceConfigMockRecorder) GetQueryMaxQPS(ctx, key any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetQueryMaxQPS(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetQueryMaxQPS", reflect.TypeOf((*MockITraceConfig)(nil).GetQueryMaxQPS), ctx, key) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetQueryMaxQPS", reflect.TypeOf((*MockITraceConfig)(nil).GetQueryMaxQPS), arg0, arg1) } // GetSystemViews mocks base method. -func (m *MockITraceConfig) GetSystemViews(ctx context.Context) ([]*config.SystemView, error) { +func (m *MockITraceConfig) GetSystemViews(arg0 context.Context) ([]*config.SystemView, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSystemViews", ctx) + ret := m.ctrl.Call(m, "GetSystemViews", arg0) ret0, _ := ret[0].([]*config.SystemView) ret1, _ := ret[1].(error) return ret0, ret1 } // GetSystemViews indicates an expected call of GetSystemViews. -func (mr *MockITraceConfigMockRecorder) GetSystemViews(ctx any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetSystemViews(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSystemViews", reflect.TypeOf((*MockITraceConfig)(nil).GetSystemViews), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSystemViews", reflect.TypeOf((*MockITraceConfig)(nil).GetSystemViews), arg0) } // GetTenantConfig mocks base method. -func (m *MockITraceConfig) GetTenantConfig(ctx context.Context) (*config.TenantCfg, error) { +func (m *MockITraceConfig) GetTenantConfig(arg0 context.Context) (*config.TenantCfg, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTenantConfig", ctx) + ret := m.ctrl.Call(m, "GetTenantConfig", arg0) ret0, _ := ret[0].(*config.TenantCfg) ret1, _ := ret[1].(error) return ret0, ret1 } // GetTenantConfig indicates an expected call of GetTenantConfig. -func (mr *MockITraceConfigMockRecorder) GetTenantConfig(ctx any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetTenantConfig(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTenantConfig", reflect.TypeOf((*MockITraceConfig)(nil).GetTenantConfig), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTenantConfig", reflect.TypeOf((*MockITraceConfig)(nil).GetTenantConfig), arg0) } // GetTraceCkCfg mocks base method. -func (m *MockITraceConfig) GetTraceCkCfg(ctx context.Context) (*config.TraceCKCfg, error) { +func (m *MockITraceConfig) GetTraceCkCfg(arg0 context.Context) (*config.TraceCKCfg, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTraceCkCfg", ctx) + ret := m.ctrl.Call(m, "GetTraceCkCfg", arg0) ret0, _ := ret[0].(*config.TraceCKCfg) ret1, _ := ret[1].(error) return ret0, ret1 } // GetTraceCkCfg indicates an expected call of GetTraceCkCfg. -func (mr *MockITraceConfigMockRecorder) GetTraceCkCfg(ctx any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetTraceCkCfg(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTraceCkCfg", reflect.TypeOf((*MockITraceConfig)(nil).GetTraceCkCfg), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTraceCkCfg", reflect.TypeOf((*MockITraceConfig)(nil).GetTraceCkCfg), arg0) } // GetTraceDataMaxDurationDay mocks base method. -func (m *MockITraceConfig) GetTraceDataMaxDurationDay(ctx context.Context, platformType *string) int64 { +func (m *MockITraceConfig) GetTraceDataMaxDurationDay(arg0 context.Context, arg1 *string) int64 { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTraceDataMaxDurationDay", ctx, platformType) + ret := m.ctrl.Call(m, "GetTraceDataMaxDurationDay", arg0, arg1) ret0, _ := ret[0].(int64) return ret0 } // GetTraceDataMaxDurationDay indicates an expected call of GetTraceDataMaxDurationDay. -func (mr *MockITraceConfigMockRecorder) GetTraceDataMaxDurationDay(ctx, platformType any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetTraceDataMaxDurationDay(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTraceDataMaxDurationDay", reflect.TypeOf((*MockITraceConfig)(nil).GetTraceDataMaxDurationDay), ctx, platformType) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTraceDataMaxDurationDay", reflect.TypeOf((*MockITraceConfig)(nil).GetTraceDataMaxDurationDay), arg0, arg1) } // GetTraceFieldMetaInfo mocks base method. -func (m *MockITraceConfig) GetTraceFieldMetaInfo(ctx context.Context) (*config.TraceFieldMetaInfoCfg, error) { +func (m *MockITraceConfig) GetTraceFieldMetaInfo(arg0 context.Context) (*config.TraceFieldMetaInfoCfg, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTraceFieldMetaInfo", ctx) + ret := m.ctrl.Call(m, "GetTraceFieldMetaInfo", arg0) ret0, _ := ret[0].(*config.TraceFieldMetaInfoCfg) ret1, _ := ret[1].(error) return ret0, ret1 } // GetTraceFieldMetaInfo indicates an expected call of GetTraceFieldMetaInfo. -func (mr *MockITraceConfigMockRecorder) GetTraceFieldMetaInfo(ctx any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetTraceFieldMetaInfo(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTraceFieldMetaInfo", reflect.TypeOf((*MockITraceConfig)(nil).GetTraceFieldMetaInfo), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTraceFieldMetaInfo", reflect.TypeOf((*MockITraceConfig)(nil).GetTraceFieldMetaInfo), arg0) } // GetTraceIngestTenantProducerCfg mocks base method. -func (m *MockITraceConfig) GetTraceIngestTenantProducerCfg(ctx context.Context) (map[string]*config.IngestConfig, error) { +func (m *MockITraceConfig) GetTraceIngestTenantProducerCfg(arg0 context.Context) (map[string]*config.IngestConfig, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTraceIngestTenantProducerCfg", ctx) + ret := m.ctrl.Call(m, "GetTraceIngestTenantProducerCfg", arg0) ret0, _ := ret[0].(map[string]*config.IngestConfig) ret1, _ := ret[1].(error) return ret0, ret1 } // GetTraceIngestTenantProducerCfg indicates an expected call of GetTraceIngestTenantProducerCfg. -func (mr *MockITraceConfigMockRecorder) GetTraceIngestTenantProducerCfg(ctx any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) GetTraceIngestTenantProducerCfg(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTraceIngestTenantProducerCfg", reflect.TypeOf((*MockITraceConfig)(nil).GetTraceIngestTenantProducerCfg), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTraceIngestTenantProducerCfg", reflect.TypeOf((*MockITraceConfig)(nil).GetTraceIngestTenantProducerCfg), arg0) } // Unmarshal mocks base method. -func (m *MockITraceConfig) Unmarshal(ctx context.Context, value any, opts ...conf.DecodeOptionFn) error { +func (m *MockITraceConfig) Unmarshal(arg0 context.Context, arg1 any, arg2 ...conf.DecodeOptionFn) error { m.ctrl.T.Helper() - varargs := []any{ctx, value} - for _, a := range opts { + varargs := []any{arg0, arg1} + for _, a := range arg2 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Unmarshal", varargs...) @@ -247,17 +261,17 @@ func (m *MockITraceConfig) Unmarshal(ctx context.Context, value any, opts ...con } // Unmarshal indicates an expected call of Unmarshal. -func (mr *MockITraceConfigMockRecorder) Unmarshal(ctx, value any, opts ...any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) Unmarshal(arg0, arg1 any, arg2 ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]any{ctx, value}, opts...) + varargs := append([]any{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Unmarshal", reflect.TypeOf((*MockITraceConfig)(nil).Unmarshal), varargs...) } // UnmarshalKey mocks base method. -func (m *MockITraceConfig) UnmarshalKey(ctx context.Context, key string, value any, opts ...conf.DecodeOptionFn) error { +func (m *MockITraceConfig) UnmarshalKey(arg0 context.Context, arg1 string, arg2 any, arg3 ...conf.DecodeOptionFn) error { m.ctrl.T.Helper() - varargs := []any{ctx, key, value} - for _, a := range opts { + varargs := []any{arg0, arg1, arg2} + for _, a := range arg3 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "UnmarshalKey", varargs...) @@ -266,8 +280,8 @@ func (m *MockITraceConfig) UnmarshalKey(ctx context.Context, key string, value a } // UnmarshalKey indicates an expected call of UnmarshalKey. -func (mr *MockITraceConfigMockRecorder) UnmarshalKey(ctx, key, value any, opts ...any) *gomock.Call { +func (mr *MockITraceConfigMockRecorder) UnmarshalKey(arg0, arg1, arg2 any, arg3 ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]any{ctx, key, value}, opts...) + varargs := append([]any{arg0, arg1, arg2}, arg3...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnmarshalKey", reflect.TypeOf((*MockITraceConfig)(nil).UnmarshalKey), varargs...) } diff --git a/backend/modules/observability/domain/component/rpc/mocks/auth_provider.go b/backend/modules/observability/domain/component/rpc/mocks/auth_provider.go index acd351512..a101da769 100644 --- a/backend/modules/observability/domain/component/rpc/mocks/auth_provider.go +++ b/backend/modules/observability/domain/component/rpc/mocks/auth_provider.go @@ -20,7 +20,6 @@ import ( type MockIAuthProvider struct { ctrl *gomock.Controller recorder *MockIAuthProviderMockRecorder - isgomock struct{} } // MockIAuthProviderMockRecorder is the mock recorder for MockIAuthProvider. @@ -41,57 +40,71 @@ func (m *MockIAuthProvider) EXPECT() *MockIAuthProviderMockRecorder { } // CheckIngestPermission mocks base method. -func (m *MockIAuthProvider) CheckIngestPermission(ctx context.Context, workspaceId string) error { +func (m *MockIAuthProvider) CheckIngestPermission(arg0 context.Context, arg1 string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CheckIngestPermission", ctx, workspaceId) + ret := m.ctrl.Call(m, "CheckIngestPermission", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // CheckIngestPermission indicates an expected call of CheckIngestPermission. -func (mr *MockIAuthProviderMockRecorder) CheckIngestPermission(ctx, workspaceId any) *gomock.Call { +func (mr *MockIAuthProviderMockRecorder) CheckIngestPermission(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckIngestPermission", reflect.TypeOf((*MockIAuthProvider)(nil).CheckIngestPermission), ctx, workspaceId) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckIngestPermission", reflect.TypeOf((*MockIAuthProvider)(nil).CheckIngestPermission), arg0, arg1) } // CheckQueryPermission mocks base method. -func (m *MockIAuthProvider) CheckQueryPermission(ctx context.Context, workspaceId, platformType string) error { +func (m *MockIAuthProvider) CheckQueryPermission(arg0 context.Context, arg1, arg2 string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CheckQueryPermission", ctx, workspaceId, platformType) + ret := m.ctrl.Call(m, "CheckQueryPermission", arg0, arg1, arg2) ret0, _ := ret[0].(error) return ret0 } // CheckQueryPermission indicates an expected call of CheckQueryPermission. -func (mr *MockIAuthProviderMockRecorder) CheckQueryPermission(ctx, workspaceId, platformType any) *gomock.Call { +func (mr *MockIAuthProviderMockRecorder) CheckQueryPermission(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckQueryPermission", reflect.TypeOf((*MockIAuthProvider)(nil).CheckQueryPermission), ctx, workspaceId, platformType) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckQueryPermission", reflect.TypeOf((*MockIAuthProvider)(nil).CheckQueryPermission), arg0, arg1, arg2) +} + +// CheckTaskPermission mocks base method. +func (m *MockIAuthProvider) CheckTaskPermission(arg0 context.Context, arg1, arg2, arg3 string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CheckTaskPermission", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].(error) + return ret0 +} + +// CheckTaskPermission indicates an expected call of CheckTaskPermission. +func (mr *MockIAuthProviderMockRecorder) CheckTaskPermission(arg0, arg1, arg2, arg3 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckTaskPermission", reflect.TypeOf((*MockIAuthProvider)(nil).CheckTaskPermission), arg0, arg1, arg2, arg3) } // CheckViewPermission mocks base method. -func (m *MockIAuthProvider) CheckViewPermission(ctx context.Context, action, workspaceId, viewId string) error { +func (m *MockIAuthProvider) CheckViewPermission(arg0 context.Context, arg1, arg2, arg3 string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CheckViewPermission", ctx, action, workspaceId, viewId) + ret := m.ctrl.Call(m, "CheckViewPermission", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(error) return ret0 } // CheckViewPermission indicates an expected call of CheckViewPermission. -func (mr *MockIAuthProviderMockRecorder) CheckViewPermission(ctx, action, workspaceId, viewId any) *gomock.Call { +func (mr *MockIAuthProviderMockRecorder) CheckViewPermission(arg0, arg1, arg2, arg3 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckViewPermission", reflect.TypeOf((*MockIAuthProvider)(nil).CheckViewPermission), ctx, action, workspaceId, viewId) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckViewPermission", reflect.TypeOf((*MockIAuthProvider)(nil).CheckViewPermission), arg0, arg1, arg2, arg3) } // CheckWorkspacePermission mocks base method. -func (m *MockIAuthProvider) CheckWorkspacePermission(ctx context.Context, action, workspaceId string) error { +func (m *MockIAuthProvider) CheckWorkspacePermission(arg0 context.Context, arg1, arg2 string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CheckWorkspacePermission", ctx, action, workspaceId) + ret := m.ctrl.Call(m, "CheckWorkspacePermission", arg0, arg1, arg2) ret0, _ := ret[0].(error) return ret0 } // CheckWorkspacePermission indicates an expected call of CheckWorkspacePermission. -func (mr *MockIAuthProviderMockRecorder) CheckWorkspacePermission(ctx, action, workspaceId any) *gomock.Call { +func (mr *MockIAuthProviderMockRecorder) CheckWorkspacePermission(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckWorkspacePermission", reflect.TypeOf((*MockIAuthProvider)(nil).CheckWorkspacePermission), ctx, action, workspaceId) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckWorkspacePermission", reflect.TypeOf((*MockIAuthProvider)(nil).CheckWorkspacePermission), arg0, arg1, arg2) } diff --git a/backend/modules/observability/domain/component/rpc/mocks/dataset_provider_mock.go b/backend/modules/observability/domain/component/rpc/mocks/dataset_provider_mock.go index 7781966b8..efebc6c00 100644 --- a/backend/modules/observability/domain/component/rpc/mocks/dataset_provider_mock.go +++ b/backend/modules/observability/domain/component/rpc/mocks/dataset_provider_mock.go @@ -100,6 +100,21 @@ func (mr *MockIDatasetProviderMockRecorder) GetDataset(arg0, arg1, arg2, arg3 an return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDataset", reflect.TypeOf((*MockIDatasetProvider)(nil).GetDataset), arg0, arg1, arg2, arg3) } +// SearchDatasets mocks base method. +func (m *MockIDatasetProvider) SearchDatasets(arg0 context.Context, arg1, arg2 int64, arg3 entity.DatasetCategory, arg4 string) ([]*entity.Dataset, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SearchDatasets", arg0, arg1, arg2, arg3, arg4) + ret0, _ := ret[0].([]*entity.Dataset) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SearchDatasets indicates an expected call of SearchDatasets. +func (mr *MockIDatasetProviderMockRecorder) SearchDatasets(arg0, arg1, arg2, arg3, arg4 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SearchDatasets", reflect.TypeOf((*MockIDatasetProvider)(nil).SearchDatasets), arg0, arg1, arg2, arg3, arg4) +} + // UpdateDatasetSchema mocks base method. func (m *MockIDatasetProvider) UpdateDatasetSchema(arg0 context.Context, arg1 *entity.Dataset) error { m.ctrl.T.Helper() diff --git a/backend/modules/observability/domain/component/rpc/mocks/evaluator.go b/backend/modules/observability/domain/component/rpc/mocks/evaluator.go index 464f5f1ba..57bd0a127 100644 --- a/backend/modules/observability/domain/component/rpc/mocks/evaluator.go +++ b/backend/modules/observability/domain/component/rpc/mocks/evaluator.go @@ -21,7 +21,6 @@ import ( type MockIEvaluatorRPCAdapter struct { ctrl *gomock.Controller recorder *MockIEvaluatorRPCAdapterMockRecorder - isgomock struct{} } // MockIEvaluatorRPCAdapterMockRecorder is the mock recorder for MockIEvaluatorRPCAdapter. @@ -42,9 +41,9 @@ func (m *MockIEvaluatorRPCAdapter) EXPECT() *MockIEvaluatorRPCAdapterMockRecorde } // BatchGetEvaluatorVersions mocks base method. -func (m *MockIEvaluatorRPCAdapter) BatchGetEvaluatorVersions(ctx context.Context, param *rpc.BatchGetEvaluatorVersionsParam) ([]*rpc.Evaluator, map[int64]*rpc.Evaluator, error) { +func (m *MockIEvaluatorRPCAdapter) BatchGetEvaluatorVersions(arg0 context.Context, arg1 *rpc.BatchGetEvaluatorVersionsParam) ([]*rpc.Evaluator, map[int64]*rpc.Evaluator, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BatchGetEvaluatorVersions", ctx, param) + ret := m.ctrl.Call(m, "BatchGetEvaluatorVersions", arg0, arg1) ret0, _ := ret[0].([]*rpc.Evaluator) ret1, _ := ret[1].(map[int64]*rpc.Evaluator) ret2, _ := ret[2].(error) @@ -52,7 +51,36 @@ func (m *MockIEvaluatorRPCAdapter) BatchGetEvaluatorVersions(ctx context.Context } // BatchGetEvaluatorVersions indicates an expected call of BatchGetEvaluatorVersions. -func (mr *MockIEvaluatorRPCAdapterMockRecorder) BatchGetEvaluatorVersions(ctx, param any) *gomock.Call { +func (mr *MockIEvaluatorRPCAdapterMockRecorder) BatchGetEvaluatorVersions(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BatchGetEvaluatorVersions", reflect.TypeOf((*MockIEvaluatorRPCAdapter)(nil).BatchGetEvaluatorVersions), ctx, param) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BatchGetEvaluatorVersions", reflect.TypeOf((*MockIEvaluatorRPCAdapter)(nil).BatchGetEvaluatorVersions), arg0, arg1) +} + +// ListEvaluators mocks base method. +func (m *MockIEvaluatorRPCAdapter) ListEvaluators(arg0 context.Context, arg1 *rpc.ListEvaluatorsParam) ([]*rpc.Evaluator, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListEvaluators", arg0, arg1) + ret0, _ := ret[0].([]*rpc.Evaluator) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListEvaluators indicates an expected call of ListEvaluators. +func (mr *MockIEvaluatorRPCAdapterMockRecorder) ListEvaluators(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListEvaluators", reflect.TypeOf((*MockIEvaluatorRPCAdapter)(nil).ListEvaluators), arg0, arg1) +} + +// UpdateEvaluatorRecord mocks base method. +func (m *MockIEvaluatorRPCAdapter) UpdateEvaluatorRecord(arg0 context.Context, arg1 *rpc.UpdateEvaluatorRecordParam) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateEvaluatorRecord", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateEvaluatorRecord indicates an expected call of UpdateEvaluatorRecord. +func (mr *MockIEvaluatorRPCAdapterMockRecorder) UpdateEvaluatorRecord(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateEvaluatorRecord", reflect.TypeOf((*MockIEvaluatorRPCAdapter)(nil).UpdateEvaluatorRecord), arg0, arg1) } diff --git a/backend/modules/observability/domain/component/rpc/mocks/file.go b/backend/modules/observability/domain/component/rpc/mocks/file.go index 2ea9cda65..ed18922bc 100644 --- a/backend/modules/observability/domain/component/rpc/mocks/file.go +++ b/backend/modules/observability/domain/component/rpc/mocks/file.go @@ -20,7 +20,6 @@ import ( type MockIFileProvider struct { ctrl *gomock.Controller recorder *MockIFileProviderMockRecorder - isgomock struct{} } // MockIFileProviderMockRecorder is the mock recorder for MockIFileProvider. diff --git a/backend/modules/observability/domain/component/rpc/mocks/tag.go b/backend/modules/observability/domain/component/rpc/mocks/tag.go index db5d94694..67b72557d 100644 --- a/backend/modules/observability/domain/component/rpc/mocks/tag.go +++ b/backend/modules/observability/domain/component/rpc/mocks/tag.go @@ -21,7 +21,6 @@ import ( type MockITagRPCAdapter struct { ctrl *gomock.Controller recorder *MockITagRPCAdapterMockRecorder - isgomock struct{} } // MockITagRPCAdapterMockRecorder is the mock recorder for MockITagRPCAdapter. diff --git a/backend/modules/observability/domain/component/rpc/mocks/user.go b/backend/modules/observability/domain/component/rpc/mocks/user.go index bb55cfe63..eb5db57ab 100644 --- a/backend/modules/observability/domain/component/rpc/mocks/user.go +++ b/backend/modules/observability/domain/component/rpc/mocks/user.go @@ -21,7 +21,6 @@ import ( type MockIUserProvider struct { ctrl *gomock.Controller recorder *MockIUserProviderMockRecorder - isgomock struct{} } // MockIUserProviderMockRecorder is the mock recorder for MockIUserProvider. @@ -42,9 +41,9 @@ func (m *MockIUserProvider) EXPECT() *MockIUserProviderMockRecorder { } // GetUserInfo mocks base method. -func (m *MockIUserProvider) GetUserInfo(ctx context.Context, userIDs []string) ([]*common.UserInfo, map[string]*common.UserInfo, error) { +func (m *MockIUserProvider) GetUserInfo(arg0 context.Context, arg1 []string) ([]*common.UserInfo, map[string]*common.UserInfo, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUserInfo", ctx, userIDs) + ret := m.ctrl.Call(m, "GetUserInfo", arg0, arg1) ret0, _ := ret[0].([]*common.UserInfo) ret1, _ := ret[1].(map[string]*common.UserInfo) ret2, _ := ret[2].(error) @@ -52,7 +51,7 @@ func (m *MockIUserProvider) GetUserInfo(ctx context.Context, userIDs []string) ( } // GetUserInfo indicates an expected call of GetUserInfo. -func (mr *MockIUserProviderMockRecorder) GetUserInfo(ctx, userIDs any) *gomock.Call { +func (mr *MockIUserProviderMockRecorder) GetUserInfo(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserInfo", reflect.TypeOf((*MockIUserProvider)(nil).GetUserInfo), ctx, userIDs) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserInfo", reflect.TypeOf((*MockIUserProvider)(nil).GetUserInfo), arg0, arg1) } diff --git a/backend/modules/observability/domain/task/repo/mocks/Task.go b/backend/modules/observability/domain/task/repo/mocks/Task.go new file mode 100644 index 000000000..659d9ca48 --- /dev/null +++ b/backend/modules/observability/domain/task/repo/mocks/Task.go @@ -0,0 +1,377 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo (interfaces: ITaskRepo) +// +// Generated by this command: +// +// mockgen -destination=mocks/Task.go -package=mocks . ITaskRepo +// + +// Package mocks is a generated GoMock package. +package mocks + +import ( + context "context" + reflect "reflect" + + entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" + mysql "github.com/coze-dev/coze-loop/backend/modules/observability/infra/repo/mysql" + gomock "go.uber.org/mock/gomock" +) + +// MockITaskRepo is a mock of ITaskRepo interface. +type MockITaskRepo struct { + ctrl *gomock.Controller + recorder *MockITaskRepoMockRecorder +} + +// MockITaskRepoMockRecorder is the mock recorder for MockITaskRepo. +type MockITaskRepoMockRecorder struct { + mock *MockITaskRepo +} + +// NewMockITaskRepo creates a new mock instance. +func NewMockITaskRepo(ctrl *gomock.Controller) *MockITaskRepo { + mock := &MockITaskRepo{ctrl: ctrl} + mock.recorder = &MockITaskRepoMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockITaskRepo) EXPECT() *MockITaskRepoMockRecorder { + return m.recorder +} + +// CreateTask mocks base method. +func (m *MockITaskRepo) CreateTask(arg0 context.Context, arg1 *entity.ObservabilityTask) (int64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateTask", arg0, arg1) + ret0, _ := ret[0].(int64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateTask indicates an expected call of CreateTask. +func (mr *MockITaskRepoMockRecorder) CreateTask(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateTask", reflect.TypeOf((*MockITaskRepo)(nil).CreateTask), arg0, arg1) +} + +// CreateTaskRun mocks base method. +func (m *MockITaskRepo) CreateTaskRun(arg0 context.Context, arg1 *entity.TaskRun) (int64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateTaskRun", arg0, arg1) + ret0, _ := ret[0].(int64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateTaskRun indicates an expected call of CreateTaskRun. +func (mr *MockITaskRepoMockRecorder) CreateTaskRun(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateTaskRun", reflect.TypeOf((*MockITaskRepo)(nil).CreateTaskRun), arg0, arg1) +} + +// DecrTaskCount mocks base method. +func (m *MockITaskRepo) DecrTaskCount(arg0 context.Context, arg1, arg2 int64) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DecrTaskCount", arg0, arg1, arg2) + ret0, _ := ret[0].(error) + return ret0 +} + +// DecrTaskCount indicates an expected call of DecrTaskCount. +func (mr *MockITaskRepoMockRecorder) DecrTaskCount(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DecrTaskCount", reflect.TypeOf((*MockITaskRepo)(nil).DecrTaskCount), arg0, arg1, arg2) +} + +// DecrTaskRunCount mocks base method. +func (m *MockITaskRepo) DecrTaskRunCount(arg0 context.Context, arg1, arg2, arg3 int64) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DecrTaskRunCount", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].(error) + return ret0 +} + +// DecrTaskRunCount indicates an expected call of DecrTaskRunCount. +func (mr *MockITaskRepoMockRecorder) DecrTaskRunCount(arg0, arg1, arg2, arg3 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DecrTaskRunCount", reflect.TypeOf((*MockITaskRepo)(nil).DecrTaskRunCount), arg0, arg1, arg2, arg3) +} + +// DecrTaskRunSuccessCount mocks base method. +func (m *MockITaskRepo) DecrTaskRunSuccessCount(arg0 context.Context, arg1, arg2 int64) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DecrTaskRunSuccessCount", arg0, arg1, arg2) + ret0, _ := ret[0].(error) + return ret0 +} + +// DecrTaskRunSuccessCount indicates an expected call of DecrTaskRunSuccessCount. +func (mr *MockITaskRepoMockRecorder) DecrTaskRunSuccessCount(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DecrTaskRunSuccessCount", reflect.TypeOf((*MockITaskRepo)(nil).DecrTaskRunSuccessCount), arg0, arg1, arg2) +} + +// DeleteTask mocks base method. +func (m *MockITaskRepo) DeleteTask(arg0 context.Context, arg1 *entity.ObservabilityTask) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteTask", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteTask indicates an expected call of DeleteTask. +func (mr *MockITaskRepoMockRecorder) DeleteTask(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteTask", reflect.TypeOf((*MockITaskRepo)(nil).DeleteTask), arg0, arg1) +} + +// GetBackfillTaskRun mocks base method. +func (m *MockITaskRepo) GetBackfillTaskRun(arg0 context.Context, arg1 *int64, arg2 int64) (*entity.TaskRun, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetBackfillTaskRun", arg0, arg1, arg2) + ret0, _ := ret[0].(*entity.TaskRun) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetBackfillTaskRun indicates an expected call of GetBackfillTaskRun. +func (mr *MockITaskRepoMockRecorder) GetBackfillTaskRun(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBackfillTaskRun", reflect.TypeOf((*MockITaskRepo)(nil).GetBackfillTaskRun), arg0, arg1, arg2) +} + +// GetLatestNewDataTaskRun mocks base method. +func (m *MockITaskRepo) GetLatestNewDataTaskRun(arg0 context.Context, arg1 *int64, arg2 int64) (*entity.TaskRun, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetLatestNewDataTaskRun", arg0, arg1, arg2) + ret0, _ := ret[0].(*entity.TaskRun) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetLatestNewDataTaskRun indicates an expected call of GetLatestNewDataTaskRun. +func (mr *MockITaskRepoMockRecorder) GetLatestNewDataTaskRun(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLatestNewDataTaskRun", reflect.TypeOf((*MockITaskRepo)(nil).GetLatestNewDataTaskRun), arg0, arg1, arg2) +} + +// GetObjListWithTask mocks base method. +func (m *MockITaskRepo) GetObjListWithTask(arg0 context.Context) ([]string, []string, []*entity.ObservabilityTask) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetObjListWithTask", arg0) + ret0, _ := ret[0].([]string) + ret1, _ := ret[1].([]string) + ret2, _ := ret[2].([]*entity.ObservabilityTask) + return ret0, ret1, ret2 +} + +// GetObjListWithTask indicates an expected call of GetObjListWithTask. +func (mr *MockITaskRepoMockRecorder) GetObjListWithTask(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetObjListWithTask", reflect.TypeOf((*MockITaskRepo)(nil).GetObjListWithTask), arg0) +} + +// GetTask mocks base method. +func (m *MockITaskRepo) GetTask(arg0 context.Context, arg1 int64, arg2 *int64, arg3 *string) (*entity.ObservabilityTask, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTask", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].(*entity.ObservabilityTask) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTask indicates an expected call of GetTask. +func (mr *MockITaskRepoMockRecorder) GetTask(arg0, arg1, arg2, arg3 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTask", reflect.TypeOf((*MockITaskRepo)(nil).GetTask), arg0, arg1, arg2, arg3) +} + +// GetTaskCount mocks base method. +func (m *MockITaskRepo) GetTaskCount(arg0 context.Context, arg1 int64) (int64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTaskCount", arg0, arg1) + ret0, _ := ret[0].(int64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTaskCount indicates an expected call of GetTaskCount. +func (mr *MockITaskRepoMockRecorder) GetTaskCount(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTaskCount", reflect.TypeOf((*MockITaskRepo)(nil).GetTaskCount), arg0, arg1) +} + +// GetTaskRunCount mocks base method. +func (m *MockITaskRepo) GetTaskRunCount(arg0 context.Context, arg1, arg2 int64) (int64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTaskRunCount", arg0, arg1, arg2) + ret0, _ := ret[0].(int64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTaskRunCount indicates an expected call of GetTaskRunCount. +func (mr *MockITaskRepoMockRecorder) GetTaskRunCount(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTaskRunCount", reflect.TypeOf((*MockITaskRepo)(nil).GetTaskRunCount), arg0, arg1, arg2) +} + +// GetTaskRunFailCount mocks base method. +func (m *MockITaskRepo) GetTaskRunFailCount(arg0 context.Context, arg1, arg2 int64) (int64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTaskRunFailCount", arg0, arg1, arg2) + ret0, _ := ret[0].(int64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTaskRunFailCount indicates an expected call of GetTaskRunFailCount. +func (mr *MockITaskRepoMockRecorder) GetTaskRunFailCount(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTaskRunFailCount", reflect.TypeOf((*MockITaskRepo)(nil).GetTaskRunFailCount), arg0, arg1, arg2) +} + +// GetTaskRunSuccessCount mocks base method. +func (m *MockITaskRepo) GetTaskRunSuccessCount(arg0 context.Context, arg1, arg2 int64) (int64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTaskRunSuccessCount", arg0, arg1, arg2) + ret0, _ := ret[0].(int64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTaskRunSuccessCount indicates an expected call of GetTaskRunSuccessCount. +func (mr *MockITaskRepoMockRecorder) GetTaskRunSuccessCount(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTaskRunSuccessCount", reflect.TypeOf((*MockITaskRepo)(nil).GetTaskRunSuccessCount), arg0, arg1, arg2) +} + +// IncrTaskCount mocks base method. +func (m *MockITaskRepo) IncrTaskCount(arg0 context.Context, arg1, arg2 int64) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "IncrTaskCount", arg0, arg1, arg2) + ret0, _ := ret[0].(error) + return ret0 +} + +// IncrTaskCount indicates an expected call of IncrTaskCount. +func (mr *MockITaskRepoMockRecorder) IncrTaskCount(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IncrTaskCount", reflect.TypeOf((*MockITaskRepo)(nil).IncrTaskCount), arg0, arg1, arg2) +} + +// IncrTaskRunCount mocks base method. +func (m *MockITaskRepo) IncrTaskRunCount(arg0 context.Context, arg1, arg2, arg3 int64) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "IncrTaskRunCount", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].(error) + return ret0 +} + +// IncrTaskRunCount indicates an expected call of IncrTaskRunCount. +func (mr *MockITaskRepoMockRecorder) IncrTaskRunCount(arg0, arg1, arg2, arg3 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IncrTaskRunCount", reflect.TypeOf((*MockITaskRepo)(nil).IncrTaskRunCount), arg0, arg1, arg2, arg3) +} + +// IncrTaskRunFailCount mocks base method. +func (m *MockITaskRepo) IncrTaskRunFailCount(arg0 context.Context, arg1, arg2 int64) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "IncrTaskRunFailCount", arg0, arg1, arg2) + ret0, _ := ret[0].(error) + return ret0 +} + +// IncrTaskRunFailCount indicates an expected call of IncrTaskRunFailCount. +func (mr *MockITaskRepoMockRecorder) IncrTaskRunFailCount(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IncrTaskRunFailCount", reflect.TypeOf((*MockITaskRepo)(nil).IncrTaskRunFailCount), arg0, arg1, arg2) +} + +// IncrTaskRunSuccessCount mocks base method. +func (m *MockITaskRepo) IncrTaskRunSuccessCount(arg0 context.Context, arg1, arg2 int64) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "IncrTaskRunSuccessCount", arg0, arg1, arg2) + ret0, _ := ret[0].(error) + return ret0 +} + +// IncrTaskRunSuccessCount indicates an expected call of IncrTaskRunSuccessCount. +func (mr *MockITaskRepoMockRecorder) IncrTaskRunSuccessCount(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IncrTaskRunSuccessCount", reflect.TypeOf((*MockITaskRepo)(nil).IncrTaskRunSuccessCount), arg0, arg1, arg2) +} + +// ListTasks mocks base method. +func (m *MockITaskRepo) ListTasks(arg0 context.Context, arg1 mysql.ListTaskParam) ([]*entity.ObservabilityTask, int64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListTasks", arg0, arg1) + ret0, _ := ret[0].([]*entity.ObservabilityTask) + ret1, _ := ret[1].(int64) + ret2, _ := ret[2].(error) + return ret0, ret1, ret2 +} + +// ListTasks indicates an expected call of ListTasks. +func (mr *MockITaskRepoMockRecorder) ListTasks(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTasks", reflect.TypeOf((*MockITaskRepo)(nil).ListTasks), arg0, arg1) +} + +// UpdateTask mocks base method. +func (m *MockITaskRepo) UpdateTask(arg0 context.Context, arg1 *entity.ObservabilityTask) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateTask", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateTask indicates an expected call of UpdateTask. +func (mr *MockITaskRepoMockRecorder) UpdateTask(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTask", reflect.TypeOf((*MockITaskRepo)(nil).UpdateTask), arg0, arg1) +} + +// UpdateTaskRun mocks base method. +func (m *MockITaskRepo) UpdateTaskRun(arg0 context.Context, arg1 *entity.TaskRun) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateTaskRun", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateTaskRun indicates an expected call of UpdateTaskRun. +func (mr *MockITaskRepoMockRecorder) UpdateTaskRun(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTaskRun", reflect.TypeOf((*MockITaskRepo)(nil).UpdateTaskRun), arg0, arg1) +} + +// UpdateTaskRunWithOCC mocks base method. +func (m *MockITaskRepo) UpdateTaskRunWithOCC(arg0 context.Context, arg1, arg2 int64, arg3 map[string]any) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateTaskRunWithOCC", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateTaskRunWithOCC indicates an expected call of UpdateTaskRunWithOCC. +func (mr *MockITaskRepoMockRecorder) UpdateTaskRunWithOCC(arg0, arg1, arg2, arg3 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTaskRunWithOCC", reflect.TypeOf((*MockITaskRepo)(nil).UpdateTaskRunWithOCC), arg0, arg1, arg2, arg3) +} + +// UpdateTaskWithOCC mocks base method. +func (m *MockITaskRepo) UpdateTaskWithOCC(arg0 context.Context, arg1, arg2 int64, arg3 map[string]any) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateTaskWithOCC", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateTaskWithOCC indicates an expected call of UpdateTaskWithOCC. +func (mr *MockITaskRepoMockRecorder) UpdateTaskWithOCC(arg0, arg1, arg2, arg3 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTaskWithOCC", reflect.TypeOf((*MockITaskRepo)(nil).UpdateTaskWithOCC), arg0, arg1, arg2, arg3) +} diff --git a/backend/modules/observability/domain/task/service/mocks/task_service.go b/backend/modules/observability/domain/task/service/mocks/task_service.go new file mode 100644 index 000000000..992300806 --- /dev/null +++ b/backend/modules/observability/domain/task/service/mocks/task_service.go @@ -0,0 +1,115 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service (interfaces: ITaskService) +// +// Generated by this command: +// +// mockgen -destination=mocks/task_service.go -package=mocks . ITaskService +// + +// Package mocks is a generated GoMock package. +package mocks + +import ( + context "context" + reflect "reflect" + + service "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service" + gomock "go.uber.org/mock/gomock" +) + +// MockITaskService is a mock of ITaskService interface. +type MockITaskService struct { + ctrl *gomock.Controller + recorder *MockITaskServiceMockRecorder +} + +// MockITaskServiceMockRecorder is the mock recorder for MockITaskService. +type MockITaskServiceMockRecorder struct { + mock *MockITaskService +} + +// NewMockITaskService creates a new mock instance. +func NewMockITaskService(ctrl *gomock.Controller) *MockITaskService { + mock := &MockITaskService{ctrl: ctrl} + mock.recorder = &MockITaskServiceMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockITaskService) EXPECT() *MockITaskServiceMockRecorder { + return m.recorder +} + +// CheckTaskName mocks base method. +func (m *MockITaskService) CheckTaskName(arg0 context.Context, arg1 *service.CheckTaskNameReq) (*service.CheckTaskNameResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CheckTaskName", arg0, arg1) + ret0, _ := ret[0].(*service.CheckTaskNameResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CheckTaskName indicates an expected call of CheckTaskName. +func (mr *MockITaskServiceMockRecorder) CheckTaskName(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckTaskName", reflect.TypeOf((*MockITaskService)(nil).CheckTaskName), arg0, arg1) +} + +// CreateTask mocks base method. +func (m *MockITaskService) CreateTask(arg0 context.Context, arg1 *service.CreateTaskReq) (*service.CreateTaskResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateTask", arg0, arg1) + ret0, _ := ret[0].(*service.CreateTaskResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateTask indicates an expected call of CreateTask. +func (mr *MockITaskServiceMockRecorder) CreateTask(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateTask", reflect.TypeOf((*MockITaskService)(nil).CreateTask), arg0, arg1) +} + +// GetTask mocks base method. +func (m *MockITaskService) GetTask(arg0 context.Context, arg1 *service.GetTaskReq) (*service.GetTaskResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTask", arg0, arg1) + ret0, _ := ret[0].(*service.GetTaskResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTask indicates an expected call of GetTask. +func (mr *MockITaskServiceMockRecorder) GetTask(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTask", reflect.TypeOf((*MockITaskService)(nil).GetTask), arg0, arg1) +} + +// ListTasks mocks base method. +func (m *MockITaskService) ListTasks(arg0 context.Context, arg1 *service.ListTasksReq) (*service.ListTasksResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListTasks", arg0, arg1) + ret0, _ := ret[0].(*service.ListTasksResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListTasks indicates an expected call of ListTasks. +func (mr *MockITaskServiceMockRecorder) ListTasks(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTasks", reflect.TypeOf((*MockITaskService)(nil).ListTasks), arg0, arg1) +} + +// UpdateTask mocks base method. +func (m *MockITaskService) UpdateTask(arg0 context.Context, arg1 *service.UpdateTaskReq) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateTask", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateTask indicates an expected call of UpdateTask. +func (mr *MockITaskServiceMockRecorder) UpdateTask(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTask", reflect.TypeOf((*MockITaskService)(nil).UpdateTask), arg0, arg1) +} diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/mocks/trace_hub_service.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/mocks/trace_hub_service.go index c8f7abb5d..a46b07d6b 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/mocks/trace_hub_service.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/mocks/trace_hub_service.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/tracehub (interfaces: ITraceHubService) +// +// Generated by this command: +// +// mockgen -destination=mocks/trace_hub_service.go -package=mocks . ITraceHubService +// // Package mocks is a generated GoMock package. package mocks @@ -9,7 +14,7 @@ import ( reflect "reflect" entity "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockITraceHubService is a mock of ITraceHubService interface. @@ -44,7 +49,7 @@ func (m *MockITraceHubService) BackFill(arg0 context.Context, arg1 *entity.BackF } // BackFill indicates an expected call of BackFill. -func (mr *MockITraceHubServiceMockRecorder) BackFill(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockITraceHubServiceMockRecorder) BackFill(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BackFill", reflect.TypeOf((*MockITraceHubService)(nil).BackFill), arg0, arg1) } @@ -58,7 +63,7 @@ func (m *MockITraceHubService) CallBack(arg0 context.Context, arg1 *entity.AutoE } // CallBack indicates an expected call of CallBack. -func (mr *MockITraceHubServiceMockRecorder) CallBack(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockITraceHubServiceMockRecorder) CallBack(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CallBack", reflect.TypeOf((*MockITraceHubService)(nil).CallBack), arg0, arg1) } @@ -72,7 +77,7 @@ func (m *MockITraceHubService) Correction(arg0 context.Context, arg1 *entity.Cor } // Correction indicates an expected call of Correction. -func (mr *MockITraceHubServiceMockRecorder) Correction(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockITraceHubServiceMockRecorder) Correction(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Correction", reflect.TypeOf((*MockITraceHubService)(nil).Correction), arg0, arg1) } @@ -86,7 +91,7 @@ func (m *MockITraceHubService) SpanTrigger(arg0 context.Context, arg1 *entity.Ra } // SpanTrigger indicates an expected call of SpanTrigger. -func (mr *MockITraceHubServiceMockRecorder) SpanTrigger(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockITraceHubServiceMockRecorder) SpanTrigger(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SpanTrigger", reflect.TypeOf((*MockITraceHubService)(nil).SpanTrigger), arg0, arg1) } diff --git a/backend/modules/observability/domain/trace/repo/mocks/trace.go b/backend/modules/observability/domain/trace/repo/mocks/trace.go index 8dc5c9cbe..20b331e76 100644 --- a/backend/modules/observability/domain/trace/repo/mocks/trace.go +++ b/backend/modules/observability/domain/trace/repo/mocks/trace.go @@ -3,7 +3,7 @@ // // Generated by this command: // -// mockgen -destination=modules/observability/domain/trace/repo/mocks/trace.go -package=mocks github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/repo ITraceRepo +// mockgen -destination=mocks/trace.go -package=mocks . ITraceRepo // // Package mocks is a generated GoMock package. @@ -128,3 +128,17 @@ func (mr *MockITraceRepoMockRecorder) ListSpans(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSpans", reflect.TypeOf((*MockITraceRepo)(nil).ListSpans), arg0, arg1) } + +// UpsertAnnotation mocks base method. +func (m *MockITraceRepo) UpsertAnnotation(arg0 context.Context, arg1 *repo.UpsertAnnotationParam) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpsertAnnotation", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertAnnotation indicates an expected call of UpsertAnnotation. +func (mr *MockITraceRepoMockRecorder) UpsertAnnotation(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertAnnotation", reflect.TypeOf((*MockITraceRepo)(nil).UpsertAnnotation), arg0, arg1) +} diff --git a/backend/modules/observability/domain/trace/repo/mocks/view.go b/backend/modules/observability/domain/trace/repo/mocks/view.go index 12aa19f8c..419109d6c 100644 --- a/backend/modules/observability/domain/trace/repo/mocks/view.go +++ b/backend/modules/observability/domain/trace/repo/mocks/view.go @@ -21,7 +21,6 @@ import ( type MockIViewRepo struct { ctrl *gomock.Controller recorder *MockIViewRepoMockRecorder - isgomock struct{} } // MockIViewRepoMockRecorder is the mock recorder for MockIViewRepo. @@ -42,74 +41,74 @@ func (m *MockIViewRepo) EXPECT() *MockIViewRepoMockRecorder { } // CreateView mocks base method. -func (m *MockIViewRepo) CreateView(ctx context.Context, do *entity.ObservabilityView) (int64, error) { +func (m *MockIViewRepo) CreateView(arg0 context.Context, arg1 *entity.ObservabilityView) (int64, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateView", ctx, do) + ret := m.ctrl.Call(m, "CreateView", arg0, arg1) ret0, _ := ret[0].(int64) ret1, _ := ret[1].(error) return ret0, ret1 } // CreateView indicates an expected call of CreateView. -func (mr *MockIViewRepoMockRecorder) CreateView(ctx, do any) *gomock.Call { +func (mr *MockIViewRepoMockRecorder) CreateView(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateView", reflect.TypeOf((*MockIViewRepo)(nil).CreateView), ctx, do) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateView", reflect.TypeOf((*MockIViewRepo)(nil).CreateView), arg0, arg1) } // DeleteView mocks base method. -func (m *MockIViewRepo) DeleteView(ctx context.Context, id, workspaceID int64, userID string) error { +func (m *MockIViewRepo) DeleteView(arg0 context.Context, arg1, arg2 int64, arg3 string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteView", ctx, id, workspaceID, userID) + ret := m.ctrl.Call(m, "DeleteView", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(error) return ret0 } // DeleteView indicates an expected call of DeleteView. -func (mr *MockIViewRepoMockRecorder) DeleteView(ctx, id, workspaceID, userID any) *gomock.Call { +func (mr *MockIViewRepoMockRecorder) DeleteView(arg0, arg1, arg2, arg3 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteView", reflect.TypeOf((*MockIViewRepo)(nil).DeleteView), ctx, id, workspaceID, userID) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteView", reflect.TypeOf((*MockIViewRepo)(nil).DeleteView), arg0, arg1, arg2, arg3) } // GetView mocks base method. -func (m *MockIViewRepo) GetView(ctx context.Context, id int64, workspaceID *int64, userID *string) (*entity.ObservabilityView, error) { +func (m *MockIViewRepo) GetView(arg0 context.Context, arg1 int64, arg2 *int64, arg3 *string) (*entity.ObservabilityView, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetView", ctx, id, workspaceID, userID) + ret := m.ctrl.Call(m, "GetView", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*entity.ObservabilityView) ret1, _ := ret[1].(error) return ret0, ret1 } // GetView indicates an expected call of GetView. -func (mr *MockIViewRepoMockRecorder) GetView(ctx, id, workspaceID, userID any) *gomock.Call { +func (mr *MockIViewRepoMockRecorder) GetView(arg0, arg1, arg2, arg3 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetView", reflect.TypeOf((*MockIViewRepo)(nil).GetView), ctx, id, workspaceID, userID) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetView", reflect.TypeOf((*MockIViewRepo)(nil).GetView), arg0, arg1, arg2, arg3) } // ListViews mocks base method. -func (m *MockIViewRepo) ListViews(ctx context.Context, workspaceID int64, userID string) ([]*entity.ObservabilityView, error) { +func (m *MockIViewRepo) ListViews(arg0 context.Context, arg1 int64, arg2 string) ([]*entity.ObservabilityView, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListViews", ctx, workspaceID, userID) + ret := m.ctrl.Call(m, "ListViews", arg0, arg1, arg2) ret0, _ := ret[0].([]*entity.ObservabilityView) ret1, _ := ret[1].(error) return ret0, ret1 } // ListViews indicates an expected call of ListViews. -func (mr *MockIViewRepoMockRecorder) ListViews(ctx, workspaceID, userID any) *gomock.Call { +func (mr *MockIViewRepoMockRecorder) ListViews(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListViews", reflect.TypeOf((*MockIViewRepo)(nil).ListViews), ctx, workspaceID, userID) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListViews", reflect.TypeOf((*MockIViewRepo)(nil).ListViews), arg0, arg1, arg2) } // UpdateView mocks base method. -func (m *MockIViewRepo) UpdateView(ctx context.Context, do *entity.ObservabilityView) error { +func (m *MockIViewRepo) UpdateView(arg0 context.Context, arg1 *entity.ObservabilityView) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateView", ctx, do) + ret := m.ctrl.Call(m, "UpdateView", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // UpdateView indicates an expected call of UpdateView. -func (mr *MockIViewRepoMockRecorder) UpdateView(ctx, do any) *gomock.Call { +func (mr *MockIViewRepoMockRecorder) UpdateView(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateView", reflect.TypeOf((*MockIViewRepo)(nil).UpdateView), ctx, do) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateView", reflect.TypeOf((*MockIViewRepo)(nil).UpdateView), arg0, arg1) } diff --git a/backend/modules/observability/domain/trace/service/mocks/ingestion.go b/backend/modules/observability/domain/trace/service/mocks/ingestion.go index 9010a34ad..397a9493c 100644 --- a/backend/modules/observability/domain/trace/service/mocks/ingestion.go +++ b/backend/modules/observability/domain/trace/service/mocks/ingestion.go @@ -20,7 +20,6 @@ import ( type MockIngestionService struct { ctrl *gomock.Controller recorder *MockIngestionServiceMockRecorder - isgomock struct{} } // MockIngestionServiceMockRecorder is the mock recorder for MockIngestionService. @@ -41,27 +40,27 @@ func (m *MockIngestionService) EXPECT() *MockIngestionServiceMockRecorder { } // RunAsync mocks base method. -func (m *MockIngestionService) RunAsync(ctx context.Context) { +func (m *MockIngestionService) RunAsync(arg0 context.Context) { m.ctrl.T.Helper() - m.ctrl.Call(m, "RunAsync", ctx) + m.ctrl.Call(m, "RunAsync", arg0) } // RunAsync indicates an expected call of RunAsync. -func (mr *MockIngestionServiceMockRecorder) RunAsync(ctx any) *gomock.Call { +func (mr *MockIngestionServiceMockRecorder) RunAsync(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunAsync", reflect.TypeOf((*MockIngestionService)(nil).RunAsync), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunAsync", reflect.TypeOf((*MockIngestionService)(nil).RunAsync), arg0) } // RunSync mocks base method. -func (m *MockIngestionService) RunSync(ctx context.Context) error { +func (m *MockIngestionService) RunSync(arg0 context.Context) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RunSync", ctx) + ret := m.ctrl.Call(m, "RunSync", arg0) ret0, _ := ret[0].(error) return ret0 } // RunSync indicates an expected call of RunSync. -func (mr *MockIngestionServiceMockRecorder) RunSync(ctx any) *gomock.Call { +func (mr *MockIngestionServiceMockRecorder) RunSync(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunSync", reflect.TypeOf((*MockIngestionService)(nil).RunSync), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunSync", reflect.TypeOf((*MockIngestionService)(nil).RunSync), arg0) } diff --git a/backend/modules/observability/domain/trace/service/mocks/span_processor.go b/backend/modules/observability/domain/trace/service/mocks/span_processor.go index 1241cd947..adcda3d67 100644 --- a/backend/modules/observability/domain/trace/service/mocks/span_processor.go +++ b/backend/modules/observability/domain/trace/service/mocks/span_processor.go @@ -23,7 +23,6 @@ import ( type MockTraceFilterProcessorBuilder struct { ctrl *gomock.Controller recorder *MockTraceFilterProcessorBuilderMockRecorder - isgomock struct{} } // MockTraceFilterProcessorBuilderMockRecorder is the mock recorder for MockTraceFilterProcessorBuilder. diff --git a/backend/modules/observability/domain/trace/service/mocks/trace_service.go b/backend/modules/observability/domain/trace/service/mocks/trace_service.go index 96f95e20f..fac7ba3c1 100644 --- a/backend/modules/observability/domain/trace/service/mocks/trace_service.go +++ b/backend/modules/observability/domain/trace/service/mocks/trace_service.go @@ -22,7 +22,6 @@ import ( type MockITraceService struct { ctrl *gomock.Controller recorder *MockITraceServiceMockRecorder - isgomock struct{} } // MockITraceServiceMockRecorder is the mock recorder for MockITraceService. @@ -42,206 +41,251 @@ func (m *MockITraceService) EXPECT() *MockITraceServiceMockRecorder { return m.recorder } +// ChangeEvaluatorScore mocks base method. +func (m *MockITraceService) ChangeEvaluatorScore(arg0 context.Context, arg1 *service.ChangeEvaluatorScoreRequest) (*service.ChangeEvaluatorScoreResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ChangeEvaluatorScore", arg0, arg1) + ret0, _ := ret[0].(*service.ChangeEvaluatorScoreResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ChangeEvaluatorScore indicates an expected call of ChangeEvaluatorScore. +func (mr *MockITraceServiceMockRecorder) ChangeEvaluatorScore(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ChangeEvaluatorScore", reflect.TypeOf((*MockITraceService)(nil).ChangeEvaluatorScore), arg0, arg1) +} + // CreateAnnotation mocks base method. -func (m *MockITraceService) CreateAnnotation(ctx context.Context, req *service.CreateAnnotationReq) error { +func (m *MockITraceService) CreateAnnotation(arg0 context.Context, arg1 *service.CreateAnnotationReq) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateAnnotation", ctx, req) + ret := m.ctrl.Call(m, "CreateAnnotation", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // CreateAnnotation indicates an expected call of CreateAnnotation. -func (mr *MockITraceServiceMockRecorder) CreateAnnotation(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) CreateAnnotation(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateAnnotation", reflect.TypeOf((*MockITraceService)(nil).CreateAnnotation), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateAnnotation", reflect.TypeOf((*MockITraceService)(nil).CreateAnnotation), arg0, arg1) } // CreateManualAnnotation mocks base method. -func (m *MockITraceService) CreateManualAnnotation(ctx context.Context, req *service.CreateManualAnnotationReq) (*service.CreateManualAnnotationResp, error) { +func (m *MockITraceService) CreateManualAnnotation(arg0 context.Context, arg1 *service.CreateManualAnnotationReq) (*service.CreateManualAnnotationResp, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateManualAnnotation", ctx, req) + ret := m.ctrl.Call(m, "CreateManualAnnotation", arg0, arg1) ret0, _ := ret[0].(*service.CreateManualAnnotationResp) ret1, _ := ret[1].(error) return ret0, ret1 } // CreateManualAnnotation indicates an expected call of CreateManualAnnotation. -func (mr *MockITraceServiceMockRecorder) CreateManualAnnotation(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) CreateManualAnnotation(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateManualAnnotation", reflect.TypeOf((*MockITraceService)(nil).CreateManualAnnotation), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateManualAnnotation", reflect.TypeOf((*MockITraceService)(nil).CreateManualAnnotation), arg0, arg1) } // DeleteAnnotation mocks base method. -func (m *MockITraceService) DeleteAnnotation(ctx context.Context, req *service.DeleteAnnotationReq) error { +func (m *MockITraceService) DeleteAnnotation(arg0 context.Context, arg1 *service.DeleteAnnotationReq) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteAnnotation", ctx, req) + ret := m.ctrl.Call(m, "DeleteAnnotation", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // DeleteAnnotation indicates an expected call of DeleteAnnotation. -func (mr *MockITraceServiceMockRecorder) DeleteAnnotation(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) DeleteAnnotation(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAnnotation", reflect.TypeOf((*MockITraceService)(nil).DeleteAnnotation), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAnnotation", reflect.TypeOf((*MockITraceService)(nil).DeleteAnnotation), arg0, arg1) } // DeleteManualAnnotation mocks base method. -func (m *MockITraceService) DeleteManualAnnotation(ctx context.Context, req *service.DeleteManualAnnotationReq) error { +func (m *MockITraceService) DeleteManualAnnotation(arg0 context.Context, arg1 *service.DeleteManualAnnotationReq) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteManualAnnotation", ctx, req) + ret := m.ctrl.Call(m, "DeleteManualAnnotation", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // DeleteManualAnnotation indicates an expected call of DeleteManualAnnotation. -func (mr *MockITraceServiceMockRecorder) DeleteManualAnnotation(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) DeleteManualAnnotation(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteManualAnnotation", reflect.TypeOf((*MockITraceService)(nil).DeleteManualAnnotation), arg0, arg1) +} + +// ExtractSpanInfo mocks base method. +func (m *MockITraceService) ExtractSpanInfo(arg0 context.Context, arg1 *service.ExtractSpanInfoRequest) (*service.ExtractSpanInfoResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ExtractSpanInfo", arg0, arg1) + ret0, _ := ret[0].(*service.ExtractSpanInfoResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ExtractSpanInfo indicates an expected call of ExtractSpanInfo. +func (mr *MockITraceServiceMockRecorder) ExtractSpanInfo(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteManualAnnotation", reflect.TypeOf((*MockITraceService)(nil).DeleteManualAnnotation), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExtractSpanInfo", reflect.TypeOf((*MockITraceService)(nil).ExtractSpanInfo), arg0, arg1) } // GetTrace mocks base method. -func (m *MockITraceService) GetTrace(ctx context.Context, req *service.GetTraceReq) (*service.GetTraceResp, error) { +func (m *MockITraceService) GetTrace(arg0 context.Context, arg1 *service.GetTraceReq) (*service.GetTraceResp, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTrace", ctx, req) + ret := m.ctrl.Call(m, "GetTrace", arg0, arg1) ret0, _ := ret[0].(*service.GetTraceResp) ret1, _ := ret[1].(error) return ret0, ret1 } // GetTrace indicates an expected call of GetTrace. -func (mr *MockITraceServiceMockRecorder) GetTrace(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) GetTrace(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTrace", reflect.TypeOf((*MockITraceService)(nil).GetTrace), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTrace", reflect.TypeOf((*MockITraceService)(nil).GetTrace), arg0, arg1) } // GetTracesAdvanceInfo mocks base method. -func (m *MockITraceService) GetTracesAdvanceInfo(ctx context.Context, req *service.GetTracesAdvanceInfoReq) (*service.GetTracesAdvanceInfoResp, error) { +func (m *MockITraceService) GetTracesAdvanceInfo(arg0 context.Context, arg1 *service.GetTracesAdvanceInfoReq) (*service.GetTracesAdvanceInfoResp, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTracesAdvanceInfo", ctx, req) + ret := m.ctrl.Call(m, "GetTracesAdvanceInfo", arg0, arg1) ret0, _ := ret[0].(*service.GetTracesAdvanceInfoResp) ret1, _ := ret[1].(error) return ret0, ret1 } // GetTracesAdvanceInfo indicates an expected call of GetTracesAdvanceInfo. -func (mr *MockITraceServiceMockRecorder) GetTracesAdvanceInfo(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) GetTracesAdvanceInfo(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTracesAdvanceInfo", reflect.TypeOf((*MockITraceService)(nil).GetTracesAdvanceInfo), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTracesAdvanceInfo", reflect.TypeOf((*MockITraceService)(nil).GetTracesAdvanceInfo), arg0, arg1) } // GetTracesMetaInfo mocks base method. -func (m *MockITraceService) GetTracesMetaInfo(ctx context.Context, req *service.GetTracesMetaInfoReq) (*service.GetTracesMetaInfoResp, error) { +func (m *MockITraceService) GetTracesMetaInfo(arg0 context.Context, arg1 *service.GetTracesMetaInfoReq) (*service.GetTracesMetaInfoResp, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTracesMetaInfo", ctx, req) + ret := m.ctrl.Call(m, "GetTracesMetaInfo", arg0, arg1) ret0, _ := ret[0].(*service.GetTracesMetaInfoResp) ret1, _ := ret[1].(error) return ret0, ret1 } // GetTracesMetaInfo indicates an expected call of GetTracesMetaInfo. -func (mr *MockITraceServiceMockRecorder) GetTracesMetaInfo(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) GetTracesMetaInfo(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTracesMetaInfo", reflect.TypeOf((*MockITraceService)(nil).GetTracesMetaInfo), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTracesMetaInfo", reflect.TypeOf((*MockITraceService)(nil).GetTracesMetaInfo), arg0, arg1) } // IngestTraces mocks base method. -func (m *MockITraceService) IngestTraces(ctx context.Context, req *service.IngestTracesReq) error { +func (m *MockITraceService) IngestTraces(arg0 context.Context, arg1 *service.IngestTracesReq) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IngestTraces", ctx, req) + ret := m.ctrl.Call(m, "IngestTraces", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // IngestTraces indicates an expected call of IngestTraces. -func (mr *MockITraceServiceMockRecorder) IngestTraces(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) IngestTraces(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IngestTraces", reflect.TypeOf((*MockITraceService)(nil).IngestTraces), arg0, arg1) +} + +// ListAnnotationEvaluators mocks base method. +func (m *MockITraceService) ListAnnotationEvaluators(arg0 context.Context, arg1 *service.ListAnnotationEvaluatorsRequest) (*service.ListAnnotationEvaluatorsResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListAnnotationEvaluators", arg0, arg1) + ret0, _ := ret[0].(*service.ListAnnotationEvaluatorsResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListAnnotationEvaluators indicates an expected call of ListAnnotationEvaluators. +func (mr *MockITraceServiceMockRecorder) ListAnnotationEvaluators(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IngestTraces", reflect.TypeOf((*MockITraceService)(nil).IngestTraces), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAnnotationEvaluators", reflect.TypeOf((*MockITraceService)(nil).ListAnnotationEvaluators), arg0, arg1) } // ListAnnotations mocks base method. -func (m *MockITraceService) ListAnnotations(ctx context.Context, req *service.ListAnnotationsReq) (*service.ListAnnotationsResp, error) { +func (m *MockITraceService) ListAnnotations(arg0 context.Context, arg1 *service.ListAnnotationsReq) (*service.ListAnnotationsResp, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListAnnotations", ctx, req) + ret := m.ctrl.Call(m, "ListAnnotations", arg0, arg1) ret0, _ := ret[0].(*service.ListAnnotationsResp) ret1, _ := ret[1].(error) return ret0, ret1 } // ListAnnotations indicates an expected call of ListAnnotations. -func (mr *MockITraceServiceMockRecorder) ListAnnotations(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) ListAnnotations(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAnnotations", reflect.TypeOf((*MockITraceService)(nil).ListAnnotations), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAnnotations", reflect.TypeOf((*MockITraceService)(nil).ListAnnotations), arg0, arg1) } // ListSpans mocks base method. -func (m *MockITraceService) ListSpans(ctx context.Context, req *service.ListSpansReq) (*service.ListSpansResp, error) { +func (m *MockITraceService) ListSpans(arg0 context.Context, arg1 *service.ListSpansReq) (*service.ListSpansResp, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListSpans", ctx, req) + ret := m.ctrl.Call(m, "ListSpans", arg0, arg1) ret0, _ := ret[0].(*service.ListSpansResp) ret1, _ := ret[1].(error) return ret0, ret1 } // ListSpans indicates an expected call of ListSpans. -func (mr *MockITraceServiceMockRecorder) ListSpans(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) ListSpans(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSpans", reflect.TypeOf((*MockITraceService)(nil).ListSpans), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSpans", reflect.TypeOf((*MockITraceService)(nil).ListSpans), arg0, arg1) } // ListSpansOApi mocks base method. -func (m *MockITraceService) ListSpansOApi(ctx context.Context, req *service.ListSpansOApiReq) (*service.ListSpansOApiResp, error) { +func (m *MockITraceService) ListSpansOApi(arg0 context.Context, arg1 *service.ListSpansOApiReq) (*service.ListSpansOApiResp, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListSpansOApi", ctx, req) + ret := m.ctrl.Call(m, "ListSpansOApi", arg0, arg1) ret0, _ := ret[0].(*service.ListSpansOApiResp) ret1, _ := ret[1].(error) return ret0, ret1 } // ListSpansOApi indicates an expected call of ListSpansOApi. -func (mr *MockITraceServiceMockRecorder) ListSpansOApi(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) ListSpansOApi(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSpansOApi", reflect.TypeOf((*MockITraceService)(nil).ListSpansOApi), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSpansOApi", reflect.TypeOf((*MockITraceService)(nil).ListSpansOApi), arg0, arg1) } // SearchTraceOApi mocks base method. -func (m *MockITraceService) SearchTraceOApi(ctx context.Context, req *service.SearchTraceOApiReq) (*service.SearchTraceOApiResp, error) { +func (m *MockITraceService) SearchTraceOApi(arg0 context.Context, arg1 *service.SearchTraceOApiReq) (*service.SearchTraceOApiResp, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SearchTraceOApi", ctx, req) + ret := m.ctrl.Call(m, "SearchTraceOApi", arg0, arg1) ret0, _ := ret[0].(*service.SearchTraceOApiResp) ret1, _ := ret[1].(error) return ret0, ret1 } // SearchTraceOApi indicates an expected call of SearchTraceOApi. -func (mr *MockITraceServiceMockRecorder) SearchTraceOApi(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) SearchTraceOApi(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SearchTraceOApi", reflect.TypeOf((*MockITraceService)(nil).SearchTraceOApi), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SearchTraceOApi", reflect.TypeOf((*MockITraceService)(nil).SearchTraceOApi), arg0, arg1) } // Send mocks base method. -func (m *MockITraceService) Send(ctx context.Context, msg *entity.AnnotationEvent) error { +func (m *MockITraceService) Send(arg0 context.Context, arg1 *entity.AnnotationEvent) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Send", ctx, msg) + ret := m.ctrl.Call(m, "Send", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // Send indicates an expected call of Send. -func (mr *MockITraceServiceMockRecorder) Send(ctx, msg any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) Send(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockITraceService)(nil).Send), ctx, msg) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockITraceService)(nil).Send), arg0, arg1) } // UpdateManualAnnotation mocks base method. -func (m *MockITraceService) UpdateManualAnnotation(ctx context.Context, req *service.UpdateManualAnnotationReq) error { +func (m *MockITraceService) UpdateManualAnnotation(arg0 context.Context, arg1 *service.UpdateManualAnnotationReq) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateManualAnnotation", ctx, req) + ret := m.ctrl.Call(m, "UpdateManualAnnotation", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // UpdateManualAnnotation indicates an expected call of UpdateManualAnnotation. -func (mr *MockITraceServiceMockRecorder) UpdateManualAnnotation(ctx, req any) *gomock.Call { +func (mr *MockITraceServiceMockRecorder) UpdateManualAnnotation(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateManualAnnotation", reflect.TypeOf((*MockITraceService)(nil).UpdateManualAnnotation), ctx, req) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateManualAnnotation", reflect.TypeOf((*MockITraceService)(nil).UpdateManualAnnotation), arg0, arg1) } From 7ed7f9e35220b86099d21909370aa042644ea328 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 07:22:43 +0800 Subject: [PATCH 448/462] add debug log --- backend/modules/observability/infra/repo/redis/dao/task.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index d42af25cc..7f94071a7 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -205,6 +205,7 @@ func (p *TaskDAOImpl) DecrTaskCount(ctx context.Context, taskID int64, ttl time. func (p *TaskDAOImpl) IncrTaskRunCount(ctx context.Context, taskID, taskRunID int64, ttl time.Duration) (int64, error) { key := p.makeTaskRunCountCacheKey(taskID, taskRunID) result, err := p.cmdable.Incr(ctx, key).Result() + logs.CtxInfo(ctx, "redis incr task run count success, taskID: %v,taskRunID: %v, key: %v, result: %v", taskID, taskRunID, key, result) if err != nil { logs.CtxError(ctx, "redis incr task run count failed", "key", key, "err", err) return 0, errorx.Wrapf(err, "redis incr task run count key: %v", key) From 450991cf42935eea957f789bfe1d5417902fc64f Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 07:43:38 +0800 Subject: [PATCH 449/462] feat: [Coda] guard transform task status with lock (LogID: 20251013073531192168031096625ABCA) Co-Authored-By: Coda --- .../taskexe/tracehub/scheduled_task.go | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 2c535b9ea..c47044b64 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -36,6 +36,11 @@ type TaskCacheInfo struct { UpdateTime time.Time } +const ( + transformTaskStatusLockKey = "observability:tracehub:transform_task_status" + transformTaskStatusLockTTL = 3 * time.Minute +) + // startScheduledTask launches the scheduled task goroutine func (h *TraceHubServiceImpl) startScheduledTask() { go func() { @@ -70,7 +75,26 @@ func (h *TraceHubServiceImpl) startScheduledTask() { func (h *TraceHubServiceImpl) transformTaskStatus() { ctx := context.Background() ctx = h.fillCtx(ctx) + logs.CtxInfo(ctx, "Scheduled task started...") + + if h.locker != nil { + locked, lockErr := h.locker.Lock(ctx, transformTaskStatusLockKey, transformTaskStatusLockTTL) + if lockErr != nil { + logs.CtxError(ctx, "transformTaskStatus acquire lock failed", "err", lockErr) + return + } + if !locked { + logs.CtxInfo(ctx, "transformTaskStatus lock held by others, skip execution") + return + } + defer func() { + if _, err := h.locker.Unlock(transformTaskStatusLockKey); err != nil { + logs.CtxWarn(ctx, "transformTaskStatus release lock failed", "err", err) + } + }() + } + // Read all non-final (success/disabled) tasks taskPOs, err := h.listNonFinalTask(ctx) if err != nil { From 745351381a314c95e841852bf2843eed87af86db Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 07:49:02 +0800 Subject: [PATCH 450/462] feat: [Coda] lock backfill job to avoid deadlock (LogID: 20251013073531192168031096625ABCA) Co-Authored-By: Coda --- .../task/service/taskexe/tracehub/backfill.go | 30 ++++++++++++++++++- .../infra/repo/redis/dao/task.go | 3 +- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index a5b76b0fc..4a99d2e9a 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -6,6 +6,7 @@ package tracehub import ( "context" "errors" + "fmt" "sync" "time" @@ -26,12 +27,39 @@ import ( "github.com/coze-dev/coze-loop/backend/pkg/logs" ) -const pageSize = 500 +const ( + pageSize = 500 + backfillLockKeyTemplate = "observability:tracehub:backfill:%d" +) // 定时任务+锁 func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFillEvent) error { // 1. Set the current task context ctx = h.fillCtx(ctx) + + var ( + locked bool + lockErr error + lockKey string + ) + if h.locker != nil && event != nil { + lockKey = fmt.Sprintf(backfillLockKeyTemplate, event.TaskID) + locked, lockErr = h.locker.Lock(ctx, lockKey, transformTaskStatusLockTTL) + if lockErr != nil { + logs.CtxError(ctx, "backfill acquire lock failed", "task_id", event.TaskID, "err", lockErr) + return lockErr + } + if !locked { + logs.CtxInfo(ctx, "backfill lock held by others, skip execution", "task_id", event.TaskID) + return nil + } + defer func() { + if _, err := h.locker.Unlock(lockKey); err != nil { + logs.CtxWarn(ctx, "backfill release lock failed", "task_id", event.TaskID, "err", err) + } + }() + } + sub, err := h.setBackfillTask(ctx, event) if err != nil { return err diff --git a/backend/modules/observability/infra/repo/redis/dao/task.go b/backend/modules/observability/infra/repo/redis/dao/task.go index 7f94071a7..bc75a5a59 100755 --- a/backend/modules/observability/infra/repo/redis/dao/task.go +++ b/backend/modules/observability/infra/repo/redis/dao/task.go @@ -161,7 +161,6 @@ func (p *TaskDAOImpl) IncrTaskCount(ctx context.Context, taskID int64, ttl time. // DecrTaskCount 原子减少任务计数,确保不会变为负数 func (p *TaskDAOImpl) DecrTaskCount(ctx context.Context, taskID int64, ttl time.Duration) (int64, error) { key := p.makeTaskCountCacheKey(taskID) - // 先获取当前值 current, err := p.cmdable.Get(ctx, key).Int64() if err != nil { @@ -184,7 +183,7 @@ func (p *TaskDAOImpl) DecrTaskCount(ctx context.Context, taskID int64, ttl time. logs.CtxError(ctx, "redis decr task count failed", "key", key, "err", err) return 0, errorx.Wrapf(err, "redis decr task count key: %v", key) } - + logs.CtxInfo(ctx, "redis decr task count success, taskID: %v, key: %v, result: %v", taskID, key, result) // 如果减少后变为负数,重置为0 if result < 0 { if err := p.cmdable.Set(ctx, key, 0, ttl).Err(); err != nil { From 179fd8af5ba2d0a678442965ac4702bbb8cacb24 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 08:15:19 +0800 Subject: [PATCH 451/462] fix debug log --- .../domain/task/service/task_service.go | 33 ++++++------ .../task/service/taskexe/tracehub/backfill.go | 40 +++++++-------- .../taskexe/tracehub/scheduled_task.go | 51 ++++++++++++------- .../service/taskexe/tracehub/trace_hub.go | 5 +- 4 files changed, 71 insertions(+), 58 deletions(-) diff --git a/backend/modules/observability/domain/task/service/task_service.go b/backend/modules/observability/domain/task/service/task_service.go index 4acf318e0..ae78f15fe 100644 --- a/backend/modules/observability/domain/task/service/task_service.go +++ b/backend/modules/observability/domain/task/service/task_service.go @@ -19,6 +19,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/rpc" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/repo" + "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/service/taskexe/processor" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/service" @@ -259,22 +260,22 @@ func (t *TaskServiceImpl) UpdateTask(ctx context.Context, req *UpdateTaskReq) (e if validTaskStatus != "" { if validTaskStatus == task.TaskStatusDisabled { // 禁用操作处理 - //proc := t.taskProcessor.GetTaskProcessor(taskPO.TaskType) - //taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) - //var taskRun *entity.TaskRun - //for _, tr := range taskPO.TaskRuns { - // if tr.RunStatus == task.RunStatusRunning { - // taskRun = tr - // break - // } - //} - //if err = proc.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ - // Task: taskConfig, - // TaskRun: taskRun, - //}); err != nil { - // logs.CtxError(ctx, "proc Finish err:%v", err) - // return err - //} + proc := t.taskProcessor.GetTaskProcessor(taskPO.TaskType) + taskConfig := tconv.TaskPO2DTO(ctx, taskPO, nil) + var taskRun *entity.TaskRun + for _, tr := range taskPO.TaskRuns { + if tr.RunStatus == task.RunStatusRunning { + taskRun = tr + break + } + } + if err = proc.OnFinishTaskRunChange(ctx, taskexe.OnFinishTaskRunChangeReq{ + Task: taskConfig, + TaskRun: taskRun, + }); err != nil { + logs.CtxError(ctx, "proc Finish err:%v", err) + return err + } } taskPO.TaskStatus = *req.TaskStatus } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 4a99d2e9a..5b8cbe40a 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -6,7 +6,6 @@ package tracehub import ( "context" "errors" - "fmt" "sync" "time" @@ -37,28 +36,23 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi // 1. Set the current task context ctx = h.fillCtx(ctx) - var ( - locked bool - lockErr error - lockKey string - ) - if h.locker != nil && event != nil { - lockKey = fmt.Sprintf(backfillLockKeyTemplate, event.TaskID) - locked, lockErr = h.locker.Lock(ctx, lockKey, transformTaskStatusLockTTL) - if lockErr != nil { - logs.CtxError(ctx, "backfill acquire lock failed", "task_id", event.TaskID, "err", lockErr) - return lockErr - } - if !locked { - logs.CtxInfo(ctx, "backfill lock held by others, skip execution", "task_id", event.TaskID) - return nil - } - defer func() { - if _, err := h.locker.Unlock(lockKey); err != nil { - logs.CtxWarn(ctx, "backfill release lock failed", "task_id", event.TaskID, "err", err) - } - }() - } + //if h.locker != nil && event != nil { + // lockKey := fmt.Sprintf(backfillLockKeyTemplate, event.TaskID) + // locked, lockErr := h.locker.Lock(ctx, lockKey, transformTaskStatusLockTTL) + // if lockErr != nil { + // logs.CtxError(ctx, "backfill acquire lock failed", "task_id", event.TaskID, "err", lockErr) + // return lockErr + // } + // if !locked { + // logs.CtxInfo(ctx, "backfill lock held by others, skip execution", "task_id", event.TaskID) + // return nil + // } + // defer func() { + // if _, err := h.locker.Unlock(lockKey); err != nil { + // logs.CtxWarn(ctx, "backfill release lock failed", "task_id", event.TaskID, "err", err) + // } + // }() + //} sub, err := h.setBackfillTask(ctx, event) if err != nil { diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index c47044b64..181b028d0 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -39,6 +39,7 @@ type TaskCacheInfo struct { const ( transformTaskStatusLockKey = "observability:tracehub:transform_task_status" transformTaskStatusLockTTL = 3 * time.Minute + syncTaskRunCountsLockKey = "observability:tracehub:sync_task_run_counts" ) // startScheduledTask launches the scheduled task goroutine @@ -76,25 +77,24 @@ func (h *TraceHubServiceImpl) transformTaskStatus() { ctx := context.Background() ctx = h.fillCtx(ctx) + //if h.locker != nil { + // locked, lockErr := h.locker.Lock(ctx, transformTaskStatusLockKey, transformTaskStatusLockTTL) + // if lockErr != nil { + // logs.CtxError(ctx, "transformTaskStatus acquire lock failed", "err", lockErr) + // return + // } + // if !locked { + // logs.CtxInfo(ctx, "transformTaskStatus lock held by others, skip execution") + // return + // } + // defer func() { + // if _, err := h.locker.Unlock(transformTaskStatusLockKey); err != nil { + // logs.CtxWarn(ctx, "transformTaskStatus release lock failed", "err", err) + // } + // }() + //} logs.CtxInfo(ctx, "Scheduled task started...") - if h.locker != nil { - locked, lockErr := h.locker.Lock(ctx, transformTaskStatusLockKey, transformTaskStatusLockTTL) - if lockErr != nil { - logs.CtxError(ctx, "transformTaskStatus acquire lock failed", "err", lockErr) - return - } - if !locked { - logs.CtxInfo(ctx, "transformTaskStatus lock held by others, skip execution") - return - } - defer func() { - if _, err := h.locker.Unlock(transformTaskStatusLockKey); err != nil { - logs.CtxWarn(ctx, "transformTaskStatus release lock failed", "err", err) - } - }() - } - // Read all non-final (success/disabled) tasks taskPOs, err := h.listNonFinalTask(ctx) if err != nil { @@ -216,8 +216,23 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { ctx := context.Background() ctx = h.fillCtx(ctx) + //if h.locker != nil { + // locked, lockErr := h.locker.Lock(ctx, syncTaskRunCountsLockKey, transformTaskStatusLockTTL) + // if lockErr != nil { + // logs.CtxError(ctx, "syncTaskRunCounts acquire lock failed", "err", lockErr) + // return + // } + // if !locked { + // logs.CtxInfo(ctx, "syncTaskRunCounts lock held by others, skip execution") + // return + // } + // defer func() { + // if _, err := h.locker.Unlock(syncTaskRunCountsLockKey); err != nil { + // logs.CtxWarn(ctx, "syncTaskRunCounts release lock failed", "err", err) + // } + // }() + //} logs.CtxInfo(ctx, "Start syncing TaskRunCounts to database...") - // 1. Retrieve non-final task list taskPOs, err := h.listNonFinalTask(ctx) if err != nil { diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index d5fc886b8..317926448 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -37,6 +37,7 @@ func NewTraceHubImpl( benefitSvc benefit.IBenefitService, aid int32, backfillProducer mq.IBackfillProducer, + // locker lock.ILocker, ) (ITraceHubService, error) { // Create two independent timers with different intervals scheduledTaskTicker := time.NewTicker(5 * time.Minute) // Task status lifecycle management - 5-minute interval @@ -53,6 +54,7 @@ func NewTraceHubImpl( benefitSvc: benefitSvc, aid: aid, backfillProducer: backfillProducer, + //locker: locker, } // Start the scheduled tasks immediately @@ -73,6 +75,7 @@ type TraceHubServiceImpl struct { buildHelper service.TraceFilterProcessorBuilder benefitSvc benefit.IBenefitService backfillProducer mq.IBackfillProducer + //locker lock.ILocker flushCh chan *flushReq flushErrLock sync.Mutex @@ -96,4 +99,4 @@ const TagKeyResult = "tag_key" func (h *TraceHubServiceImpl) Close() { close(h.stopChan) -} \ No newline at end of file +} From a3b09d6f09d3311143c153e95ffe17ed781e9681 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 08:20:41 +0800 Subject: [PATCH 452/462] feat: [Coda] inject locker into trace hub service (LogID: 20251013073531192168031096625ABCA) Co-Authored-By: Coda --- backend/modules/observability/application/wire.go | 6 ++++++ backend/modules/observability/application/wire_gen.go | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/backend/modules/observability/application/wire.go b/backend/modules/observability/application/wire.go index cf8ee470f..96a2c4096 100644 --- a/backend/modules/observability/application/wire.go +++ b/backend/modules/observability/application/wire.go @@ -12,6 +12,7 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/external/benefit" "github.com/coze-dev/coze-loop/backend/infra/idgen" "github.com/coze-dev/coze-loop/backend/infra/limiter" + "github.com/coze-dev/coze-loop/backend/infra/lock" "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/infra/mq" "github.com/coze-dev/coze-loop/backend/infra/redis" @@ -123,10 +124,15 @@ var ( auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, + NewTaskLocker, traceDomainSet, ) ) +func NewTaskLocker(cmdable redis.Cmdable) lock.ILocker { + return lock.NewRedisLockerWithHolder(cmdable, "observability") +} + func NewTraceProcessorBuilder( traceConfig config.ITraceConfig, fileProvider rpc.IFileProvider, diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index b9f5bc6e6..e3331068c 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -12,6 +12,7 @@ import ( "github.com/coze-dev/coze-loop/backend/infra/external/benefit" "github.com/coze-dev/coze-loop/backend/infra/idgen" "github.com/coze-dev/coze-loop/backend/infra/limiter" + "github.com/coze-dev/coze-loop/backend/infra/lock" "github.com/coze-dev/coze-loop/backend/infra/metrics" "github.com/coze-dev/coze-loop/backend/infra/mq" "github.com/coze-dev/coze-loop/backend/infra/redis" @@ -268,9 +269,15 @@ var ( openApiSet = wire.NewSet( NewOpenAPIApplication, auth.NewAuthProvider, traceDomainSet, ) - taskSet = wire.NewSet(tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, traceDomainSet) + taskSet = wire.NewSet(tracehub.NewTraceHubImpl, NewTaskApplication, auth.NewAuthProvider, user.NewUserRPCProvider, evaluation.NewEvaluationRPCProvider, NewTaskLocker, + traceDomainSet, + ) ) +func NewTaskLocker(cmdable redis.Cmdable) lock.ILocker { + return lock.NewRedisLockerWithHolder(cmdable, "observability") +} + func NewTraceProcessorBuilder( traceConfig config2.ITraceConfig, fileProvider rpc.IFileProvider, From 70742c275879fbf5030b0018c6b13d8610e50071 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 08:30:08 +0800 Subject: [PATCH 453/462] fix dao --- backend/modules/observability/infra/repo/task.go | 9 --------- 1 file changed, 9 deletions(-) diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index f9b0e6527..87a4bea1f 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -132,15 +132,6 @@ func (v *TaskRepoImpl) CreateTask(ctx context.Context, do *entity.ObservabilityT return 0, err } - // 数据库操作成功后,更新缓存 - do.ID = createdID - go func() { - // 缓存新创建的任务 - if err = v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { - logs.Error("failed to set task cache after create", "id", createdID, "err", err) - } - }() - return createdID, nil } func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityTask) error { From 40d79e17fe4c6534fc51dbbb5d11f0c14c675236 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 08:46:17 +0800 Subject: [PATCH 454/462] fix set --- backend/modules/observability/infra/repo/task.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/backend/modules/observability/infra/repo/task.go b/backend/modules/observability/infra/repo/task.go index 87a4bea1f..407c12ddc 100644 --- a/backend/modules/observability/infra/repo/task.go +++ b/backend/modules/observability/infra/repo/task.go @@ -86,8 +86,10 @@ func (v *TaskRepoImpl) GetTask(ctx context.Context, id int64, workspaceID *int64 // 异步缓存到 Redis go func() { - if err := v.TaskRedisDao.SetTask(context.Background(), taskDO, TaskDetailTTL); err != nil { - logs.Error("failed to set task cache", "id", id, "err", err) + if len(taskDO.TaskRuns) > 0 { + if err := v.TaskRedisDao.SetTask(context.Background(), taskDO, TaskDetailTTL); err != nil { + logs.Error("failed to set task cache", "id", id, "err", err) + } } }() @@ -153,9 +155,11 @@ func (v *TaskRepoImpl) UpdateTask(ctx context.Context, do *entity.ObservabilityT // 数据库操作成功后,更新缓存 go func() { // 更新单个任务缓存 - if err = v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { - logs.Error("failed to update task cache", "id", do.ID, "err", err) - return + if len(do.TaskRuns) > 0 { + if err = v.TaskRedisDao.SetTask(context.Background(), do, TaskDetailTTL); err != nil { + logs.Error("failed to update task cache", "id", do.ID, "err", err) + return + } } }() From fcc67f0cf51092074c386b8d1f343df913ffa03a Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 09:26:56 +0800 Subject: [PATCH 455/462] fix --- .../taskexe/processor/auto_evaluate.go | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index e6ce086f1..b7d8622e9 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -386,21 +386,21 @@ func (p *AutoEvaluteProcessor) OnCreateTaskRunChange(ctx context.Context, param UpdatedAt: time.Now(), RunConfig: ptr.Of(ToJSONString(ctx, taskRunConfig)), } - id, err := p.taskRepo.CreateTaskRun(ctx, taskRun) + _, err = p.taskRepo.CreateTaskRun(ctx, taskRun) if err != nil { logs.CtxError(ctx, "[auto_task] OnCreateTaskRunProcessor, CreateTaskRun err, taskRun:%+v, err:%v", taskRun, err) return err } - taskRun.ID = id - taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) - if err != nil { - return err - } - taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) - err = p.taskRepo.UpdateTask(ctx, taskConfig) - if err != nil { - return err - } + //taskRun.ID = id + //taskConfig, err := p.taskRepo.GetTask(ctx, currentTask.GetID(), nil, nil) + //if err != nil { + // return err + //} + //taskConfig.TaskRuns = append(taskConfig.TaskRuns, taskRun) + //err = p.taskRepo.UpdateTask(ctx, taskConfig) + //if err != nil { + // return err + //} return nil } From df101f55835934d2cd3524a8336b8414cd7b35de Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 09:43:38 +0800 Subject: [PATCH 456/462] fix debug log --- .../modules/observability/infra/rpc/evaluation/evaluation.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/infra/rpc/evaluation/evaluation.go b/backend/modules/observability/infra/rpc/evaluation/evaluation.go index 583070d67..8ca878db6 100644 --- a/backend/modules/observability/infra/rpc/evaluation/evaluation.go +++ b/backend/modules/observability/infra/rpc/evaluation/evaluation.go @@ -62,7 +62,7 @@ func (e *EvaluationProvider) InvokeExperiment(ctx context.Context, param *rpc.In if param.EvaluationSetID == 0 { return 0, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("evaluation set ID is nil")) } - logs.CtxDebug(ctx, "InvokeExperiment, param: %+v", param) + logs.CtxInfo(ctx, "InvokeExperiment, param: %+v", param) resp, err := e.client.InvokeExperiment(ctx, &expt.InvokeExperimentRequest{ WorkspaceID: param.WorkspaceID, EvaluationSetID: param.EvaluationSetID, From 1fbb45e6a2f23b87a10e46b2a4ed4ff8d422f848 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 10:07:31 +0800 Subject: [PATCH 457/462] fix --- .../domain/task/service/taskexe/processor/auto_evaluate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go index b7d8622e9..9905d4627 100644 --- a/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go +++ b/backend/modules/observability/domain/task/service/taskexe/processor/auto_evaluate.go @@ -113,7 +113,7 @@ func (p *AutoEvaluteProcessor) Invoke(ctx context.Context, trigger *taskexe.Trig p.taskRepo.IncrTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID, taskTTL) taskCount, _ := p.taskRepo.GetTaskCount(ctx, *trigger.Task.ID) taskRunCount, _ := p.taskRepo.GetTaskRunCount(ctx, *trigger.Task.ID, taskRun.ID) - if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount+1 > trigger.Task.GetRule().GetSampler().GetCycleCount()) || + if (trigger.Task.GetRule().GetSampler().GetCycleCount() != 0 && taskRunCount > trigger.Task.GetRule().GetSampler().GetCycleCount()) || (taskCount+1 > trigger.Task.GetRule().GetSampler().GetSampleSize()) { logs.CtxInfo(ctx, "[task-debug] AutoEvaluteProcessor Invoke, subCount:%v,taskCount:%v", taskRunCount, taskCount) p.taskRepo.DecrTaskCount(ctx, *trigger.Task.ID, taskTTL) From 65a9857b4985ffece8e0bd972d7c07e76cbb4767 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 10:21:33 +0800 Subject: [PATCH 458/462] add wire gen --- .../observability/application/wire_gen.go | 3 +- .../task/service/taskexe/tracehub/backfill.go | 35 +++++----- .../taskexe/tracehub/scheduled_task.go | 64 +++++++++---------- .../service/taskexe/tracehub/trace_hub.go | 7 +- 4 files changed, 56 insertions(+), 53 deletions(-) diff --git a/backend/modules/observability/application/wire_gen.go b/backend/modules/observability/application/wire_gen.go index e3331068c..b0ecca92e 100644 --- a/backend/modules/observability/application/wire_gen.go +++ b/backend/modules/observability/application/wire_gen.go @@ -238,7 +238,8 @@ func InitTaskApplication(db2 db.Provider, idgen2 idgen.IIDGenerator, configFacto return nil, err } iTenantProvider := tenant.NewTenantProvider(iTraceConfig) - iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor, benefit2, aid, iBackfillProducer) + iLocker := NewTaskLocker(redis2) + iTraceHubService, err := tracehub.NewTraceHubImpl(iTaskRepo, iTraceRepo, iTenantProvider, traceFilterProcessorBuilder, processorTaskProcessor, benefit2, aid, iBackfillProducer, iLocker) if err != nil { return nil, err } diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 5b8cbe40a..2b21ba64b 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -6,6 +6,7 @@ package tracehub import ( "context" "errors" + "fmt" "sync" "time" @@ -36,23 +37,23 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi // 1. Set the current task context ctx = h.fillCtx(ctx) - //if h.locker != nil && event != nil { - // lockKey := fmt.Sprintf(backfillLockKeyTemplate, event.TaskID) - // locked, lockErr := h.locker.Lock(ctx, lockKey, transformTaskStatusLockTTL) - // if lockErr != nil { - // logs.CtxError(ctx, "backfill acquire lock failed", "task_id", event.TaskID, "err", lockErr) - // return lockErr - // } - // if !locked { - // logs.CtxInfo(ctx, "backfill lock held by others, skip execution", "task_id", event.TaskID) - // return nil - // } - // defer func() { - // if _, err := h.locker.Unlock(lockKey); err != nil { - // logs.CtxWarn(ctx, "backfill release lock failed", "task_id", event.TaskID, "err", err) - // } - // }() - //} + if h.locker != nil && event != nil { + lockKey := fmt.Sprintf(backfillLockKeyTemplate, event.TaskID) + locked, lockErr := h.locker.Lock(ctx, lockKey, transformTaskStatusLockTTL) + if lockErr != nil { + logs.CtxError(ctx, "backfill acquire lock failed", "task_id", event.TaskID, "err", lockErr) + return lockErr + } + if !locked { + logs.CtxInfo(ctx, "backfill lock held by others, skip execution", "task_id", event.TaskID) + return nil + } + defer func() { + if _, err := h.locker.Unlock(lockKey); err != nil { + logs.CtxWarn(ctx, "backfill release lock failed", "task_id", event.TaskID, "err", err) + } + }() + } sub, err := h.setBackfillTask(ctx, event) if err != nil { diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 181b028d0..275f663e4 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -77,22 +77,22 @@ func (h *TraceHubServiceImpl) transformTaskStatus() { ctx := context.Background() ctx = h.fillCtx(ctx) - //if h.locker != nil { - // locked, lockErr := h.locker.Lock(ctx, transformTaskStatusLockKey, transformTaskStatusLockTTL) - // if lockErr != nil { - // logs.CtxError(ctx, "transformTaskStatus acquire lock failed", "err", lockErr) - // return - // } - // if !locked { - // logs.CtxInfo(ctx, "transformTaskStatus lock held by others, skip execution") - // return - // } - // defer func() { - // if _, err := h.locker.Unlock(transformTaskStatusLockKey); err != nil { - // logs.CtxWarn(ctx, "transformTaskStatus release lock failed", "err", err) - // } - // }() - //} + if h.locker != nil { + locked, lockErr := h.locker.Lock(ctx, transformTaskStatusLockKey, transformTaskStatusLockTTL) + if lockErr != nil { + logs.CtxError(ctx, "transformTaskStatus acquire lock failed", "err", lockErr) + return + } + if !locked { + logs.CtxInfo(ctx, "transformTaskStatus lock held by others, skip execution") + return + } + defer func() { + if _, err := h.locker.Unlock(transformTaskStatusLockKey); err != nil { + logs.CtxWarn(ctx, "transformTaskStatus release lock failed", "err", err) + } + }() + } logs.CtxInfo(ctx, "Scheduled task started...") // Read all non-final (success/disabled) tasks @@ -216,22 +216,22 @@ func (h *TraceHubServiceImpl) syncTaskRunCounts() { ctx := context.Background() ctx = h.fillCtx(ctx) - //if h.locker != nil { - // locked, lockErr := h.locker.Lock(ctx, syncTaskRunCountsLockKey, transformTaskStatusLockTTL) - // if lockErr != nil { - // logs.CtxError(ctx, "syncTaskRunCounts acquire lock failed", "err", lockErr) - // return - // } - // if !locked { - // logs.CtxInfo(ctx, "syncTaskRunCounts lock held by others, skip execution") - // return - // } - // defer func() { - // if _, err := h.locker.Unlock(syncTaskRunCountsLockKey); err != nil { - // logs.CtxWarn(ctx, "syncTaskRunCounts release lock failed", "err", err) - // } - // }() - //} + if h.locker != nil { + locked, lockErr := h.locker.Lock(ctx, syncTaskRunCountsLockKey, transformTaskStatusLockTTL) + if lockErr != nil { + logs.CtxError(ctx, "syncTaskRunCounts acquire lock failed", "err", lockErr) + return + } + if !locked { + logs.CtxInfo(ctx, "syncTaskRunCounts lock held by others, skip execution") + return + } + defer func() { + if _, err := h.locker.Unlock(syncTaskRunCountsLockKey); err != nil { + logs.CtxWarn(ctx, "syncTaskRunCounts release lock failed", "err", err) + } + }() + } logs.CtxInfo(ctx, "Start syncing TaskRunCounts to database...") // 1. Retrieve non-final task list taskPOs, err := h.listNonFinalTask(ctx) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go index 317926448..963bb9229 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/trace_hub.go @@ -9,6 +9,7 @@ import ( "time" "github.com/coze-dev/coze-loop/backend/infra/external/benefit" + "github.com/coze-dev/coze-loop/backend/infra/lock" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/mq" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/tenant" "github.com/coze-dev/coze-loop/backend/modules/observability/domain/task/entity" @@ -37,7 +38,7 @@ func NewTraceHubImpl( benefitSvc benefit.IBenefitService, aid int32, backfillProducer mq.IBackfillProducer, - // locker lock.ILocker, + locker lock.ILocker, ) (ITraceHubService, error) { // Create two independent timers with different intervals scheduledTaskTicker := time.NewTicker(5 * time.Minute) // Task status lifecycle management - 5-minute interval @@ -54,7 +55,7 @@ func NewTraceHubImpl( benefitSvc: benefitSvc, aid: aid, backfillProducer: backfillProducer, - //locker: locker, + locker: locker, } // Start the scheduled tasks immediately @@ -75,7 +76,7 @@ type TraceHubServiceImpl struct { buildHelper service.TraceFilterProcessorBuilder benefitSvc benefit.IBenefitService backfillProducer mq.IBackfillProducer - //locker lock.ILocker + locker lock.ILocker flushCh chan *flushReq flushErrLock sync.Mutex From ced51bf050f1c2676ebfd00b173ce801d80374c0 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 11:25:36 +0800 Subject: [PATCH 459/462] add debug log --- .../domain/task/service/taskexe/tracehub/backfill.go | 1 + .../domain/task/service/taskexe/tracehub/scheduled_task.go | 3 +++ 2 files changed, 4 insertions(+) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index 2b21ba64b..d91220213 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -386,6 +386,7 @@ func (h *TraceHubServiceImpl) doFlush(ctx context.Context, fr *flushReq, sub *sp return len(fr.spans), len(sampledSpans), err } if fr.noMore { + logs.CtxInfo(ctx, "no more spans to process, task_id=%d", sub.t.GetID()) if err = sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: tconv.TaskRunDO2PO(ctx, sub.tr, nil), diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 275f663e4..3dbc539b4 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -116,6 +116,7 @@ func (h *TraceHubServiceImpl) transformTaskStatus() { logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) if taskInfo.GetRule().GetBackfillEffectiveTime().GetEndAt() != 0 && taskInfo.GetRule().GetEffectiveTime().GetEndAt() != 0 { if time.Now().After(endTime) && backfillTaskRun.RunStatus == task.RunStatusDone { + logs.CtxInfo(ctx, "[auto_task]taskID:%d, backfillTaskRunID:%d, backfillTaskRunStatus:%s", taskInfo.GetID(), backfillTaskRun.ID, backfillTaskRun.RunStatus) err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, TaskRun: backfillTaskRun, @@ -128,6 +129,7 @@ func (h *TraceHubServiceImpl) transformTaskStatus() { } } else if taskInfo.GetRule().GetBackfillEffectiveTime().GetEndAt() != 0 { if backfillTaskRun.RunStatus == task.RunStatusDone { + logs.CtxInfo(ctx, "[auto_task]taskID:%d, backfillTaskRunID:%d, backfillTaskRunStatus:%s", taskInfo.GetID(), backfillTaskRun.ID, backfillTaskRun.RunStatus) err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, TaskRun: backfillTaskRun, @@ -140,6 +142,7 @@ func (h *TraceHubServiceImpl) transformTaskStatus() { } } else if taskInfo.GetRule().GetEffectiveTime().GetEndAt() != 0 { if time.Now().After(endTime) { + logs.CtxInfo(ctx, "[auto_task]taskID:%d, taskRunID:%d, taskRunStatus:%s", taskInfo.GetID(), taskRun.ID, taskRun.RunStatus) err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, TaskRun: taskRun, From 3da7be45958b2c99349fcfb7c1b9d84f78b06e7d Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 11:38:58 +0800 Subject: [PATCH 460/462] fix: [Coda] add lock renewal for backfill (LogID: 20251013112813010091110127433B953) Co-Authored-By: Coda --- .../task/service/taskexe/tracehub/backfill.go | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go index d91220213..34a7cc984 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/backfill.go @@ -30,6 +30,7 @@ import ( const ( pageSize = 500 backfillLockKeyTemplate = "observability:tracehub:backfill:%d" + backfillLockMaxHold = 24 * time.Hour ) // 定时任务+锁 @@ -37,9 +38,13 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi // 1. Set the current task context ctx = h.fillCtx(ctx) + var ( + lockKey string + lockCancel func() + ) if h.locker != nil && event != nil { - lockKey := fmt.Sprintf(backfillLockKeyTemplate, event.TaskID) - locked, lockErr := h.locker.Lock(ctx, lockKey, transformTaskStatusLockTTL) + lockKey = fmt.Sprintf(backfillLockKeyTemplate, event.TaskID) + locked, lockCtx, cancel, lockErr := h.locker.LockWithRenew(ctx, lockKey, transformTaskStatusLockTTL, backfillLockMaxHold) if lockErr != nil { logs.CtxError(ctx, "backfill acquire lock failed", "task_id", event.TaskID, "err", lockErr) return lockErr @@ -48,11 +53,17 @@ func (h *TraceHubServiceImpl) BackFill(ctx context.Context, event *entity.BackFi logs.CtxInfo(ctx, "backfill lock held by others, skip execution", "task_id", event.TaskID) return nil } - defer func() { - if _, err := h.locker.Unlock(lockKey); err != nil { - logs.CtxWarn(ctx, "backfill release lock failed", "task_id", event.TaskID, "err", err) + lockCancel = cancel + ctx = lockCtx + defer func(cancel func()) { + if cancel != nil { + cancel() + } else if lockKey != "" { + if _, err := h.locker.Unlock(lockKey); err != nil { + logs.CtxWarn(ctx, "backfill release lock failed", "task_id", event.TaskID, "err", err) + } } - }() + }(lockCancel) } sub, err := h.setBackfillTask(ctx, event) From 5d0f073251d9443ab797ad6a8065b56e18d81b39 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 11:43:04 +0800 Subject: [PATCH 461/462] add debug log --- .../task/service/taskexe/tracehub/scheduled_task.go | 8 ++++---- .../domain/task/service/taskexe/tracehub/span_trigger.go | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go index 3dbc539b4..9dc566f58 100755 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/scheduled_task.go @@ -116,7 +116,7 @@ func (h *TraceHubServiceImpl) transformTaskStatus() { logs.CtxInfo(ctx, "[auto_task]taskID:%d, endTime:%v, startTime:%v", taskInfo.GetID(), endTime, startTime) if taskInfo.GetRule().GetBackfillEffectiveTime().GetEndAt() != 0 && taskInfo.GetRule().GetEffectiveTime().GetEndAt() != 0 { if time.Now().After(endTime) && backfillTaskRun.RunStatus == task.RunStatusDone { - logs.CtxInfo(ctx, "[auto_task]taskID:%d, backfillTaskRunID:%d, backfillTaskRunStatus:%s", taskInfo.GetID(), backfillTaskRun.ID, backfillTaskRun.RunStatus) + logs.CtxInfo(ctx, "[OnFinishTaskChange]taskID:%d, time.Now().After(endTime) && backfillTaskRun.RunStatus == task.RunStatusDone", taskInfo.GetID()) err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, TaskRun: backfillTaskRun, @@ -129,7 +129,7 @@ func (h *TraceHubServiceImpl) transformTaskStatus() { } } else if taskInfo.GetRule().GetBackfillEffectiveTime().GetEndAt() != 0 { if backfillTaskRun.RunStatus == task.RunStatusDone { - logs.CtxInfo(ctx, "[auto_task]taskID:%d, backfillTaskRunID:%d, backfillTaskRunStatus:%s", taskInfo.GetID(), backfillTaskRun.ID, backfillTaskRun.RunStatus) + logs.CtxInfo(ctx, "[OnFinishTaskChange]taskID:%d, backfillTaskRun.RunStatus == task.RunStatusDone", taskInfo.GetID()) err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, TaskRun: backfillTaskRun, @@ -142,7 +142,7 @@ func (h *TraceHubServiceImpl) transformTaskStatus() { } } else if taskInfo.GetRule().GetEffectiveTime().GetEndAt() != 0 { if time.Now().After(endTime) { - logs.CtxInfo(ctx, "[auto_task]taskID:%d, taskRunID:%d, taskRunStatus:%s", taskInfo.GetID(), taskRun.ID, taskRun.RunStatus) + logs.CtxInfo(ctx, "[OnFinishTaskChange]taskID:%d, time.Now().After(endTime)", taskInfo.GetID()) err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, TaskRun: taskRun, @@ -186,7 +186,7 @@ func (h *TraceHubServiceImpl) transformTaskStatus() { logs.CtxInfo(ctx, "taskID:%d, taskRun.RunEndAt:%v", taskInfo.GetID(), taskRun.RunEndAt) // Handling repeated tasks: single task time horizon reached if time.Now().After(taskRun.RunEndAt) { - logs.CtxInfo(ctx, "time.Now().After(cycleEndTime)") + logs.CtxInfo(ctx, "[OnFinishTaskChange]taskID:%d, time.Now().After(cycleEndTime)", taskInfo.GetID()) err = proc.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: taskInfo, TaskRun: taskRun, diff --git a/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go b/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go index 93bb2ee3a..3eacd569d 100644 --- a/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go +++ b/backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger.go @@ -184,7 +184,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S endTime := time.UnixMilli(sub.t.GetRule().GetEffectiveTime().GetEndAt()) // Reached task time limit if time.Now().After(endTime) { - logs.CtxWarn(ctx, "time.Now().After(endTime) Finish processor, task_id=%d, endTime=%v, now=%v", sub.taskID, endTime, time.Now()) + logs.CtxWarn(ctx, "[OnFinishTaskChange]time.Now().After(endTime) Finish processor, task_id=%d, endTime=%v, now=%v", sub.taskID, endTime, time.Now()) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: taskRunConfig, @@ -197,7 +197,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } // Reached task limit if taskCount+1 > sampler.GetSampleSize() { - logs.CtxWarn(ctx, "taskCount+1 > sampler.GetSampleSize() Finish processor, task_id=%d", sub.taskID) + logs.CtxWarn(ctx, "[OnFinishTaskChange]taskCount+1 > sampler.GetSampleSize() Finish processor, task_id=%d", sub.taskID) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: taskRunConfig, @@ -211,7 +211,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S cycleEndTime := time.Unix(0, taskRunConfig.RunEndAt.UnixMilli()*1e6) // Reached single cycle task time limit if time.Now().After(cycleEndTime) { - logs.CtxInfo(ctx, "time.Now().After(cycleEndTime) Finish processor, task_id=%d", sub.taskID) + logs.CtxInfo(ctx, "[OnFinishTaskChange]time.Now().After(cycleEndTime) Finish processor, task_id=%d", sub.taskID) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: taskRunConfig, @@ -230,7 +230,7 @@ func (h *TraceHubServiceImpl) preDispatch(ctx context.Context, span *loop_span.S } // Reached single cycle task limit if taskRunCount+1 > sampler.GetCycleCount() { - logs.CtxWarn(ctx, "taskRunCount+1 > sampler.GetCycleCount(), task_id=%d", sub.taskID) + logs.CtxWarn(ctx, "[OnFinishTaskChange]taskRunCount+1 > sampler.GetCycleCount(), task_id=%d", sub.taskID) if err := sub.processor.OnFinishTaskChange(ctx, taskexe.OnFinishTaskChangeReq{ Task: sub.t, TaskRun: taskRunConfig, From 29825b7cc906793199bece0bb5b1637edc5402f1 Mon Sep 17 00:00:00 2001 From: "zhaoxun.3233" Date: Mon, 13 Oct 2025 12:08:21 +0800 Subject: [PATCH 462/462] debug log --- .../modules/observability/infra/rpc/evaluation/evaluation.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/modules/observability/infra/rpc/evaluation/evaluation.go b/backend/modules/observability/infra/rpc/evaluation/evaluation.go index 8ca878db6..9e09b43c7 100644 --- a/backend/modules/observability/infra/rpc/evaluation/evaluation.go +++ b/backend/modules/observability/infra/rpc/evaluation/evaluation.go @@ -27,7 +27,7 @@ func (e *EvaluationProvider) SubmitExperiment(ctx context.Context, param *rpc.Su if param.WorkspaceID == 0 { return 0, 0, errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("workspace ID is nil")) } - logs.CtxDebug(ctx, "SubmitExperiment, param: %+v", param) + logs.CtxInfo(ctx, "SubmitExperiment, param: %+v", param) resp, err := e.client.SubmitExperiment(ctx, &expt.SubmitExperimentRequest{ WorkspaceID: param.WorkspaceID, EvalSetVersionID: param.EvalSetVersionID, @@ -91,7 +91,7 @@ func (e *EvaluationProvider) FinishExperiment(ctx context.Context, param *rpc.Fi if param.ExperimentRunID == 0 { return errorx.NewByCode(obErrorx.CommonInvalidParamCode, errorx.WithExtraMsg("experiment run ID is nil")) } - logs.CtxDebug(ctx, "FinishExperiment, param: %+v", param) + logs.CtxInfo(ctx, "FinishExperiment, param: %+v", param) _, err = e.client.FinishExperiment(ctx, &expt.FinishExperimentRequest{ WorkspaceID: ptr.Of(param.WorkspaceID), ExperimentID: ptr.Of(param.ExperimentID),