package message

import (
	"github.com/tidbcloud/observability/pkg/common/constants"
	"github.com/tidbcloud/observability/pkg/common/structs"
)

type CreateEvaluationReq struct {
	Name string `json:"name" form:"name"`

	Model        string `json:"model" form:"model" validate:"required,max=64"`
	ModelVersion string `json:"modelVersion" form:"modelVersion" validate:"required,max=64"`
	Dataset      string `json:"dataset" form:"dataset" validate:"required,max=64"`
	Template     string `json:"template" form:"template" validate:"required"`

	User string `json:"user" form:"user" validate:"required"`
	DatasetRange
}

type DatasetRange struct {
	DatasetCategory []constants.DatasetCategory `json:"datasetCategory" form:"datasetCategory"`
	StartDate       string                      `json:"startDate" form:"startDate"`
	EndDate         string                      `json:"endDate" form:"endDate"`
	AddedQuestion   string                      `json:"addedQuestion" form:"addedQuestion"`
}

type CreateEvaluationResp struct {
	structs.Evaluation
}

type GetEvaluationReq struct {
	ID   string `json:"id" form:"id"`
	Name string `json:"name" form:"name"`
	User string `json:"user" form:"user"`
}

type GetEvaluationResp struct {
	structs.Evaluation
}

type QueryEvaluationReq struct {
	ID       string `json:"id" form:"id"`
	Name     string `json:"name" form:"name"`
	Phase    string `json:"phase" form:"phase"`
	Model    string `json:"model" form:"model"`
	DataName string `json:"dataName" form:"dataName"`

	TimeRangeRequest
	PageRequest
}

type QueryEvaluationResp struct {
	Evaluations []structs.Evaluation `json:"evaluations" form:"evaluations"`
	PageInfo    Page                 `json:"name" form:"pageInfo"`
}

type QueryDatasetReq struct {
	Dataset      string   `json:"dataset" validate:"required"`
	Date         string   `json:"date" validate:"required"`
	ResultType   []string `json:"resultType"`
	Status       []string `json:"status"`
	FeedbackType []string `json:"feedbackType"`
}

type QueryDatasetResp struct {
	Records []structs.DatasetRecord
}
